Преглед изворни кода

added option "Annotion editor > default mode" (see #494)

Gildas пре 5 година
родитељ
комит
7f58a960b9

+ 20 - 0
_locales/de/messages.json

@@ -395,6 +395,26 @@
 		"message": "open pages saved with SingleFile in the annotation editor",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "Default-Modus",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "Normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "Editieren der Seite",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "Formatieren der Seite",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "Entfernen von Elementen",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "apply the system theme when formatting a page",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/en/messages.json

@@ -395,6 +395,26 @@
 		"message": "open pages saved with SingleFile in the annotation editor",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "apply the system theme when formatting a page",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/es/messages.json

@@ -395,6 +395,26 @@
 		"message": "open pages saved with SingleFile in the annotation editor",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "modo por defecto",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "editar la página",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "formatear la página",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "eliminar elementos",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "apply the system theme when formatting a page",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/fr/messages.json

@@ -395,6 +395,26 @@
 		"message": "ouvrir les pages sauvées avec SingleFile dans l'éditeur d'annotations",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "mode par défaut",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "éditer la page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "formater la page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "supprimer des éléments",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "appliquer le thème système lors du formattage d'une page",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/ja/messages.json

@@ -395,6 +395,26 @@
 		"message": "annotation editor で、SingleFile で保存されたページを開く",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "ページの書式設定時にシステムテーマを適用する",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/pl/messages.json

@@ -395,6 +395,26 @@
 		"message": "otwieraj strony zapisane z SingleFile w edytorze adnotacji",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "zastosuj motyw systemowy podczas formatowania strony",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/ru/messages.json

@@ -395,6 +395,26 @@
 		"message": "сохранять открытые страницы из редактора аннотаций SingleFile",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "использовать системную тему при форматировании страницы",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/uk/messages.json

@@ -395,6 +395,26 @@
 		"message": "open pages saved with SingleFile in the annotation editor",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "apply the system theme when formatting a page",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/zh_CN/messages.json

@@ -395,6 +395,26 @@
 		"message": "在标注编辑器中打开用 SingleFile 保存的页面",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "在标注编辑器中打开页面时应用系统主题样式",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 20 - 0
_locales/zh_TW/messages.json

@@ -395,6 +395,26 @@
 		"message": "在標註編輯器中打開用 SingleFile 保存的頁面",
 		"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
 	},
