Skip to content

Commit b242a02

Browse files
authored
Merge pull request #800 from Kitware/paint-hotkeys
Paint hotkeys: eraser and brush size
2 parents 76977d4 + ab01aa0 commit b242a02

7 files changed

Lines changed: 49 additions & 10 deletions

File tree

src/components/AboutBox.vue

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,16 @@
127127
https://github.com/Kitware/VolView/issues
128128
</a>
129129
</li>
130+
<li>
131+
<span>Submit feedback: </span>
132+
<a
133+
rel="noopener noreferrer"
134+
target="_blank"
135+
href="https://volview.kitware.com/feedback/"
136+
>
137+
https://volview.kitware.com/feedback/
138+
</a>
139+
</li>
130140
</ul>
131141
<h2>Version Info</h2>
132142
<v-divider class="mb-2" />

src/components/AppBar.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import CloseableDialog from '@/src/components/CloseableDialog.vue';
55
import AboutBox from '@/src/components/AboutBox.vue';
66
import VolViewFullLogo from '@/src/components/icons/VolViewFullLogo.vue';
77
import VolViewLogo from '@/src/components/icons/VolViewLogo.vue';
8+
import { useKeyboardShortcutsStore } from '@/src/store/keyboard-shortcuts';
89
910
const emit = defineEmits(['click:left-menu']);
1011
1112
const { mobile } = useDisplay();
1213
const aboutBoxDialog = ref(false);
14+
const keyboardStore = useKeyboardShortcutsStore();
1315
</script>
1416

1517
<template>
@@ -24,12 +26,11 @@ const aboutBoxDialog = ref(false);
2426
icon
2527
:rounded="0"
2628
class="toolbar-button"
27-
href="https://volview.kitware.com/feedback/"
28-
target="_blank"
29+
@click="keyboardStore.settingsOpen = !keyboardStore.settingsOpen"
2930
>
30-
<v-icon icon="mdi-comment-question-outline"></v-icon>
31+
<v-icon icon="mdi-keyboard"></v-icon>
3132
<v-tooltip activator="parent" location="bottom">
32-
Ask Question/Submit Feedback
33+
Keyboard Shortcuts
3334
</v-tooltip>
3435
</v-btn>
3536
<v-btn

src/components/ControlsModal.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<closeable-dialog v-model="keyboardStore.settingsOpen">
2+
<closeable-dialog v-model="keyboardStore.settingsOpen" :close-offset-x="24">
33
<v-card class="pa-4">
44
<div class="text-h4 pb-2">View Controls</div>
55
<v-table>

src/components/tools/paint/PaintWidget2D.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export default defineComponent({
174174
// Brush size scroll wheel control with customizable modifier key
175175
const keys = useMagicKeys();
176176
const enableBrushSizeAdjustment = computed(
177-
() => keys[actionToKey.value.brushSize].value
177+
() => keys[actionToKey.value.brushSizeModifier].value
178178
);
179179
180180
const handleWheelEvent = (event: WheelEvent) => {

src/composables/actions.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { useKeyboardShortcutsStore } from '../store/keyboard-shortcuts';
99
import { useCurrentImage } from './useCurrentImage';
1010
import { useSliceConfig } from './useSliceConfig';
1111
import { useDatasetStore } from '../store/datasets';
12+
import { usePaintToolStore } from '../store/tools/paint';
13+
import { PaintMode } from '../core/tools/paint';
1214

1315
const applyLabelOffset = (offset: number) => () => {
1416
const toolToStore = {
@@ -35,6 +37,11 @@ const setTool = (tool: Tools) => () => {
3537
useToolStore().setCurrentTool(tool);
3638
};
3739

40+
const startPaintInMode = (mode: PaintMode) => () => {
41+
useToolStore().setCurrentTool(Tools.Paint);
42+
usePaintToolStore().setMode(mode);
43+
};
44+
3845
const showKeyboardShortcuts = () => {
3946
const keyboardStore = useKeyboardShortcutsStore();
4047
keyboardStore.settingsOpen = !keyboardStore.settingsOpen;
@@ -61,13 +68,22 @@ const deleteCurrentImage = () => () => {
6168
}
6269
};
6370

71+
const changeBrushSize = (delta: number) => () => {
72+
const paintStore = usePaintToolStore();
73+
const newSize = Math.max(1, paintStore.brushSize + delta);
74+
paintStore.setBrushSize(newSize);
75+
};
76+
6477
export const ACTION_TO_FUNC = {
6578
windowLevel: setTool(Tools.WindowLevel),
6679
pan: setTool(Tools.Pan),
6780
zoom: setTool(Tools.Zoom),
6881
ruler: setTool(Tools.Ruler),
69-
paint: setTool(Tools.Paint),
70-
brushSize: NOOP, // act as modifier key rather than immediate effect, so no-op
82+
paint: startPaintInMode(PaintMode.CirclePaint),
83+
paintEraser: startPaintInMode(PaintMode.Erase),
84+
brushSizeModifier: NOOP, // act as modifier key rather than immediate effect, so no-op
85+
decreaseBrushSize: changeBrushSize(-1),
86+
increaseBrushSize: changeBrushSize(1),
7187
rectangle: setTool(Tools.Rectangle),
7288
crosshairs: setTool(Tools.Crosshairs),
7389
temporaryCrosshairs: NOOP, // behavior implemented elsewhere

src/config.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,10 @@ export const ACTION_TO_KEY = {
208208
zoom: 'z',
209209
ruler: 'm',
210210
paint: 'p',
211-
brushSize: 'ctrl',
211+
paintEraser: 'e',
212+
brushSizeModifier: 'ctrl',
213+
decreaseBrushSize: '[',
214+
increaseBrushSize: ']',
212215
rectangle: 'r',
213216
crosshairs: 'c',
214217
temporaryCrosshairs: 'shift-c',

src/constants.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,18 @@ export const ACTIONS = {
4040
paint: {
4141
readable: 'Activate Paint tool',
4242
},
43-
brushSize: {
43+
paintEraser: {
44+
readable: 'Activate Paint tool with eraser',
45+
},
46+
brushSizeModifier: {
4447
readable: 'Change brush size by holding key and scrolling',
4548
},
49+
decreaseBrushSize: {
50+
readable: 'Decrease brush size',
51+
},
52+
increaseBrushSize: {
53+
readable: 'Increase brush size',
54+
},
4655
rectangle: {
4756
readable: 'Activate Rectangle tool',
4857
},

0 commit comments

Comments
 (0)