add global clipboard monitor that spawns popups
TODO: refactor the search page clipboard monitor and popup clipboard monitor to use a common ClipboardMonitor class
This commit is contained in:
parent
f29abfc511
commit
939ad42dac
@ -79,6 +79,7 @@
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enable",
|
||||
"enableClipboardPopups",
|
||||
"resultOutputMode",
|
||||
"debugInfo",
|
||||
"maxResults",
|
||||
@ -111,6 +112,10 @@
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"enableClipboardPopups": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"resultOutputMode": {
|
||||
"type": "string",
|
||||
"enum": ["group", "merge", "split"],
|
||||
|
@ -34,6 +34,9 @@ class Backend {
|
||||
|
||||
this.clipboardPasteTarget = document.querySelector('#clipboard-paste-target');
|
||||
this.popupWindow = null;
|
||||
this.clipboardPopupTimerId = null;
|
||||
this.clipboardInterval = 250;
|
||||
this.clipboardPreviousText = null;
|
||||
|
||||
this.apiForwarder = new BackendApiForwarder();
|
||||
}
|
||||
@ -122,6 +125,20 @@ class Backend {
|
||||
} else {
|
||||
this.mecab.stopListener();
|
||||
}
|
||||
|
||||
window.clearInterval(this.clipboardPopupTimerId);
|
||||
if (options.general.enableClipboardPopups) {
|
||||
this.clipboardPopupTimerId = setInterval(() => {
|
||||
this._onApiClipboardGet()
|
||||
.then((result) => {
|
||||
if (this.clipboardPreviousText === result) {
|
||||
return;
|
||||
}
|
||||
this._onCommandSearch({mode: 'popup', query: result});
|
||||
this.clipboardPreviousText = result;
|
||||
});
|
||||
}, this.clipboardInterval);
|
||||
}
|
||||
}
|
||||
|
||||
async getOptionsSchema() {
|
||||
|
@ -266,6 +266,7 @@ function profileOptionsCreateDefaults() {
|
||||
return {
|
||||
general: {
|
||||
enable: true,
|
||||
enableClipboardPopups: false,
|
||||
resultOutputMode: 'group',
|
||||
debugInfo: false,
|
||||
maxResults: 32,
|
||||
|
@ -28,6 +28,7 @@ function getOptionsFullMutable() {
|
||||
|
||||
async function formRead(options) {
|
||||
options.general.enable = $('#enable').prop('checked');
|
||||
options.general.enableClipboardPopups = $('#enable-clipboard-popups').prop('checked');
|
||||
options.general.showGuide = $('#show-usage-guide').prop('checked');
|
||||
options.general.compactTags = $('#compact-tags').prop('checked');
|
||||
options.general.compactGlossaries = $('#compact-glossaries').prop('checked');
|
||||
|
@ -134,6 +134,10 @@
|
||||
<label><input type="checkbox" id="enable"> Enable content scanning</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" id="enable-clipboard-popups"> Enable native popups when copying Japanese text</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" id="show-usage-guide"> Show usage guide on startup</label>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user