+	"optionDefaultEditorMode": {
+		"message": "default mode",
+		"description": "Options page label: 'default mode'"
+	},
+	"optionDefaultEditorModeNormal": {
+		"message": "normal",
+		"description": "Options page label: 'default mode > normal'"
+	},
+	"optionDefaultEditorModeEdit": {
+		"message": "edit the page",
+		"description": "Options page label: 'default mode > edit the page'"
+	},
+	"optionDefaultEditorModeFormat": {
+		"message": "format the page",
+		"description": "Options page label: 'default mode > format the page'"
+	},
+	"optionDefaultEditorModeCut": {
+		"message": "remove elements",
+		"description": "Options page label: 'default mode > remove elements'"
+	},
 	"optionApplySystemTheme": {
 		"message": "在標註編輯器中打開頁面時應用系統主題樣式",
 		"description": "Title of the button 'apply the system theme when formatting a page'"

+ 1 - 0
extension/core/bg/config.js

@@ -67,6 +67,7 @@ singlefile.extension.core.bg.config = (() => {
 		displayInfobar: true,
 		displayStats: false,
 		backgroundSave: true,
+		defaultEditorMode: "normal",
 		applySystemTheme: true,
 		autoSaveDelay: 1,
 		autoSaveLoad: false,

+ 1 - 0
extension/core/bg/downloads.js

@@ -116,6 +116,7 @@ singlefile.extension.core.bg.downloads = (() => {
 					bookmarkId: message.bookmarkId,
 					replaceBookmarkURL: message.replaceBookmarkURL,
 					applySystemTheme: message.applySystemTheme,
+					defaultEditorMode: message.defaultEditorMode,
 					includeInfobar: message.includeInfobar
 				});
 			} else {

+ 1 - 0
extension/core/content/content-download.js

@@ -57,6 +57,7 @@ this.singlefile.extension.core.content.download = this.singlefile.extension.core
 					bookmarkId: options.bookmarkId,
 					replaceBookmarkURL: options.replaceBookmarkURL,
 					applySystemTheme: options.applySystemTheme,
+					defaultEditorMode: options.defaultEditorMode,
 					includeInfobar: options.includeInfobar
 				};
 				message.truncated = pageData.content.length > MAX_CONTENT_SIZE;

+ 34 - 12
extension/ui/bg/ui-editor.js

@@ -119,27 +119,18 @@ singlefile.extension.ui.bg.editor = (() => {
 	};
 	editPageButton.onclick = () => {
 		if (editPageButton.classList.contains("edit-disabled")) {
-			editPageButton.classList.remove("edit-disabled");
-			editorElement.contentWindow.postMessage(JSON.stringify({ method: "enableEditPage" }), "*");
+			enableEditPage();
 		} else {
 			editPageButton.classList.add("edit-disabled");
 			editorElement.contentWindow.postMessage(JSON.stringify({ method: "disableEditPage" }), "*");
 		}
 	};
 	formatPageButton.onclick = () => {
-		if (formatPageButton.classList.contains("format-disabled")) {
-			formatPageButton.classList.remove("format-disabled");
-			updatedResources = {};
-			editorElement.contentWindow.postMessage(JSON.stringify({ method: tabData.options.applySystemTheme ? "formatPage" : "formatPageNoTheme" }), "*");
-		}
+		enableFormatPage();
 	};
 	cutPageButton.onclick = () => {
 		if (cutPageButton.classList.contains("cut-disabled")) {
-			cutPageButton.classList.remove("cut-disabled");
-			toolbarElement.classList.add("cut-mode");
-			resetHighlightButtons();
-			disableRemoveHighlights();
-			editorElement.contentWindow.postMessage(JSON.stringify({ method: "enableCutPage" }), "*");
+			enableCutPage();
 			editorElement.contentWindow.focus();
 		} else {
 			cutPageButton.classList.add("cut-disabled");
@@ -184,11 +175,21 @@ singlefile.extension.ui.bg.editor = (() => {
 			singlefile.extension.core.content.download.downloadPage(pageData, tabData.options);
 		}
 		if (message.method == "disableFormatPage") {
+			tabData.options.disableFormatPage = true;
 			formatPageButton.remove();
 		}
 		if (message.method == "onUpdate") {
 			tabData.docSaved = message.saved;
 		}
+		if (message.method == "onInit") {
+			if (tabData.options.defaultEditorMode == "edit") {
+				enableEditPage();
+			} else if (tabData.options.defaultEditorMode == "format" && !tabData.options.disableFormatPage) {
+				enableFormatPage();
+			} else if (tabData.options.defaultEditorMode == "cut") {
+				enableCutPage();
+			}
+		}
 	};
 
 	window.onload = () => {
@@ -249,6 +250,27 @@ singlefile.extension.ui.bg.editor = (() => {
 		editorElement.contentWindow.postMessage(JSON.stringify({ method: "displayHighlights" }), "*");
 	}
 
+	function enableEditPage() {
+		editPageButton.classList.remove("edit-disabled");
+		editorElement.contentWindow.postMessage(JSON.stringify({ method: "enableEditPage" }), "*");
+	}
+
+	function enableFormatPage() {
+		if (formatPageButton.classList.contains("format-disabled")) {
+			formatPageButton.classList.remove("format-disabled");
+			updatedResources = {};
+			editorElement.contentWindow.postMessage(JSON.stringify({ method: tabData.options.applySystemTheme ? "formatPage" : "formatPageNoTheme" }), "*");
+		}
+	}
+
+	function enableCutPage() {
+		cutPageButton.classList.remove("cut-disabled");
+		toolbarElement.classList.add("cut-mode");
+		resetHighlightButtons();
+		disableRemoveHighlights();
+		editorElement.contentWindow.postMessage(JSON.stringify({ method: "enableCutPage" }), "*");
+	}
+
 	function savePage() {
 		editorElement.contentWindow.postMessage(JSON.stringify({ method: "getContent", compressHTML: tabData.options.compressHTML, updatedResources }), "*");
 	}

+ 13 - 0
extension/ui/bg/ui-options.js

@@ -93,6 +93,7 @@
 	const editorLabel = document.getElementById("editorLabel");
 	const openEditorLabel = document.getElementById("openEditorLabel");
 	const autoOpenEditorLabel = document.getElementById("autoOpenEditorLabel");
+	const defaultEditorModeLabel = document.getElementById("defaultEditorModeLabel");
 	const applySystemThemeLabel = document.getElementById("applySystemThemeLabel");
 	const warnUnsavedPageLabel = document.getElementById("warnUnsavedPageLabel");
 	const infobarTemplateLabel = document.getElementById("infobarTemplateLabel");
@@ -155,6 +156,11 @@
 	const autoCloseInput = document.getElementById("autoCloseInput");
 	const openEditorInput = document.getElementById("openEditorInput");
 	const autoOpenEditorInput = document.getElementById("autoOpenEditorInput");
+	const defaultEditorModeInput = document.getElementById("defaultEditorModeInput");
+	const defaultEditorModeNormalLabel = document.getElementById("defaultEditorModeNormalLabel");
+	const defaultEditorModeEditLabel = document.getElementById("defaultEditorModeEditLabel");
+	const defaultEditorModeFormatLabel = document.getElementById("defaultEditorModeFormatLabel");
+	const defaultEditorModeCutLabel = document.getElementById("defaultEditorModeCutLabel");
 	const applySystemThemeInput = document.getElementById("applySystemThemeInput");
 	const warnUnsavedPageInput = document.getElementById("warnUnsavedPageInput");
 	const expandAllButton = document.getElementById("expandAllButton");
@@ -494,6 +500,11 @@
 	editorLabel.textContent = browser.i18n.getMessage("optionsEditorSubTitle");
 	openEditorLabel.textContent = browser.i18n.getMessage("optionOpenEditor");
 	autoOpenEditorLabel.textContent = browser.i18n.getMessage("optionAutoOpenEditor");
+	defaultEditorModeLabel.textContent = browser.i18n.getMessage("optionDefaultEditorMode");
+	defaultEditorModeNormalLabel.textContent = browser.i18n.getMessage("optionDefaultEditorModeNormal");
+	defaultEditorModeEditLabel.textContent = browser.i18n.getMessage("optionDefaultEditorModeEdit");
+	defaultEditorModeFormatLabel.textContent = browser.i18n.getMessage("optionDefaultEditorModeFormat");
+	defaultEditorModeCutLabel.textContent = browser.i18n.getMessage("optionDefaultEditorModeCut");
 	applySystemThemeLabel.textContent = browser.i18n.getMessage("optionApplySystemTheme");
 	warnUnsavedPageLabel.textContent = browser.i18n.getMessage("optionWarnUnsavedPage");
 	resetButton.textContent = browser.i18n.getMessage("optionsResetButton");
@@ -682,6 +693,7 @@
 		autoCloseInput.checked = profileOptions.autoClose;
 		openEditorInput.checked = profileOptions.openEditor;
 		autoOpenEditorInput.checked = profileOptions.autoOpenEditor;
+		defaultEditorModeInput.value = profileOptions.defaultEditorMode;
 		applySystemThemeInput.checked = profileOptions.applySystemTheme;
 		warnUnsavedPageInput.checked = profileOptions.warnUnsavedPage;
 		removeFramesInput.disabled = saveRawPageInput.checked;
@@ -749,6 +761,7 @@
 				autoClose: autoCloseInput.checked,
 				openEditor: openEditorInput.checked,
 				autoOpenEditor: autoOpenEditorInput.checked,
+				defaultEditorMode: defaultEditorModeInput.value,
 				applySystemTheme: applySystemThemeInput.checked,
 				warnUnsavedPage: warnUnsavedPageInput.checked
 			}

+ 1 - 0
extension/ui/content/content-ui-editor-web.js

@@ -817,6 +817,7 @@ table {
 		const message = JSON.parse(event.data);
 		if (message.method == "init") {
 			await init(message.content);
+			window.parent.postMessage(JSON.stringify({ "method": "onInit" }), "*");
 		}
 		if (message.method == "addNote") {
 			addNote(message);

+ 14 - 0
extension/ui/pages/help.html

@@ -345,6 +345,20 @@
 				</ul>
 				<p>Annotation editor</p>
 				<ul>
+					<li data-options-label="defaultEditorModeLabel"> <span class="option">Option: default mode</span>
+						<p>Select the default mode when opening the annotation editor. The available choices are:
+						<ul>
+							<li><code>normal</code>: default value</li>
+							<li><code>edit the page</code>: enable the button <img
+									src="../resources/button_note_edit.png" class="icon"></li>
+							<li><code>format the page</code>: enable the button <img
+									src="../resources/button_note_format.png" class="icon"> if the page can be
+								formmatted</li>
+							<li><code>remove elements</code>: enable the button <img src="../resources/button_cut.png"
+									class="icon"></li>
+						</ul>
+						</p>
+					</li>
 					<li data-options-label="applySystemThemeLabel"> <span class="option">Option: apply the system theme
 							when formatting a page in the annotation editor</span>
 						<p>Uncheck this option if you do not want to apply the theme of the operating system or the

+ 9 - 0
extension/ui/pages/options.html

@@ -195,6 +195,15 @@
 		</details>
 		<details>
 			<summary id="editorLabel"></summary>
+			<div class="option">
+				<label for="defaultEditorModeInput" id="defaultEditorModeLabel"></label>
+				<select id="defaultEditorModeInput">
+					<option id="defaultEditorModeNormalLabel" value="normal"></option>
+					<option id="defaultEditorModeEditLabel" value="edit"></option>
+					<option id="defaultEditorModeFormatLabel" value="format"></option>
+					<option id="defaultEditorModeCutLabel" value="cut"></option>
+				</select>
+			</div>
 			<div class="option">
 				<label for="applySystemThemeInput" id="applySystemThemeLabel"></label>
 				<input type="checkbox" id="applySystemThemeInput">