This commit is contained in:
Vanessa 2023-01-06 20:26:14 +08:00
parent 278fa18aee
commit af2d3ade5e
5 changed files with 49 additions and 20 deletions

View file

@ -38,6 +38,7 @@ export abstract class Constants {
public static readonly SIZE_UNDO = 64;
public static readonly SIZE_TITLE = 512;
public static readonly SIZE_EDITOR_WIDTH = 760;
public static readonly SIZE_ZOOM = [0.25, 0.33, 0.5, 0.67, 0.75, 0.8, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3];
// ws callback
public static readonly CB_MOUNT_HELP = "cb-mount-help";
@ -58,6 +59,7 @@ export abstract class Constants {
public static readonly CB_GET_HISTORY = "cb-get-history"; // 历史渲染
// localstorage
public static readonly LOCAL_ZOOM = "local-zoom";
public static readonly LOCAL_SEARCHEDATA = "local-searchedata";
public static readonly LOCAL_SEARCHEKEYS = "local-searchekeys";
public static readonly LOCAL_DOCINFO = "local-docinfo"; // only mobile

View file

@ -71,7 +71,6 @@ export const saveExport = (option: { type: string, id: string }) => {
};
/// #if !BROWSER
let originalZoomFactor = 1;
const renderPDF = (id: string) => {
const localData = window.siyuan.storage[Constants.LOCAL_EXPORTPDF];
const servePath = window.location.protocol + "//" + window.location.host;
@ -453,7 +452,6 @@ const renderPDF = (id: string) => {
});
</script></body></html>`;
const mainWindow = getCurrentWindow();
originalZoomFactor = mainWindow.webContents.zoomFactor;
window.siyuan.printWin = new BrowserWindow({
parent: mainWindow,
modal: true,
@ -472,20 +470,11 @@ const renderPDF = (id: string) => {
},
});
window.siyuan.printWin.webContents.userAgent = `SiYuan/${app.getVersion()} https://b3log.org/siyuan Electron`;
window.siyuan.printWin.once("ready-to-show", () => {
// 导出 PDF 预览界面不受主界面缩放影响 https://github.com/siyuan-note/siyuan/issues/6262
window.siyuan.printWin.webContents.setZoomFactor(1);
});
fetchPost("/api/export/exportTempContent", {content: html}, (response) => {
window.siyuan.printWin.loadURL(response.data.url);
});
};
export const destroyPrintWindow = () => {
getCurrentWindow().webContents.setZoomFactor(originalZoomFactor);
window.siyuan.printWin.destroy();
};
const getExportPath = (option: { type: string, id: string }, removeAssets?: boolean, mergeSubdocs?: boolean) => {
fetchPost("/api/block/getBlockInfo", {
id: option.id

View file

@ -199,9 +199,11 @@ export const getLocalStorage = (cb:()=>void) => {
paragraph: window.siyuan.config.search.paragraph,
}
};
defaultStorage[Constants.LOCAL_ZOOM] = 1;
[Constants.LOCAL_SEARCHEKEYS, Constants.LOCAL_PDFTHEME, Constants.LOCAL_BAZAAR, Constants.LOCAL_EXPORTWORD,
Constants.LOCAL_EXPORTPDF, Constants.LOCAL_DOCINFO, Constants.LOCAL_FONTSTYLES, Constants.LOCAL_SEARCHEDATA].forEach((key) => {
Constants.LOCAL_EXPORTPDF, Constants.LOCAL_DOCINFO, Constants.LOCAL_FONTSTYLES, Constants.LOCAL_SEARCHEDATA,
Constants.LOCAL_ZOOM,].forEach((key) => {
if (typeof response.data[key] === "string") {
try {
window.siyuan.storage[key] = Object.assign(defaultStorage[key], JSON.parse(response.data[key]));

View file

@ -1,4 +1,4 @@
import {isCtrl, isMac, updateHotkeyTip, writeText} from "../protyle/util/compatibility";
import {isCtrl, isMac, setStorageVal, updateHotkeyTip, writeText} from "../protyle/util/compatibility";
import {matchHotKey} from "../protyle/util/hotKey";
import {openSearch} from "../search/spread";
import {
@ -42,6 +42,9 @@ import {getNextFileLi, getPreviousFileLi} from "../protyle/wysiwyg/getBlock";
import {editor} from "../config/editor";
import {hintMoveBlock} from "../protyle/hint/extend";
import {Backlink} from "../layout/dock/Backlink";
/// #if !BROWSER
import {webFrame} from "electron";
/// #endif
import {openHistory} from "../history/history";
import {openCard} from "../card/openCard";
@ -486,6 +489,39 @@ export const globalShortcut = () => {
event.preventDefault();
return;
}
/// #if !BROWSER
if (matchHotKey("⌘=", event)) {
Constants.SIZE_ZOOM.find((item, index) => {
if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) {
window.siyuan.storage[Constants.LOCAL_ZOOM] = Constants.SIZE_ZOOM[index + 1] || 3
webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]);
setStorageVal(Constants.LOCAL_ZOOM, window.siyuan.storage[Constants.LOCAL_ZOOM]);
return true;
}
})
event.preventDefault();
return;
}
if (matchHotKey("⌘0", event)) {
webFrame.setZoomFactor(1);
window.siyuan.storage[Constants.LOCAL_ZOOM] = 1
setStorageVal(Constants.LOCAL_ZOOM, 1)
event.preventDefault();
return;
}
if (matchHotKey("⌘-", event)) {
Constants.SIZE_ZOOM.find((item, index) => {
if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) {
window.siyuan.storage[Constants.LOCAL_ZOOM] = Constants.SIZE_ZOOM[index - 1] || 0.25
webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]);
setStorageVal(Constants.LOCAL_ZOOM, window.siyuan.storage[Constants.LOCAL_ZOOM]);
return true;
}
})
event.preventDefault();
return;
}
/// #endif
if (matchHotKey(window.siyuan.config.keymap.general.syncNow.custom, event)) {
event.preventDefault();

View file

@ -3,11 +3,10 @@ import {exportLayout, JSONToLayout, resetLayout, resizeDrag, resizeTabs} from ".
import {hotKey2Electron, setStorageVal, updateHotkeyTip} from "../protyle/util/compatibility";
/// #if !BROWSER
import {dialog, getCurrentWindow} from "@electron/remote";
import {ipcRenderer, OpenDialogReturnValue} from "electron";
import {webFrame, ipcRenderer, OpenDialogReturnValue} from "electron";
import * as fs from "fs";
import * as path from "path";
import {afterExport} from "../protyle/export/util";
import {destroyPrintWindow} from "../protyle/export";
/// #endif
import {Constants} from "../constants";
import {appearance} from "../config/appearance";
@ -146,6 +145,7 @@ export const onGetConfig = (isStart: boolean) => {
id: getCurrentWindow().id,
hotkey: hotKey2Electron(window.siyuan.config.keymap.general.toggleWin.custom)
});
webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]);
/// #endif
if (!window.siyuan.config.uiLayout || (window.siyuan.config.uiLayout && !window.siyuan.config.uiLayout.left)) {
window.siyuan.config.uiLayout = Constants.SIYUAN_EMPTY_LAYOUT;
@ -391,7 +391,7 @@ const initWindow = () => {
winOnClose(currentWindow, close);
});
ipcRenderer.on(Constants.SIYUAN_EXPORT_CLOSE, () => {
destroyPrintWindow();
window.siyuan.printWin.destroy();
});
ipcRenderer.on(Constants.SIYUAN_EXPORT_PDF, (e, ipcData) => {
dialog.showOpenDialog({
@ -399,7 +399,7 @@ const initWindow = () => {
properties: ["createDirectory", "openDirectory"],
}).then((result: OpenDialogReturnValue) => {
if (result.canceled) {
destroyPrintWindow();
window.siyuan.printWin.destroy();
return;
}
const msgId = showMessage(window.siyuan.languages.exporting, -1);
@ -438,7 +438,7 @@ const initWindow = () => {
}, () => {
const pdfFilePath = path.join(result.filePaths[0], replaceLocalPath(ipcData.rootTitle) + ".pdf");
fs.writeFileSync(pdfFilePath, pdfData);
destroyPrintWindow();
window.siyuan.printWin.destroy();
fetchPost("/api/export/addPDFOutline", {
id: ipcData.rootId,
merge: ipcData.mergeSubdocs,
@ -471,11 +471,11 @@ const initWindow = () => {
});
}).catch((error: string) => {
showMessage("Export PDF error:" + error, 0, "error", msgId);
destroyPrintWindow();
window.siyuan.printWin.destroy();
});
} catch (e) {
showMessage("Export PDF failed: " + e, 0, "error", msgId);
destroyPrintWindow();
window.siyuan.printWin.destroy();
}
window.siyuan.printWin.hide();
});