Add global shortcuts logic
parent
b055fac886
commit
42fe902da4
|
|
@ -109,6 +109,12 @@
|
||||||
<Button isSelected={currentTool === toolBrush} kind="ghost" size="small" icon={PaintBrushAlt} iconDescription="paint" tooltipPosition="right" on:click={()=>swapTool(toolBrush)}></Button>
|
<Button isSelected={currentTool === toolBrush} kind="ghost" size="small" icon={PaintBrushAlt} iconDescription="paint" tooltipPosition="right" on:click={()=>swapTool(toolBrush)}></Button>
|
||||||
<Button isSelected={currentTool === toolPicker} kind="ghost" size="small" icon={Eyedropper} iconDescription="pick" tooltipPosition="right" on:click={()=>swapTool(toolPicker)}></Button>
|
<Button isSelected={currentTool === toolPicker} kind="ghost" size="small" icon={Eyedropper} iconDescription="pick" tooltipPosition="right" on:click={()=>swapTool(toolPicker)}></Button>
|
||||||
<Button isSelected={currentTool === toolErase} kind="ghost" size="small" icon={Erase} iconDescription="erase" tooltipPosition="right" on:click={()=>swapTool(toolErase)}></Button>
|
<Button isSelected={currentTool === toolErase} kind="ghost" size="small" icon={Erase} iconDescription="erase" tooltipPosition="right" on:click={()=>swapTool(toolErase)}></Button>
|
||||||
|
<Shortcuts group='editor2D'>
|
||||||
|
<Shortcut global cmd='brush' keys={['b']} on:trigger={()=>swapTool(toolBrush)} />
|
||||||
|
<Shortcut global cmd='fill' keys={['f']} on:trigger={()=>swapTool(toolFill)} />
|
||||||
|
<Shortcut global cmd='picker' keys={['i']} on:trigger={()=>swapTool(toolPicker)} />
|
||||||
|
<Shortcut global cmd='erase' keys={['e']} on:trigger={()=>swapTool(toolErase)} />
|
||||||
|
</Shortcuts>
|
||||||
</menu>
|
</menu>
|
||||||
<section class='middle'>
|
<section class='middle'>
|
||||||
<menu class='toolsettings'>
|
<menu class='toolsettings'>
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,10 @@
|
||||||
export let group: string = 'default'
|
export let group: string = 'default'
|
||||||
export let cmd: string
|
export let cmd: string
|
||||||
export let keys: string[]
|
export let keys: string[]
|
||||||
|
export let global: boolean = false
|
||||||
const { registerShortcut } = getContext(SHORTCUTS) as ShortcutsType
|
const { registerShortcut } = getContext(SHORTCUTS) as ShortcutsType
|
||||||
|
|
||||||
registerShortcut({cmd, group, keys, callback: () => {
|
registerShortcut({cmd, group, global, keys, callback: () => {
|
||||||
dispatch('trigger', {})
|
dispatch('trigger', {})
|
||||||
}})
|
}})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
import { get, writable } from 'svelte/store'
|
import { get, writable } from 'svelte/store'
|
||||||
export const SHORTCUTS = {}
|
export const SHORTCUTS = {}
|
||||||
export type ShortcutsType = {
|
export type ShortcutsType = {
|
||||||
registerShortcut: (opts: {cmd: string, group: string, keys: string[], callback: () => void}) => void,
|
registerShortcut: (opts: {cmd: string, group: string, global: boolean, keys: string[], callback: () => void}) => void,
|
||||||
}
|
}
|
||||||
|
|
||||||
let currentShortcuts = writable({id: {}, group: 'default'})
|
let currentShortcuts = writable({id: {}, group: 'default'})
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
id: {},
|
id: {},
|
||||||
cmd: string,
|
cmd: string,
|
||||||
keys: string[],
|
keys: string[],
|
||||||
|
global: boolean,
|
||||||
callback: () => void,
|
callback: () => void,
|
||||||
group: string,
|
group: string,
|
||||||
}
|
}
|
||||||
|
|
@ -43,7 +44,7 @@
|
||||||
let cur = get(currentShortcuts)
|
let cur = get(currentShortcuts)
|
||||||
for (let shortcut of get(shortcuts)) {
|
for (let shortcut of get(shortcuts)) {
|
||||||
if (shortcut.group !== cur.group) continue
|
if (shortcut.group !== cur.group) continue
|
||||||
if (shortcut.id !== cur.id) continue
|
if (!shortcut.global && shortcut.id !== cur.id) continue
|
||||||
if (shortcut.keys.includes(keystring)) {
|
if (shortcut.keys.includes(keystring)) {
|
||||||
shortcut.callback()
|
shortcut.callback()
|
||||||
}
|
}
|
||||||
|
|
@ -86,12 +87,12 @@
|
||||||
})(id, group, active)
|
})(id, group, active)
|
||||||
|
|
||||||
setContext(SHORTCUTS, {
|
setContext(SHORTCUTS, {
|
||||||
registerShortcut: (opts: {cmd: string, keys: string[], callback: () => void}) => {
|
registerShortcut: (opts: {cmd: string, keys: string[], global: boolean, callback: () => void}) => {
|
||||||
shortcuts.update(shortcuts => {
|
shortcuts.update(shortcuts => {
|
||||||
let keys = opts.keys.map(v => {
|
let keys = opts.keys.map(v => {
|
||||||
return v.replaceAll('ctrl', 'control')
|
return v.replaceAll('ctrl', 'control')
|
||||||
})
|
})
|
||||||
shortcuts.push({id, cmd: opts.cmd, group: group, keys: keys.map(v=>keysToString(v.split('+'))), callback: opts.callback})
|
shortcuts.push({id, cmd: opts.cmd, group: group, global: opts.global, keys: keys.map(v=>keysToString(v.split('+'))), callback: opts.callback})
|
||||||
return shortcuts
|
return shortcuts
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue