From c30cdbe6254f8bcd814db91bf7ece439c8fa8ce8 Mon Sep 17 00:00:00 2001 From: Gustavo Lelis Date: Mon, 20 Aug 2018 17:35:27 -0300 Subject: [PATCH] - Fixed by setting all tools to passive mode after instantiate then all - Fixed the default tool that was not being set correctly. - Fixed some callouts done by Erik into my PR related with keeping old tool list --- .../client/lib/getImageDataUrl.js | 4 +- .../imageViewerViewport.js | 2 +- .../ohif-viewerbase/client/lib/hotkeyUtils.js | 3 +- .../ohif-viewerbase/client/lib/toolManager.js | 62 ++++++------------- .../toolbarSection/toolbarSection.js | 4 +- 5 files changed, 25 insertions(+), 50 deletions(-) diff --git a/Packages/ohif-measurements/client/lib/getImageDataUrl.js b/Packages/ohif-measurements/client/lib/getImageDataUrl.js index 04b7f012b..d3a6e6fa7 100644 --- a/Packages/ohif-measurements/client/lib/getImageDataUrl.js +++ b/Packages/ohif-measurements/client/lib/getImageDataUrl.js @@ -43,7 +43,7 @@ OHIF.measurements.getImageDataUrl = ({ }); cornerstoneTools.addToolState(element, measurement.toolType, state); - cornerstoneTools[measurement.toolType].enable(element); + OHIF.viewerbase.toolManager.cTools.setToolEnabled(measurement.toolType); } // Set the viewport voi if present @@ -59,7 +59,7 @@ OHIF.measurements.getImageDataUrl = ({ // Disable the tool and clear the measurement state if a measurement was given if (measurement) { - cornerstoneTools[measurement.toolType].disable(element); + OHIF.viewerbase.toolManager.cTools.setToolDisabled(measurement.toolType); cornerstoneTools.clearToolState(element, measurement.toolType); } diff --git a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js index 3b396c8a5..46cd97a63 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js +++ b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js @@ -284,7 +284,7 @@ const loadDisplaySetIntoViewport = (data, templateData) => { // Use the tool manager to enable the currently active tool for this // newly rendered element const activeTool = toolManager.getActiveTool(); - toolManager.cTools.setToolActive(element, activeTool); + toolManager.setActiveTool(activeTool); // Define a function to run whenever the Cornerstone viewport is rendered // (e.g. following a change of window or zoom) diff --git a/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js b/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js index 16cde637b..c88266412 100644 --- a/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js +++ b/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js @@ -111,11 +111,12 @@ Meteor.startup(function() { zoom: 'Zoom', angle: 'Angle Measurement', probe: 'Pixel Probe', + stackScroll: 'Stack Scroll', ellipticalRoi: 'Elliptical ROI', rectangleRoi: 'Rectangle ROI', magnify: 'Magnify', arrowAnnotate: 'Annotate', - stackScrollMouseWheel: 'Scroll Stack', + stackScrollMouseWheel: 'Scroll Stack Mouse Wheel', pan: 'Pan', length: 'Length Measurement', wwwcRegion: 'W/L by Region', diff --git a/Packages/ohif-viewerbase/client/lib/toolManager.js b/Packages/ohif-viewerbase/client/lib/toolManager.js index ec5a87b1e..9e2622483 100644 --- a/Packages/ohif-viewerbase/client/lib/toolManager.js +++ b/Packages/ohif-viewerbase/client/lib/toolManager.js @@ -12,7 +12,7 @@ import { textMarkerUtils } from './textMarkerUtils'; import { isTouchDevice } from './helpers/isTouchDevice'; let defaultTool = { - left: 'wwwcTool', + left: 'wwwc', right: 'zoom', middle: 'pan' }; @@ -29,10 +29,10 @@ export const toolManager = { init() { // if a default tool is globally defined, make it the default tool... if (OHIF.viewer.defaultTool) { - this.setDefaultTool(OHIF.viewer.defaultTool); + toolManager.setDefaultTool(OHIF.viewer.defaultTool); } - this.cTools = cornerstoneTools.init(); + toolManager.cTools = cornerstoneTools.init(); tools = [ 'length', @@ -41,9 +41,10 @@ export const toolManager = { 'wwwc', 'zoom', 'pan', - 'probe', + 'dragProbe', 'magnify', 'crosshairs', + 'stackScroll', 'stackScrollMouseWheel', 'zoomTouchPinch', 'zoomMouseWheel', @@ -91,14 +92,20 @@ export const toolManager = { return tools; }, - setActiveToolForElement(toolName) { - this.setAllToolsPassive(); - this.cTools.setToolActive(toolName, { mouseButtonMask: 1 }); + setActiveTool(toolName, button = 1) { + toolManager.setAllToolsPassive(); + toolManager.cTools.setToolActive(toolName, { mouseButtonMask: button }); + + // TODO: add the active tool with the correct button + activeTool['left'] = toolName; + + // Enable reactivity + Session.set('ToolManagerActiveToolUpdated', Random.id()); }, setAllToolsPassive() { - this.cTools.store.state.tools.forEach((tool) => { - this.cTools.setToolPassive(tool.name) + toolManager.cTools.store.state.tools.forEach((tool) => { + toolManager.cTools.setToolPassive(tool.name) }) }, @@ -106,43 +113,10 @@ export const toolManager = { Array.from(tools).forEach(toolName => { const apiTool = cornerstoneTools[`${toolName}Tool`]; if (apiTool) { - this.cTools.addTool(apiTool); + toolManager.cTools.addTool(apiTool); } }); - }, - - setActiveTool(toolId, elements, button) { - let $elements; - if (!elements || !elements.length) { - $elements = $('.imageViewerViewport'); - } else { - $elements = $(elements); - } - - const checkElementEnabled = function(allElementsEnabled, element) { - try { - cornerstone.getEnabledElement(element); - - return allElementsEnabled; - } catch (error) { - return true; - } - }; - - - // Otherwise, set the active tool for all viewport elements - $elements.each((index, element) => { - if (checkElementEnabled(element) === false) { - return; - } - - toolManager.setActiveToolForElement(toolId, element); - }); - - activeTool['left'] = toolId; - - // Enable reactivity - Session.set('ToolManagerActiveToolUpdated', Random.id()); + toolManager.setAllToolsPassive(); }, getNearbyToolData(element, coords, toolTypes) { diff --git a/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js b/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js index 140a79f74..5d17e82dc 100644 --- a/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js +++ b/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js @@ -68,7 +68,7 @@ Template.toolbarSection.helpers({ }); extraTools.push({ - id: 'probe', + id: 'dragProbe', title: 'Probe', classes: 'imageViewerTool', iconClasses: 'fa fa-dot-circle-o' @@ -126,7 +126,7 @@ Template.toolbarSection.helpers({ const buttonData = []; buttonData.push({ - id: 'stackScrollMouseWheel', + id: 'stackScroll', title: 'Stack Scroll', classes: 'imageViewerTool', iconClasses: 'fa fa-bars'