From be8bf1fac79f53274f619cbc71f5201f4c90b3bf Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Tue, 5 Mar 2019 09:19:00 -0500 Subject: [PATCH] Use the number keys as shortcuts for adding favorite presets --- modules/ui/modes.js | 47 ++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/modules/ui/modes.js b/modules/ui/modes.js index ef317c0a2..5af3c3e64 100644 --- a/modules/ui/modes.js +++ b/modules/ui/modes.js @@ -42,19 +42,6 @@ export function uiModes(context) { context.container() .classed('mode-' + exited.id, false); }); -/* - modes.forEach(function(mode) { - context.keybinding().on(mode.key, function() { - if (!enabled(mode)) return; - - if (mode.id === context.mode().id) { - context.enter(modeBrowse(context)); - } else { - context.enter(mode); - } - }); - }); -*/ var debouncedUpdate = _debounce(update, 500, { leading: true, trailing: true }); @@ -70,9 +57,13 @@ export function uiModes(context) { function update() { - // add favorite presets to modes + + for (var i = 0; i <= 9; i++) { + context.keybinding().off(i.toString()); + } + var favoritePresets = context.getFavoritePresets(); - var favoriteModes = favoritePresets.map(function(d) { + var favoriteModes = favoritePresets.map(function(d, index) { var preset = context.presets().item(d.id); var presetName = preset.name(); var markerClass = 'add-preset add-' + d.geom + ' add-preset-' + presetName.replace(/\s+/g, '_') @@ -96,15 +87,35 @@ export function uiModes(context) { preset: preset, geometry: d.geom }; + var mode; switch (d.geom) { case 'point': case 'vertex': - return modeAddPoint(context, favoriteMode); + mode = modeAddPoint(context, favoriteMode); + break; case 'line': - return modeAddLine(context, favoriteMode); + mode = modeAddLine(context, favoriteMode); + break; case 'area': - return modeAddArea(context, favoriteMode); + mode = modeAddArea(context, favoriteMode); } + var keyCode = index + 1; + if (keyCode <= 10) { + if (keyCode === 10) { + keyCode = 0; + } + context.keybinding().on(keyCode.toString(), function() { + if (!enabled(mode)) return; + + if (mode.button === context.mode().button) { + context.enter(modeBrowse(context)); + } else { + context.enter(mode); + } + }); + } + + return mode; }); var data = favoriteModes;