-
-
diff --git a/Packages/ohif-viewerbase/client/components/viewer/playClipButton/playClipButton.js b/Packages/ohif-viewerbase/client/components/viewer/playClipButton/playClipButton.js
deleted file mode 100644
index a9196ec70..000000000
--- a/Packages/ohif-viewerbase/client/components/viewer/playClipButton/playClipButton.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Template } from 'meteor/templating';
-import { viewportUtils } from '../../../lib/viewportUtils';
-
-Template.playClipButton.helpers({
- isPlaying: function() {
- return viewportUtils.isPlaying();
- },
- disableButton() {
- return viewportUtils.hasMultipleFrames();
- }
-});
diff --git a/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js b/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js
index 09467215c..2fa120e68 100644
--- a/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js
+++ b/Packages/ohif-viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js
@@ -79,18 +79,24 @@ Template.toolbarSectionButton.helpers({
svgLink() {
const instance = Template.instance();
const activeToolId = Session.get('ToolManagerActiveTool');
- return instance.getActiveToolSubProperty('svgLink', activeToolId);
+ const svgLink = instance.getActiveToolSubProperty('svgLink', activeToolId);
+ return _.isFunction(svgLink) ? svgLink() : svgLink;
},
iconClasses() {
const instance = Template.instance();
const activeToolId = Session.get('ToolManagerActiveTool');
- return instance.getActiveToolSubProperty('iconClasses', activeToolId);
+ const iconClasses = instance.getActiveToolSubProperty('iconClasses', activeToolId);
+ return _.isFunction(iconClasses) ? iconClasses() : iconClasses;
},
disableButton() {
+ Session.get('activeViewport');
+ Session.get('LayoutManagerUpdated');
const instance = Template.instance();
- return instance.data.disableFunction && instance.data.disableFunction();
+ const isCommandDisabled = OHIF.commands.isDisabled(instance.data.id);
+ const isFunctionDisabled = instance.data.disableFunction && instance.data.disableFunction();
+ return isCommandDisabled || isFunctionDisabled;
}
});
diff --git a/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js b/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js
index db6b7f5c3..1f3910fc1 100644
--- a/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js
+++ b/Packages/ohif-viewerbase/client/lib/hotkeyUtils.js
@@ -1,4 +1,5 @@
import { Meteor } from 'meteor/meteor';
+import { Session } from 'meteor/session';
import { $ } from 'meteor/jquery';
import { _ } from 'meteor/underscore';
import { OHIF } from 'meteor/ohif:core';
@@ -55,6 +56,12 @@ Meteor.startup(function() {
const contextName = 'viewer';
OHIF.commands.createContext(contextName);
+ // Create a function that returns true if the active viewport is empty
+ const isActiveViewportEmpty = () => {
+ const activeViewport = Session.get('activeViewport') || 0;
+ return $('.imageViewerViewport').eq(activeViewport).hasClass('empty');
+ };
+
// Functions to register the tool switching commands
const registerToolCommands = map => _.each(map, (commandName, toolId) => {
OHIF.commands.register(contextName, toolId, {
@@ -85,7 +92,8 @@ Meteor.startup(function() {
const registerViewportCommands = map => _.each(map, (commandName, commandId) => {
OHIF.commands.register(contextName, commandId, {
name: commandName,
- action: viewportUtils[commandId]
+ action: viewportUtils[commandId],
+ disabled: isActiveViewportEmpty
});
});
@@ -99,8 +107,6 @@ Meteor.startup(function() {
flipV: 'Flip vertically',
rotateR: 'Rotate right',
rotateL: 'Rotate left',
- toggleCinePlay: 'Play/Pause',
- toggleCineDialog: 'CINE dialog',
resetViewport: 'Reset',
clearTools: 'Clear'
});
@@ -124,7 +130,6 @@ Meteor.startup(function() {
});
// Register scrolling commands
- const isActiveViewportEmpty = () => $('.viewportContainer.active .imageViewerViewport').hasClass('empty');
OHIF.commands.set(contextName, {
scrollDown: {
name: 'Scroll down',
@@ -147,19 +152,21 @@ Meteor.startup(function() {
// Register viewport navigation commands
OHIF.commands.set(contextName, {
previousDisplaySet: {
- name: 'Scroll down',
- action: () => OHIF.viewerbase.layoutManager.moveDisplaySets(false)
+ name: 'Previous display set',
+ action: () => OHIF.viewerbase.layoutManager.moveDisplaySets(false),
+ disabled: () => !OHIF.viewerbase.layoutManager.canMoveDisplaySets(false)
},
nextDisplaySet: {
- name: 'Scroll up',
- action: () => OHIF.viewerbase.layoutManager.moveDisplaySets(true)
+ name: 'Next display set',
+ action: () => OHIF.viewerbase.layoutManager.moveDisplaySets(true),
+ disabled: () => !OHIF.viewerbase.layoutManager.canMoveDisplaySets(true)
},
nextPanel: {
- name: 'Scroll to first image',
+ name: 'Next panel',
action: () => panelNavigation.loadNextActivePanel()
},
previousPanel: {
- name: 'Scroll to last image',
+ name: 'Previous panel',
action: () => panelNavigation.loadPreviousActivePanel()
}
}, true);
@@ -176,6 +183,16 @@ Meteor.startup(function() {
const $dicomTags = $('.imageViewerViewportOverlay .dicomTag');
$dicomTags.toggle($dicomTags.eq(0).css('display') === 'none');
}
+ },
+ toggleCinePlay: {
+ name: 'Play/Pause',
+ action: viewportUtils.toggleCinePlay,
+ disabled: OHIF.viewerbase.viewportUtils.hasMultipleFrames
+ },
+ toggleCineDialog: {
+ name: 'CINE dialog',
+ action: viewportUtils.toggleCineDialog,
+ disabled: OHIF.viewerbase.viewportUtils.hasMultipleFrames
}
}, true);
diff --git a/Packages/ohif-viewerbase/package.js b/Packages/ohif-viewerbase/package.js
index 05a82eb91..6135750d0 100644
--- a/Packages/ohif-viewerbase/package.js
+++ b/Packages/ohif-viewerbase/package.js
@@ -171,9 +171,6 @@ Package.onUse(function(api) {
api.addFiles('client/components/viewer/toolbarSectionTools/toolbarSectionTools.js', 'client');
api.addFiles('client/components/viewer/toolbarSectionTools/toolbarSectionTools.styl', 'client');
- api.addFiles('client/components/viewer/playClipButton/playClipButton.html', 'client');
- api.addFiles('client/components/viewer/playClipButton/playClipButton.js', 'client');
-
api.addFiles('client/components/viewer/confirmDeleteDialog/confirmDeleteDialog.html', 'client');
api.addFiles('client/components/viewer/confirmDeleteDialog/confirmDeleteDialog.js', 'client');
api.addFiles('client/components/viewer/confirmDeleteDialog/confirmDeleteDialog.styl', 'client');
@@ -182,9 +179,6 @@ Package.onUse(function(api) {
api.addFiles('client/components/viewer/textMarkerDialogs/textMarkerDialogs.js', 'client');
api.addFiles('client/components/viewer/textMarkerDialogs/textMarkerDialogs.styl', 'client');
- api.addFiles('client/components/viewer/displaySetNavigation/displaySetNavigation.html', 'client');
- api.addFiles('client/components/viewer/displaySetNavigation/displaySetNavigation.js', 'client');
-
api.addFiles('client/components/viewer/studySeriesQuickSwitch/studySeriesQuickSwitch.html', 'client');
api.addFiles('client/components/viewer/studySeriesQuickSwitch/studySeriesQuickSwitch.styl', 'client');
api.addFiles('client/components/viewer/studySeriesQuickSwitch/studySeriesQuickSwitch.js', 'client');
diff --git a/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js b/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js
index 923d46e88..2238a6f74 100644
--- a/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js
+++ b/StandaloneViewer/StandaloneViewer/client/components/toolbarSection/toolbarSection.js
@@ -143,23 +143,23 @@ Template.toolbarSection.helpers({
id: 'previousDisplaySet',
title: 'Previous',
classes: 'imageViewerCommand',
- buttonTemplateName: 'displaySetNavigation',
- isNext: false
+ iconClasses: 'fa fa-toggle-up fa-fw'
});
buttonData.push({
id: 'nextDisplaySet',
title: 'Next',
classes: 'imageViewerCommand',
- buttonTemplateName: 'displaySetNavigation',
- isNext: true
+ iconClasses: 'fa fa-toggle-down fa-fw'
});
+ const { isPlaying } = OHIF.viewerbase.viewportUtils;
buttonData.push({
id: 'toggleCinePlay',
- title: 'Toggle CINE Play',
+ title: () => isPlaying() ? 'Stop' : 'Play',
classes: 'imageViewerCommand',
- buttonTemplateName: 'playClipButton'
+ iconClasses: () => ('fa fa-fw ' + (isPlaying() ? 'fa-stop' : 'fa-play')),
+ active: isPlaying
});
buttonData.push({
@@ -167,7 +167,7 @@ Template.toolbarSection.helpers({
title: 'CINE',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-youtube-play',
- disableFunction: OHIF.viewerbase.viewportUtils.hasMultipleFrames
+ active: () => $('#cineDialog').is(':visible')
});
}