diff --git a/app/src/menus/workspace.ts b/app/src/menus/workspace.ts
index a24c284af..c031f1c48 100644
--- a/app/src/menus/workspace.ts
+++ b/app/src/menus/workspace.ts
@@ -4,7 +4,7 @@ import {dialog, getCurrentWindow} from "@electron/remote";
import {ipcRenderer, shell} from "electron";
/// #endif
import {openHistory} from "../history/history";
-import {getOpenNotebookCount, originalPath} from "../util/pathName";
+import {getOpenNotebookCount, originalPath, pathPosix} from "../util/pathName";
import {mountHelp, newDailyNote} from "../util/mount";
import {fetchPost} from "../util/fetch";
import {Constants} from "../constants";
@@ -13,7 +13,7 @@ import {openCard} from "../card/openCard";
import {openSetting} from "../config";
import {getAllDocks} from "../layout/getAll";
import {exportLayout, getDockByType} from "../layout/util";
-import {lockScreen} from "../dialog/processSystem";
+import {exitSiYuan, lockScreen} from "../dialog/processSystem";
import {showMessage} from "../dialog/message";
import {unicode2Emoji} from "../emoji";
import {Dock} from "../layout/dock";
@@ -77,9 +77,10 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
type: "submenu",
submenu: dockMenu
}).element);
- /// #if !BROWSER
if (!window.siyuan.config.readonly) {
- const workspaceSubMenu: IMenu[] = [{
+ let workspaceSubMenu: IMenu[]
+ /// #if !BROWSER
+ workspaceSubMenu = [{
label: `${window.siyuan.languages.new} / ${window.siyuan.languages.openBy}`,
iconHTML: "",
click: async () => {
@@ -105,6 +106,104 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
response.data.forEach((item: IWorkspace) => {
workspaceSubMenu.push(workspaceItem(item) as IMenu);
});
+ /// #else
+ workspaceSubMenu = [{
+ label: window.siyuan.languages.new,
+ iconHTML: "",
+ click() {
+ const createWorkspaceDialog = new Dialog({
+ title: window.siyuan.languages.new,
+ content: `
+
+
+
+
+
+
`,
+ width: "520px",
+ });
+ const inputElement = createWorkspaceDialog.element.querySelector("input");
+ inputElement.focus();
+ const btnsElement = createWorkspaceDialog.element.querySelectorAll(".b3-button");
+ btnsElement[0].addEventListener("click", () => {
+ createWorkspaceDialog.destroy();
+ });
+ btnsElement[1].addEventListener("click", () => {
+ fetchPost("/api/system/createWorkspaceDir", {
+ path: pathPosix().join(pathPosix().dirname(window.siyuan.config.system.workspaceDir), inputElement.value)
+ }, () => {
+ createWorkspaceDialog.destroy();
+ });
+ });
+ }
+ }, {
+ label: `${window.siyuan.languages.openBy}...`,
+ iconHTML: "",
+ click() {
+ fetchPost("/api/system/getMobileWorkspaces", {}, (response) => {
+ let selectHTML = "";
+ response.data.forEach((item: string, index: number) => {
+ selectHTML += ``;
+ });
+ const openWorkspaceDialog = new Dialog({
+ title: window.siyuan.languages.openBy,
+ content: `
+
+
+
+
+
+
`,
+ width: "520px",
+ });
+ const btnsElement = openWorkspaceDialog.element.querySelectorAll(".b3-button");
+ btnsElement[0].addEventListener("click", () => {
+ openWorkspaceDialog.destroy();
+ });
+ btnsElement[1].addEventListener("click", () => {
+ const openPath = openWorkspaceDialog.element.querySelector("select").value;
+ if (openPath === window.siyuan.config.system.workspaceDir) {
+ openWorkspaceDialog.destroy();
+ return;
+ }
+ confirmDialog(window.siyuan.languages.confirm, `${pathPosix().basename(window.siyuan.config.system.workspaceDir)} -> ${pathPosix().basename(openPath)}?`, () => {
+ fetchPost("/api/system/setWorkspaceDir", {
+ path: openPath
+ }, () => {
+ exitSiYuan();
+ });
+ });
+ });
+ });
+ }
+ }];
+ workspaceSubMenu.push({type: "separator"});
+ response.data.forEach((item: IWorkspace) => {
+ workspaceSubMenu.push({
+ iconHTML: Constants.ZWSP,
+ action: "iconCloseRound",
+ current: window.siyuan.config.system.workspaceDir === item.path,
+ label: pathPosix().basename(item.path),
+ bind(menuElement) {
+ menuElement.addEventListener("click", (event) => {
+ if (hasClosestByClassName(event.target as Element, "b3-menu__action")) {
+ event.preventDefault();
+ event.stopPropagation();
+ fetchPost("/api/system/removeWorkspaceDir", {path: item.path});
+ return;
+ }
+ confirmDialog(window.siyuan.languages.confirm, `${pathPosix().basename(window.siyuan.config.system.workspaceDir)} -> ${pathPosix().basename(item.path)}?`, () => {
+ fetchPost("/api/system/setWorkspaceDir", {
+ path: item.path
+ }, () => {
+ exitSiYuan();
+ });
+ });
+ });
+ }
+ });
+ });
+ /// #endif
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.workspaceList,
icon: "iconWorkspace",
@@ -112,7 +211,6 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
submenu: workspaceSubMenu,
}).element);
}
- /// #endif
const layoutSubMenu: IMenu[] = [{
iconHTML: Constants.ZWSP,
label: window.siyuan.languages.save,
diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts
index a3bcf8509..ccc4be403 100644
--- a/app/src/util/assets.ts
+++ b/app/src/util/assets.ts
@@ -215,7 +215,11 @@ export const setInlineStyle = (set = true) => {
.protyle-wysiwyg .h5 img.emoji, .b3-typography h5 img.emoji {width:${Math.floor(window.siyuan.config.editor.fontSize * 1.13 * 1.25)}px}
.protyle-wysiwyg .h6 img.emoji, .b3-typography h6 img.emoji {width:${Math.floor(window.siyuan.config.editor.fontSize * 1.25)}px}`;
if (window.siyuan.config.editor.fontFamily) {
- style += `.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title, .protyle-title__input{font-family: "${window.siyuan.config.editor.fontFamily}", "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols" !important;}`;
+ style += `\n.b3-typography:not(.b3-typography--default), .protyle-wysiwyg, .protyle-title, .protyle-title__input{font-family: "${window.siyuan.config.editor.fontFamily}", "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols" !important;}`;
+ }
+ // pad 端菜单移除显示,如工作空间
+ if ("ontouchend" in document) {
+ style += "\n.b3-menu .b3-menu__action {opacity: 0.68;}";
}
if (set) {
document.getElementById("editorFontSize").innerHTML = style;