add select_modifier option and add resize event to fix bugs

This commit is contained in:
ACS106103 2021-07-11 12:18:36 +08:00
parent ad74a4cd29
commit c6a087b627

View File

@ -17,23 +17,11 @@ module.exports = {
author: 'SP12893678', author: 'SP12893678',
options: [ options: [
{ {
key: 'showUI', key: 'show_ui',
label: 'show scale ui', label: 'show scale ui',
type: 'toggle', type: 'toggle',
value: true, value: true,
}, },
{
key: 'canMouseWheel',
label: 'use mouse wheel to scale',
type: 'toggle',
value: true,
},
{
key: 'canHotkey',
label: 'use keyboard hotkey to scale',
type: 'toggle',
value: true,
},
{ {
key: 'offset', key: 'offset',
label: 'set scale plus and minus offset', label: 'set scale plus and minus offset',
@ -45,7 +33,41 @@ module.exports = {
label: 'set scale default value', label: 'set scale default value',
type: 'input', type: 'input',
value: 100, value: 100,
} },
{
key: 'can_hotkey',
label: 'use keyboard hotkey to scale',
type: 'toggle',
value: true,
},
{
key: 'keyboard_select_modifier',
label:
'keyboard hotkey select modifier',
type: 'select',
value: [
'Control',
'Alt',
],
},
{
key: 'can_mouse_wheel',
label: 'use mouse wheel to scale',
type: 'toggle',
value: true,
},
{
key: 'mouse_wheel_select_modifier',
label:
'mouse wheel select modifier',
type: 'select',
value: [
'Control',
'Alt',
'Command',
'Shift',
],
},
], ],
hacks: { hacks: {
'renderer/preload.js'(store, __exports) { 'renderer/preload.js'(store, __exports) {
@ -70,15 +92,9 @@ module.exports = {
const $scaleView = createElement('<div class="notion-scale-view">100%</div>'); const $scaleView = createElement('<div class="notion-scale-view">100%</div>');
const $scaleMinusButton = createElement('<div class="notion-scale-button"></div>'); const $scaleMinusButton = createElement('<div class="notion-scale-button"></div>');
if(store().showUI){ if(store().show_ui){
$scalePlusButton.addEventListener('click',()=>{ $scalePlusButton.addEventListener('click',()=> zoomPlus())
zoomPlus() $scaleMinusButton.addEventListener('click',()=> zoomMinus())
if(store().showUI) changeScaleViewUIValue()
})
$scaleMinusButton.addEventListener('click',()=>{
zoomMinus()
if(store().showUI) changeScaleViewUIValue()
})
$scaleSet.append($scalePlusButton) $scaleSet.append($scalePlusButton)
$scaleSet.append($scaleView) $scaleSet.append($scaleView)
@ -88,37 +104,30 @@ module.exports = {
changeScaleViewUIValue() changeScaleViewUIValue()
} }
if(store().canMouseWheel){
document.defaultView.addEventListener('wheel', (event)=>{
if (event.ctrlKey && event.deltaY < 0){
zoomPlus()
if(store().showUI) changeScaleViewUIValue()
}
if (event.ctrlKey && event.deltaY > 0){ if(store().can_mouse_wheel){
zoomMinus() document.defaultView.addEventListener('wheel', (event)=>{
if(store().showUI) changeScaleViewUIValue() let key = getSelectModifierInKeyBoradKey(store().mouse_wheel_select_modifier)
} if (event[key] && event.deltaY < 0) zoomPlus()
if (event[key] && event.deltaY > 0) zoomMinus()
}); });
} }
if(store().canHotkey){ if(store().can_hotkey){
document.defaultView.addEventListener('keydown', (event) => { document.defaultView.addEventListener('keyup', (event) => {
if (event.key == '+' && event.ctrlKey){ let key = getSelectModifierInKeyBoradKey(store().keyboard_select_modifier)
zoomPlus() if (event[key] && event.key == '+') zoomPlus()
if(store().showUI) changeScaleViewUIValue() if (event[key] && event.key == '-') zoomMinus()
}
if (event.key == '-' && event.ctrlKey){
zoomMinus()
if(store().showUI) changeScaleViewUIValue()
}
}) })
} }
document.defaultView.addEventListener('resize',(event) =>{
zoom = electron.webFrame.getZoomFactor()
if(store().show_ui) changeScaleViewUIValue()
});
const observer = new MutationObserver((list, observer) => { const observer = new MutationObserver((list, observer) => {
electron.webFrame.setZoomFactor(zoom) electron.webFrame.setZoomFactor(zoom)
if(store().showUI) changeScaleViewUIValue()
}); });
observer.observe(document.querySelector('.notion-frame'), { observer.observe(document.querySelector('.notion-frame'), {
@ -126,12 +135,14 @@ module.exports = {
}); });
function zoomPlus() { function zoomPlus() {
zoom = electron.webFrame.getZoomFactor()
if(zoom + offset > maxZoom) return if(zoom + offset > maxZoom) return
zoom += offset zoom += offset
electron.webFrame.setZoomFactor(zoom) electron.webFrame.setZoomFactor(zoom)
} }
function zoomMinus() { function zoomMinus() {
zoom = electron.webFrame.getZoomFactor()
if(zoom + offset < minZoom) return if(zoom + offset < minZoom) return
zoom -= offset zoom -= offset
electron.webFrame.setZoomFactor(zoom) electron.webFrame.setZoomFactor(zoom)
@ -140,6 +151,27 @@ module.exports = {
function changeScaleViewUIValue() { function changeScaleViewUIValue() {
$scaleView.innerHTML = Math.round(zoom * 100) + "%" $scaleView.innerHTML = Math.round(zoom * 100) + "%"
} }
function getSelectModifierInKeyBoradKey(select_modifier) {
let key = 'ctrlKey'
switch (select_modifier) {
case 'Control':
key = 'ctrlKey'
break;
case 'Alt':
key = 'altKey'
break;
case 'Command':
key = 'metaKey'
break;
case 'Shift':
key = 'shiftKey'
break;
default:
break;
}
return key
}
} }
}) })
}, },