Vanessa 2023-01-14 14:45:03 +08:00
parent ef9c5450e8
commit fec504ddfb
10 changed files with 123 additions and 81 deletions

View file

@ -1,8 +1,8 @@
{ {
"panel": "Panel",
"copyPath": "Copy Path", "copyPath": "Copy Path",
"workspaceList": "Workspaces", "workspaceList": "Workspaces",
"openWorkspace": "Open Workspace", "openWorkspace": "Open Workspace",
"openedWorkspace": "Opened Workspaces",
"removeWorkspaceTip": "Remove from Workspaces", "removeWorkspaceTip": "Remove from Workspaces",
"new": "New", "new": "New",
"share2LiandiConfirmTip": "Are you sure to share this document to Liandi?", "share2LiandiConfirmTip": "Are you sure to share this document to Liandi?",

View file

@ -1,8 +1,8 @@
{ {
"panel": "Panel",
"copyPath": "Copiar ruta", "copyPath": "Copiar ruta",
"workspaceList": "Áreas de trabajo", "workspaceList": "Áreas de trabajo",
"openWorkspace": "Abrir espacio de trabajo", "openWorkspace": "Abrir espacio de trabajo",
"openedWorkspace": "Espacio de trabajo abierto",
"removeWorkspaceTip": "Quitar de los espacios de trabajo", "removeWorkspaceTip": "Quitar de los espacios de trabajo",
"new": "Nuevo", "new": "Nuevo",
"share2LiandiConfirmTip": "¿Estás seguro de compartir este documento con Liandi?", "share2LiandiConfirmTip": "¿Estás seguro de compartir este documento con Liandi?",

View file

@ -1,8 +1,8 @@
{ {
"panel": "Panneau",
"copyPath": "Copier le chemin", "copyPath": "Copier le chemin",
"workspaceList": "Espaces de travail", "workspaceList": "Espaces de travail",
"openWorkspace": "Ouvrir l'espace de travail", "openWorkspace": "Ouvrir l'espace de travail",
"openedWorkspace": "Espace de travail ouvert",
"removeWorkspaceTip": "Supprimer des espaces de travail", "removeWorkspaceTip": "Supprimer des espaces de travail",
"new": "Nouveau", "new": "Nouveau",
"share2LiandiConfirmTip": "Êtes-vous sûr de partager ce document avec Liandi ?", "share2LiandiConfirmTip": "Êtes-vous sûr de partager ce document avec Liandi ?",

View file

@ -1,8 +1,8 @@
{ {
"panel": "面板",
"copyPath": "複製路徑", "copyPath": "複製路徑",
"workspaceList": "工作空間列表", "workspaceList": "工作空間列表",
"openWorkspace": "打開工作空間", "openWorkspace": "打開工作空間",
"openedWorkspace": "已打開的工作空間",
"removeWorkspaceTip": "從工作空間列表中移除", "removeWorkspaceTip": "從工作空間列表中移除",
"new": "新建", "new": "新建",
"share2LiandiConfirmTip": "確定將該文檔分享到鏈滴嗎?", "share2LiandiConfirmTip": "確定將該文檔分享到鏈滴嗎?",

View file

@ -1,8 +1,8 @@
{ {
"panel": "面板",
"copyPath": "复制路径", "copyPath": "复制路径",
"workspaceList": "工作空间列表", "workspaceList": "工作空间列表",
"openWorkspace": "打开工作空间", "openWorkspace": "打开工作空间",
"openedWorkspace": "已打开的工作空间",
"removeWorkspaceTip": "从工作空间列表中移除", "removeWorkspaceTip": "从工作空间列表中移除",
"new": "新建", "new": "新建",
"share2LiandiConfirmTip": "确定将该文档分享到链滴吗?", "share2LiandiConfirmTip": "确定将该文档分享到链滴吗?",

View file

@ -35,6 +35,10 @@
position: relative; position: relative;
box-sizing: border-box; box-sizing: border-box;
&:hover {
text-decoration: none;
}
&[disabled="disabled"] { &[disabled="disabled"] {
cursor: not-allowed; cursor: not-allowed;
opacity: 0.38; opacity: 0.38;

View file

@ -301,7 +301,7 @@ progressLoading: 400
} }
#barDock, #barDock,
#barHelp { #statusHepl {
.b3-menu__item:hover { .b3-menu__item:hover {
background-color: var(--b3-list-hover); background-color: var(--b3-list-hover);
} }

View file

@ -30,11 +30,13 @@ export const initStatus = () => {
<div class="status__msg"></div> <div class="status__msg"></div>
<div class="fn__flex-1"></div> <div class="fn__flex-1"></div>
<div class="status__counter"></div> <div class="status__counter"></div>
<div id="barHelp" class="toolbar__item b3-tooltips b3-tooltips__w" aria-label="${window.siyuan.languages.openBy} ${window.siyuan.languages.help}"> <div id="statusHelp" class="toolbar__item b3-tooltips b3-tooltips__w" aria-label="${window.siyuan.languages.help}">
<svg><use xlink:href="#iconHelp"></use></svg> <svg><use xlink:href="#iconHelp"></use></svg>
<div class="b3-menu fn__none" style="bottom: 32px;right: 5px"> <div class="b3-menu fn__none" style="bottom: 32px;right: 5px">
<button id="barHelp" class="b3-menu__item"><svg class="b3-menu__icon""><use xlink:href="#iconHelp"></use></svg><span class="b3-menu__label">${window.siyuan.languages.help}</span></button>
<button id="barFeedback" class="b3-menu__item"><svg class="b3-menu__icon""><use xlink:href="#iconHeart"></use></svg><span class="b3-menu__label">${window.siyuan.languages.feedback}</span></button> <button id="barFeedback" class="b3-menu__item"><svg class="b3-menu__icon""><use xlink:href="#iconHeart"></use></svg><span class="b3-menu__label">${window.siyuan.languages.feedback}</span></button>
<button id="barLock" class="b3-menu__item"><svg class="b3-menu__icon""><use xlink:href="#iconLock"></use></svg><span class="b3-menu__label">${window.siyuan.languages.lockScreen}</span><span class="b3-menu__accelerator">${updateHotkeyTip(window.siyuan.config.keymap.general.lockScreen.custom)}</span></button> <a href="https://b3log.org/siyuan" class="b3-menu__item"><svg class="b3-menu__icon""><use xlink:href="#iconSiYuan"></use></svg><span class="b3-menu__label">${window.siyuan.languages["_trayMenu"].officialWebsite}</span></a>
<a href="https://github.com/siyuan-note/siyuan" class="b3-menu__item"><svg class="b3-menu__icon""><use xlink:href="#iconGithub"></use></svg><span class="b3-menu__label">${window.siyuan.languages["_trayMenu"].openSource}</span></a>
<button id="barDebug" class="b3-menu__item${isBrowser() ? " fn__none" : ""}"><svg class="b3-menu__icon""><use xlink:href="#iconBug"></use></svg><span class="b3-menu__label">${window.siyuan.languages.debug}</span></button> <button id="barDebug" class="b3-menu__item${isBrowser() ? " fn__none" : ""}"><svg class="b3-menu__icon""><use xlink:href="#iconBug"></use></svg><span class="b3-menu__label">${window.siyuan.languages.debug}</span></button>
</div> </div>
</div>`; </div>`;
@ -45,7 +47,7 @@ export const initStatus = () => {
dockElement.addEventListener("mouseleave", () => { dockElement.addEventListener("mouseleave", () => {
dockElement.querySelector(".b3-menu").classList.add("fn__none"); dockElement.querySelector(".b3-menu").classList.add("fn__none");
}); });
const helpElement = document.getElementById("barHelp"); const helpElement = document.getElementById("statusHelp");
helpElement.addEventListener("mousemove", () => { helpElement.addEventListener("mousemove", () => {
helpElement.querySelector(".b3-menu").classList.remove("fn__none"); helpElement.querySelector(".b3-menu").classList.remove("fn__none");
}); });
@ -83,10 +85,6 @@ export const initStatus = () => {
target.querySelector(".b3-menu").classList.add("fn__none"); target.querySelector(".b3-menu").classList.add("fn__none");
event.stopPropagation(); event.stopPropagation();
break; break;
} else if (target.id === "barLock") {
lockScreen();
event.stopPropagation();
break;
} else if (target.id === "barHelp") { } else if (target.id === "barHelp") {
mountHelp(); mountHelp();
event.stopPropagation(); event.stopPropagation();
@ -105,7 +103,7 @@ export const initStatus = () => {
} }
event.stopPropagation(); event.stopPropagation();
break; break;
} else if (target.classList.contains("b3-menu__item")) { } else if (target.classList.contains("b3-menu__item") && target.tagName !== "A") {
const type = target.getAttribute("data-type") as TDockType; const type = target.getAttribute("data-type") as TDockType;
getDockByType(type).toggleModel(type); getDockByType(type).toggleModel(type);
if (type === "file" && getSelection().rangeCount > 0) { if (type === "file" && getSelection().rangeCount > 0) {

View file

@ -1,16 +1,19 @@
import {MenuItem} from "./Menu"; import {MenuItem} from "./Menu";
/// #if !BROWSER /// #if !BROWSER
import {dialog} from "@electron/remote"; import {dialog, getCurrentWindow} from "@electron/remote";
import {ipcRenderer, shell} from "electron"; import {ipcRenderer} from "electron";
/// #endif /// #endif
import {openHistory} from "../history/history"; import {openHistory} from "../history/history";
import {getOpenNotebookCount, originalPath} from "../util/pathName"; import {getOpenNotebookCount, originalPath} from "../util/pathName";
import {mountHelp, newDailyNote} from "../util/mount"; import {mountHelp, newDailyNote} from "../util/mount";
import {fetchPost} from "../util/fetch"; import {fetchPost} from "../util/fetch";
import {Constants} from "../constants"; import {Constants} from "../constants";
import {setStorageVal, writeText} from "../protyle/util/compatibility"; import {setStorageVal} from "../protyle/util/compatibility";
import {openCard} from "../card/openCard"; import {openCard} from "../card/openCard";
import {showMessage} from "../dialog/message"; import {openSetting} from "../config";
import {getAllDocks} from "../layout/getAll";
import {getDockByType} from "../layout/util";
import {lockScreen} from "../dialog/processSystem";
export const workspaceMenu = (rect: DOMRect) => { export const workspaceMenu = (rect: DOMRect) => {
if (!window.siyuan.menus.menu.element.classList.contains("fn__none") && if (!window.siyuan.menus.menu.element.classList.contains("fn__none") &&
@ -21,6 +24,57 @@ export const workspaceMenu = (rect: DOMRect) => {
window.siyuan.menus.menu.remove(); window.siyuan.menus.menu.remove();
window.siyuan.menus.menu.element.setAttribute("data-name", "barWorkspace"); window.siyuan.menus.menu.element.setAttribute("data-name", "barWorkspace");
fetchPost("/api/system/getWorkspaces", {}, (response) => { fetchPost("/api/system/getWorkspaces", {}, (response) => {
if (!window.siyuan.config.readonly) {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.config,
icon: "iconSettings",
accelerator: window.siyuan.config.keymap.general.config.custom,
click: () => {
openSetting();
}
}).element);
}
const dockMenu: IMenu[] = []
getAllDocks().forEach(item => {
dockMenu.push({
icon: item.icon,
accelerator: window.siyuan.config.keymap.general[item.hotkeyLangId].custom,
label: window.siyuan.languages[item.hotkeyLangId],
click() {
getDockByType(item.type).toggleModel(item.type);
}
});
});
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.panel,
icon: "iconDock",
type: "submenu",
submenu: dockMenu
}).element);
/// #if !BROWSER
const workspaceMenu: IMenu[] = [{
label: window.siyuan.languages.openWorkspace,
click: async () => {
const localPath = await dialog.showOpenDialog({
defaultPath: window.siyuan.config.system.homeDir,
properties: ["openDirectory", "createDirectory"],
});
if (localPath.filePaths.length === 0) {
return;
}
openWorkspace(localPath.filePaths[0]);
}
}]
response.data.forEach((item: IWorkspace) => {
workspaceMenu.push(workspaceItem(item));
});
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.workspaceList,
type: "submenu",
submenu: workspaceMenu,
}).element);
/// #endif
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({ window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.dataHistory, label: window.siyuan.languages.dataHistory,
icon: "iconHistory", icon: "iconHistory",
@ -73,6 +127,15 @@ export const workspaceMenu = (rect: DOMRect) => {
} }
}).element); }).element);
} }
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.lockScreen,
icon: "iconLock",
accelerator: window.siyuan.config.keymap.general.lockScreen.custom,
click: () => {
lockScreen();
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({ window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.help, label: window.siyuan.languages.help,
icon: "iconHelp", icon: "iconHelp",
@ -80,41 +143,25 @@ export const workspaceMenu = (rect: DOMRect) => {
mountHelp(); mountHelp();
} }
}).element); }).element);
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.feedback,
icon: "iconHeart",
click: () => {
if ("zh_CN" === window.siyuan.config.lang) {
window.open("https://ld246.com/article/1649901726096");
} else {
window.open("https://github.com/siyuan-note/siyuan/issues");
}
}
}).element);
/// #if !BROWSER /// #if !BROWSER
window.siyuan.menus.menu.append(new MenuItem({ window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.openWorkspace, label: window.siyuan.languages.debug,
click: async () => { icon: "iconBug",
const localPath = await dialog.showOpenDialog({ click: () => {
defaultPath: window.siyuan.config.system.homeDir, getCurrentWindow().webContents.openDevTools({mode: "bottom"});
properties: ["openDirectory", "createDirectory"],
});
if (localPath.filePaths.length === 0) {
return;
}
openWorkspace(localPath.filePaths[0]);
} }
}).element); }).element);
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({
iconHTML: window.siyuan.languages.openedWorkspace,
label: "",
type: "readonly"
}).element);
response.data.forEach((item: IWorkspace) => {
if (item.closed) {
return;
}
workspaceItem(item);
});
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({
iconHTML: window.siyuan.languages.workspaceList,
label: "",
type: "readonly"
}).element);
response.data.forEach((item: IWorkspace) => {
workspaceItem(item);
});
/// #endif /// #endif
window.siyuan.menus.menu.popup({x: rect.left, y: rect.bottom}); window.siyuan.menus.menu.popup({x: rect.left, y: rect.bottom});
}); });
@ -138,36 +185,36 @@ const openWorkspace = (workspace: string) => {
const workspaceItem = (item: IWorkspace) => { const workspaceItem = (item: IWorkspace) => {
/// #if !BROWSER /// #if !BROWSER
window.siyuan.menus.menu.append(new MenuItem({ return {
label: `<div class="b3-tooltips b3-tooltips__ne" aria-label="${item.path}"> label: `<div class="b3-tooltips b3-tooltips__ne" aria-label="${item.path}">
<div class="fn__ellipsis" style="max-width: 256px">${originalPath().basename(item.path)}</div> <div class="fn__ellipsis" style="max-width: 256px">${originalPath().basename(item.path)}</div>
</div>`, </div>`,
click() { click(element: HTMLElement) {
openWorkspace(item.path); openWorkspace(item.path);
}, },
submenu: [{ // submenu: [{
label: window.siyuan.languages.openBy, // label: window.siyuan.languages.openBy,
click() { // click() {
openWorkspace(item.path); // openWorkspace(item.path);
} // }
}, { // }, {
label: window.siyuan.languages.showInFolder, // label: window.siyuan.languages.showInFolder,
click() { // click() {
shell.showItemInFolder(item.path); // shell.showItemInFolder(item.path);
} // }
}, { // }, {
label: window.siyuan.languages.copyPath, // label: window.siyuan.languages.copyPath,
click() { // click() {
writeText(item.path); // writeText(item.path);
showMessage(window.siyuan.languages.copied); // showMessage(window.siyuan.languages.copied);
} // }
}, { // }, {
label: window.siyuan.languages.removeWorkspaceTip, // label: window.siyuan.languages.removeWorkspaceTip,
click() { // click() {
fetchPost("/api/system/removeWorkspaceDir", {path: item.path}); // fetchPost("/api/system/removeWorkspaceDir", {path: item.path});
} // }
}] // }]
}).element); };
/// #endif /// #endif
}; };

View file

@ -199,9 +199,6 @@ const initBar = () => {
<div id="barSearch" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.globalSearch} ${updateHotkeyTip(window.siyuan.config.keymap.general.globalSearch.custom)}"> <div id="barSearch" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.globalSearch} ${updateHotkeyTip(window.siyuan.config.keymap.general.globalSearch.custom)}">
<svg><use xlink:href="#iconSearch"></use></svg> <svg><use xlink:href="#iconSearch"></use></svg>
</div> </div>
<div id="barSetting" class="toolbar__item b3-tooltips b3-tooltips__sw${window.siyuan.config.readonly ? " fn__none" : ""}" aria-label="${window.siyuan.languages.config} ${updateHotkeyTip(window.siyuan.config.keymap.general.config.custom)}">
<svg><use xlink:href="#iconSettings"></use></svg>
</div>
<div id="barReadonly" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.use} ${window.siyuan.config.editor.readOnly ? window.siyuan.languages.editMode : window.siyuan.languages.editReadonly} ${updateHotkeyTip(window.siyuan.config.keymap.general.editMode.custom)}"> <div id="barReadonly" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.use} ${window.siyuan.config.editor.readOnly ? window.siyuan.languages.editMode : window.siyuan.languages.editReadonly} ${updateHotkeyTip(window.siyuan.config.keymap.general.editMode.custom)}">
<svg><use xlink:href="#icon${window.siyuan.config.editor.readOnly ? "Preview" : "Edit"}"></use></svg> <svg><use xlink:href="#icon${window.siyuan.config.editor.readOnly ? "Preview" : "Edit"}"></use></svg>
</div> </div>
@ -268,10 +265,6 @@ const initBar = () => {
window.siyuan.menus.menu.popup({x: rect.left, y: rect.bottom}); window.siyuan.menus.menu.popup({x: rect.left, y: rect.bottom});
event.stopPropagation(); event.stopPropagation();
break; break;
} else if (target.id === "barSetting") {
openSetting();
event.stopPropagation();
break;
} else if (target.id === "toolbarVIP") { } else if (target.id === "toolbarVIP") {
const dialogSetting = openSetting(); const dialogSetting = openSetting();
dialogSetting.element.querySelector('.b3-tab-bar [data-name="account"]').dispatchEvent(new CustomEvent("click")); dialogSetting.element.querySelector('.b3-tab-bar [data-name="account"]').dispatchEvent(new CustomEvent("click"));