diff --git a/platform/core/src/defaults/hotkeyBindings.js b/platform/core/src/defaults/hotkeyBindings.js index 960ed605d..817f28717 100644 --- a/platform/core/src/defaults/hotkeyBindings.js +++ b/platform/core/src/defaults/hotkeyBindings.js @@ -1,5 +1,8 @@ +/* + * Supported Keys: https://craig.is/killing/mice + */ export default [ - // ~ Global + /** Global */ { commandName: 'incrementActiveViewport', label: 'Next Viewport', @@ -10,8 +13,7 @@ export default [ label: 'Previous Viewport', keys: ['left'], }, - // Supported Keys: https://craig.is/killing/mice - // ~ Cornerstone Extension + /** Viewport */ { commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] }, { commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] }, { commandName: 'invertViewport', label: 'Invert', keys: ['i'] }, @@ -29,11 +31,8 @@ export default [ { commandName: 'scaleDownViewport', label: 'Zoom Out', keys: ['-'] }, { commandName: 'fitViewportToWindow', label: 'Zoom to Fit', keys: ['='] }, { commandName: 'resetViewport', label: 'Reset', keys: ['space'] }, - // clearAnnotations { commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, - // firstImage - // lastImage { commandName: 'previousViewportDisplaySet', label: 'Previous Series', @@ -44,51 +43,58 @@ export default [ label: 'Next Series', keys: ['pageup'], }, - // ~ Cornerstone Tools - { commandName: 'setZoomTool', label: 'Zoom', keys: ['z'] }, - // ~ Window level presets + /** Window level presets */ { - commandName: 'windowLevelPreset1', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 1 }, label: 'W/L Preset 1', keys: ['1'], }, { - commandName: 'windowLevelPreset2', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 2 }, label: 'W/L Preset 2', keys: ['2'], }, { - commandName: 'windowLevelPreset3', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 3 }, label: 'W/L Preset 3', keys: ['3'], }, { - commandName: 'windowLevelPreset4', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 4 }, label: 'W/L Preset 4', keys: ['4'], }, { - commandName: 'windowLevelPreset5', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 5 }, label: 'W/L Preset 5', keys: ['5'], }, { - commandName: 'windowLevelPreset6', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 6 }, label: 'W/L Preset 6', keys: ['6'], }, { - commandName: 'windowLevelPreset7', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 7 }, label: 'W/L Preset 7', keys: ['7'], }, { - commandName: 'windowLevelPreset8', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 8 }, label: 'W/L Preset 8', keys: ['8'], }, { - commandName: 'windowLevelPreset9', + commandName: 'setWindowLevelPreset', + commandOptions: { preset: 9 }, label: 'W/L Preset 9', keys: ['9'], }, diff --git a/platform/viewer/src/hooks/index.js b/platform/viewer/src/hooks/index.js index 54693b08e..8b80a355b 100644 --- a/platform/viewer/src/hooks/index.js +++ b/platform/viewer/src/hooks/index.js @@ -1,5 +1,4 @@ import useDebounce from './useDebounce.js'; import useQuery from './useQuery.js'; -import useHotkeys from './useHotkeys.js'; -export { useDebounce, useQuery, useHotkeys }; +export { useDebounce, useQuery }; diff --git a/platform/viewer/src/hooks/useHotkeys.js b/platform/viewer/src/hooks/useHotkeys.js deleted file mode 100644 index 2ee986e73..000000000 --- a/platform/viewer/src/hooks/useHotkeys.js +++ /dev/null @@ -1,31 +0,0 @@ -import { useEffect, useState } from 'react'; - -/** - * @param {Object} manager HotkeysManager instance - * @param {Object} hotkeys hotkey bindings - * @param {Object} defaultHotkeys default hotkey bindings - */ -const useHotkeys = (manager, hotkeys, defaultHotkeys) => { - const [isLoaded, setIsLoaded] = useState(false); - - useEffect(() => { - if (!hotkeys) { - console.warn('[hotkeys] No bindings defined for hotkeys hook!'); - return; - } - - console.debug('[hotkeys] Setting up hotkeys...'); - manager.setDefaultHotKeys(defaultHotkeys || hotkeys); - manager.setHotkeys(hotkeys); - setIsLoaded(true); - - return () => { - console.debug('[hotkeys] Removing hotkeys...'); - manager.destroy(); - }; - }, [manager, hotkeys, defaultHotkeys]); - - return isLoaded; -} - -export default useHotkeys; diff --git a/platform/viewer/src/routes/Mode/Mode.jsx b/platform/viewer/src/routes/Mode/Mode.jsx index 583f9350c..5bf8e37f2 100644 --- a/platform/viewer/src/routes/Mode/Mode.jsx +++ b/platform/viewer/src/routes/Mode/Mode.jsx @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'; import { DicomMetadataStore } from '@ohif/core'; import { DragAndDropProvider, ImageViewerProvider } from '@ohif/ui'; // -import { useQuery, useHotkeys } from '@hooks'; +import { useQuery } from '@hooks'; import ViewportGrid from '@components/ViewportGrid'; import Compose from './Compose'; @@ -17,7 +17,6 @@ export default function ModeRoute({ servicesManager, hotkeysManager }) { - const isHotkeysLoaded = useHotkeys(hotkeysManager, mode.hotkeys); // Parse route params/querystring const query = useQuery(); const queryStudyInstanceUIDs = query.get('StudyInstanceUIDs'); @@ -28,7 +27,7 @@ export default function ModeRoute({ ? StudyInstanceUIDs : [StudyInstanceUIDs]; - const { extensions, sopClassHandlers } = mode; + const { extensions, sopClassHandlers, hotkeys } = mode; if (dataSourceName === undefined) { dataSourceName = extensionManager.defaultDataSourceName; @@ -76,6 +75,22 @@ export default function ModeRoute({ return ViewportGrid({ ...props, dataSource }); } + useEffect(() => { + if (!hotkeys) { + console.warn('[hotkeys] No bindings defined for hotkeys hook!'); + return; + } + + console.debug('[hotkeys] Setting up hotkeys...'); + hotkeysManager.setDefaultHotKeys(hotkeys); + hotkeysManager.setHotkeys(hotkeys); + + return () => { + console.debug('[hotkeys] Removing hotkeys...'); + hotkeysManager.destroy(); + }; + }, []); + useEffect(() => { route.init({ servicesManager, extensionManager }); }, [ @@ -85,8 +100,7 @@ export default function ModeRoute({ route, servicesManager, extensionManager, - hotkeysManager, - isHotkeysLoaded + hotkeysManager ]); // This queries for series, but... What does it do with them?