Skip to content

Commit 55f993a

Browse files
authored
Merge pull request #709 from PaulHax/shortcut-in-tooltip
feat(ControlsStripTools): add shortcut in tooltip
2 parents 079a195 + 3c2053b commit 55f993a

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

src/components/ControlButton.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
<script>
2626
export default {
27-
name: 'ToolButton',
27+
name: 'ControlButton',
2828
props: {
2929
icon: { type: String, required: true },
3030
name: { type: String, required: true },

src/components/ControlsStripTools.vue

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
>
1212
<menu-control-button
1313
icon="mdi-circle-half-full"
14-
name="Window & Level"
14+
:name="`Window & Level [${nameToShortcut['Window & Level']}]`"
1515
:active="active"
1616
:disabled="noCurrentImage"
1717
@click="toggle"
@@ -22,7 +22,7 @@
2222
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Pan">
2323
<control-button
2424
icon="mdi-cursor-move"
25-
name="Pan"
25+
:name="`Pan [${nameToShortcut['Pan']}]`"
2626
:buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
2727
:disabled="noCurrentImage"
2828
@click="toggle"
@@ -31,7 +31,7 @@
3131
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Zoom">
3232
<control-button
3333
icon="mdi-magnify-plus-outline"
34-
name="Zoom"
34+
:name="`Zoom [${nameToShortcut['Zoom']}]`"
3535
:buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
3636
:disabled="noCurrentImage"
3737
@click="toggle"
@@ -43,7 +43,7 @@
4343
>
4444
<control-button
4545
icon="mdi-crosshairs"
46-
name="Crosshairs"
46+
:name="`Crosshairs [${nameToShortcut['Crosshairs']}]`"
4747
:buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
4848
:disabled="noCurrentImage || isObliqueLayout"
4949
@click="toggle"
@@ -53,7 +53,7 @@
5353
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Select">
5454
<control-button
5555
icon="mdi-cursor-default"
56-
name="Select"
56+
:name="`Select [${nameToShortcut['Select']}]`"
5757
:buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
5858
:disabled="noCurrentImage"
5959
@click="toggle"
@@ -62,7 +62,7 @@
6262
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Paint">
6363
<control-button
6464
icon="mdi-brush"
65-
name="Paint"
65+
:name="`Paint [${nameToShortcut['Paint']}]`"
6666
:buttonClass="['tool-btn', active ? 'tool-btn-selected' : '']"
6767
:disabled="noCurrentImage || isObliqueLayout"
6868
@click="toggle"
@@ -74,7 +74,7 @@
7474
>
7575
<menu-control-button
7676
icon="mdi-vector-square"
77-
name="Rectangle"
77+
:name="`Rectangle [${nameToShortcut['Rectangle']}]`"
7878
:mobileOnlyMenu="true"
7979
:active="active"
8080
:disabled="noCurrentImage || isObliqueLayout"
@@ -86,7 +86,7 @@
8686
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Polygon">
8787
<menu-control-button
8888
icon="mdi-pentagon-outline"
89-
name="Polygon"
89+
:name="`Polygon [${nameToShortcut['Polygon']}]`"
9090
:mobileOnlyMenu="true"
9191
:active="active"
9292
:disabled="noCurrentImage || isObliqueLayout"
@@ -98,7 +98,7 @@
9898
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Ruler">
9999
<menu-control-button
100100
icon="mdi-ruler"
101-
name="Ruler"
101+
:name="`Ruler [${nameToShortcut['Ruler']}]`"
102102
:mobileOnlyMenu="true"
103103
:active="active"
104104
:disabled="noCurrentImage || isObliqueLayout"
@@ -112,7 +112,7 @@
112112
<groupable-item v-slot:default="{ active, toggle }" :value="Tools.Crop">
113113
<menu-control-button
114114
icon="mdi-crop"
115-
name="Crop"
115+
:name="`Crop [${nameToShortcut['Crop']}]`"
116116
:active="active"
117117
:disabled="noCurrentImage || isObliqueLayout"
118118
@click="toggle"
@@ -143,6 +143,7 @@ import RulerControls from '@/src/components/RulerControls.vue';
143143
import RectangleControls from '@/src/components/RectangleControls.vue';
144144
import PolygonControls from '@/src/components/PolygonControls.vue';
145145
import WindowLevelControls from '@/src/components/tools/windowing/WindowLevelControls.vue';
146+
import { actionToKey } from '@/src/composables/useKeyboardShortcuts';
146147
147148
export default defineComponent({
148149
components: {
@@ -179,6 +180,23 @@ export default defineComponent({
179180
windowingMenu.value = false;
180181
});
181182
183+
// Rename the computed property to map tool names to their keyboard shortcuts
184+
const nameToShortcut = computed(() => {
185+
const keyMap = actionToKey.value;
186+
return {
187+
'Window & Level': keyMap.windowLevel,
188+
Pan: keyMap.pan,
189+
Zoom: keyMap.zoom,
190+
Crosshairs: keyMap.crosshairs,
191+
Select: keyMap.select,
192+
Paint: keyMap.paint,
193+
Rectangle: keyMap.rectangle,
194+
Polygon: keyMap.polygon,
195+
Ruler: keyMap.ruler,
196+
Crop: keyMap.crop,
197+
};
198+
});
199+
182200
return {
183201
currentTool,
184202
setCurrentTool: toolStore.setCurrentTool,
@@ -188,6 +206,7 @@ export default defineComponent({
188206
paintMenu,
189207
cropMenu,
190208
windowingMenu,
209+
nameToShortcut,
191210
};
192211
},
193212
});

src/components/MenuControlButton.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useDisplay } from 'vuetify';
44
import ControlButton from './ControlButton.vue';
55
66
export default defineComponent({
7-
name: 'MenuToolButton',
7+
name: 'MenuControlButton',
88
props: {
99
icon: { type: String, required: true },
1010
name: { type: String, required: true },

0 commit comments

Comments
 (0)