Mercurial > hg > orthanc-stone
diff Applications/StoneWebViewer/WebApplication/app.js @ 1815:b81775f1b196
New tools for annotations: segment length, circle, angle and eraser
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 25 May 2021 18:07:52 +0200 |
parents | 634ff8993f6a |
children | 5baaad557d58 |
line wrap: on
line diff
--- a/Applications/StoneWebViewer/WebApplication/app.js Tue May 25 15:52:38 2021 +0200 +++ b/Applications/StoneWebViewer/WebApplication/app.js Tue May 25 18:07:52 2021 +0200 @@ -391,6 +391,8 @@ globalConfiguration: {}, creatingArchive: false, archiveJob: '', + annotationsCurrentAction: stone.WebViewerAction.NONE, // dummy value + annotationsBackupAction: stone.WebViewerAction.NONE, // dummy value modalWarning: false, modalNotDiagnostic: false, @@ -652,6 +654,8 @@ sopInstanceUid: info.sopInstanceUid }; } + + this.ResetAnnotationsAction(); }, ClickSeries: function(seriesIndex) { @@ -749,6 +753,7 @@ } this.FitContent(); + this.ResetAnnotationsAction(); }, UpdateSeriesThumbnail: function(seriesInstanceUid) { @@ -860,9 +865,37 @@ SetMouseButtonActions: function(left, middle, right) { this.mouseActionsVisible = false; + this.annotationsBackupAction = stone.WebViewerAction.NONE; stone.SetMouseButtonActions(left, middle, right); }, + SetAnnotationsAction: function(action) { + if (this.annotationsCurrentAction == action) { + this.ResetAnnotationsAction(); + } else { + this.annotationsCurrentAction = action; + + if (this.annotationsBackupAction == stone.WebViewerAction.NONE) { + this.annotationsBackupAction = stone.GetLeftMouseButtonAction(); + } + + stone.SetMouseButtonActions(action, + stone.GetMiddleMouseButtonAction(), + stone.GetRightMouseButtonAction()); + } + }, + + ResetAnnotationsAction: function() { + if (this.annotationsBackupAction != stone.WebViewerAction.NONE) { + stone.SetMouseButtonActions(this.annotationsBackupAction, + stone.GetMiddleMouseButtonAction(), + stone.GetRightMouseButtonAction()); + } + + this.annotationsBackupAction = stone.WebViewerAction.NONE; + this.annotationsCurrentAction = stone.WebViewerAction.NONE; + }, + LoadOsiriXAnnotations: function(xml, clearPrevious) { if (stone.LoadOsiriXAnnotations(xml, clearPrevious)) { @@ -1037,6 +1070,14 @@ var seriesInstanceUid = args.detail.seriesInstanceUid; that.UpdateIsSeriesComplete(studyInstanceUid, seriesInstanceUid); }); + + window.addEventListener('StoneAnnotationAdded', function() { + that.ResetAnnotationsAction(); + }); + + window.addEventListener('StoneAnnotationRemoved', function() { + that.ResetAnnotationsAction(); + }); } }); @@ -1144,7 +1185,6 @@ - function ParseJsonWithComments(json) { if (typeof(json) == 'string') {