diff Applications/Samples/SimpleViewerApplication.h @ 285:3c190e2bb3af am-2

refactoring: ApplicationRunner + app hierarchy
author am@osimis.io
date Tue, 28 Aug 2018 15:26:46 +0200
parents 300d8b8c48b3
children 2038d76bf13f
line wrap: on
line diff
--- a/Applications/Samples/SimpleViewerApplication.h	Tue Aug 28 11:09:37 2018 +0200
+++ b/Applications/Samples/SimpleViewerApplication.h	Tue Aug 28 15:26:46 2018 +0200
@@ -24,6 +24,7 @@
 #include "SampleApplicationBase.h"
 
 #include "../../Framework/Layers/OrthancFrameLayerSource.h"
+#include "../../Framework/Layers/CircleMeasureTracker.h"
 #include "../../Framework/Layers/LineMeasureTracker.h"
 #include "../../Framework/Widgets/LayerWidget.h"
 #include "../../Framework/Widgets/LayoutWidget.h"
@@ -110,7 +111,14 @@
         {
           if (button == MouseButton_Left)
           {
-            return new LineMeasureTracker(statusBar, dynamic_cast<LayerWidget&>(widget).GetSlice(), x, y, 255, 0, 0, 10);
+            if (application_.currentTool_ == Tools_LineMeasure)
+            {
+              return new LineMeasureTracker(statusBar, dynamic_cast<LayerWidget&>(widget).GetSlice(), x, y, 255, 0, 0, 10);
+            }
+            else if (application_.currentTool_ == Tools_CircleMeasure)
+            {
+              return new CircleMeasureTracker(statusBar, dynamic_cast<LayerWidget&>(widget).GetSlice(), x, y, 255, 0, 0, 10);
+            }
           }
           return NULL;
         }
@@ -138,21 +146,6 @@
                                 KeyboardModifiers modifiers,
                                 IStatusBar* statusBar)
         {
-          //          int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
-          
-          //          switch (direction)
-          //          {
-          //            case MouseWheelDirection_Up:
-          //              application_.OffsetSlice(-scale);
-          //              break;
-
-          //            case MouseWheelDirection_Down:
-          //              application_.OffsetSlice(scale);
-          //              break;
-
-          //            default:
-          //              break;
-          //          }
         }
 
         virtual void KeyPressed(WorldSceneWidget& widget,
@@ -172,7 +165,12 @@
         }
       };
 
+      enum Tools {
+        Tools_LineMeasure,
+        Tools_CircleMeasure
+      };
 
+      Tools                           currentTool_;
       std::unique_ptr<MainWidgetInteractor> mainWidgetInteractor_;
       std::unique_ptr<ThumbnailInteractor>  thumbnailInteractor_;
       LayoutWidget*                   mainLayout_;
@@ -186,18 +184,17 @@
       OrthancStone::WidgetViewport*   wasmViewport2_;
 
       IStatusBar*                     statusBar_;
-      unsigned int                    slice_;
       std::unique_ptr<SmartLoader>    smartLoader_;
       std::unique_ptr<OrthancApiClient>      orthancApiClient_;
 
     public:
       SimpleViewerApplication(MessageBroker& broker) :
         IObserver(broker),
+        currentTool_(Tools_LineMeasure),
         mainLayout_(NULL),
         currentInstanceIndex_(0),
         wasmViewport1_(NULL),
-        wasmViewport2_(NULL),
-        slice_(0)
+        wasmViewport2_(NULL)
       {
         DeclareIgnoredMessage(MessageType_Widget_ContentChanged);
         DeclareHandledMessage(MessageType_Widget_GeometryChanged);
@@ -313,7 +310,7 @@
           // if this is the first thumbnail loaded, load the first instance in the mainWidget
           if (mainWidget_->GetLayerCount() == 0)
           {
-              mainWidget_->AddLayer(smartLoader_->GetFrame(instancesIdsPerSeriesId_[seriesId][0], 0));
+            mainWidget_->AddLayer(smartLoader_->GetFrame(instancesIdsPerSeriesId_[seriesId][0], 0));
           }
         }
       }
@@ -362,10 +359,28 @@
       }
 #endif
 
+
+
       void SelectSeriesInMainViewport(const std::string& seriesId)
       {
         mainWidget_->ReplaceLayer(0, smartLoader_->GetFrame(instancesIdsPerSeriesId_[seriesId][0], 0));
       }
+
+      virtual void OnPushButton1Clicked() {}
+      virtual void OnPushButton2Clicked() {}
+      virtual void OnTool1Clicked() { currentTool_ = Tools_LineMeasure;}
+      virtual void OnTool2Clicked() { currentTool_ = Tools_CircleMeasure;}
+
+      virtual void GetButtonNames(std::string& pushButton1,
+                                  std::string& pushButton2,
+                                  std::string& tool1,
+                                  std::string& tool2
+                                  ) {
+        tool1 = "line";
+        tool2 = "circle";
+        pushButton1 = "action1";
+        pushButton2 = "action2";
+      }
     };