13 #include <vtkCommand.h>
14 #include <vtkOrientationMarkerWidget.h>
15 #include <vtkRenderer.h>
16 #include <vtkSmartPointer.h>
19 #include <cpPlugins/Interface/Interface.h>
20 #include <cpPlugins/Interface/ProcessObject.h>
21 #include <cpPlugins/Interface/Image.h>
22 #include <cpPlugins/Interface/DataObject.h>
23 #include <cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h>
25 // -------------------------------------------------------------------------
28 class DoubleClickCommand
32 typedef DoubleClickCommand Self;
35 vtkTypeMacro( DoubleClickCommand, vtkCommand );
38 static DoubleClickCommand* New( );
40 void SetMainWnd( MainWnd* wnd );
41 void Execute( vtkObject* caller, unsigned long eid, void* data );
44 DoubleClickCommand( );
45 virtual ~DoubleClickCommand( );
48 // Purposely not implemented
49 DoubleClickCommand( const Self& );
50 Self& operator=( const Self& );
56 // -------------------------------------------------------------------------
62 // -------------------------------------------------------------------------
71 friend class DoubleClickCommand;
76 typedef cpPlugins::Interface::Interface TPluginsInterface;
77 typedef cpPlugins::Interface::Object TPluginObject;
78 typedef cpPlugins::Interface::DataObject TPluginData;
79 typedef cpPlugins::Interface::Image TPluginImage;
80 typedef cpPlugins::Interface::ProcessObject TPlugin;
81 typedef TPlugin::TParameter TParameter;
82 typedef TPlugin::TParameters TParameters;
83 typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR;
85 typedef std::map< std::string, std::string > TStringMap;
90 DoubleClickPluginType,
97 SegmentationPluginCategory = 0,
98 SegmentationFilteringPluginCategory,
99 MeshProcessingPluginCategory,
104 explicit MainWnd( QWidget* parent = 0 );
108 void _LoadApplicationPreferences( );
109 bool _LoadPlugins( );
110 bool _CheckClassesInPlugins( const TStringMap& classes );
111 void _AddPluginActions(
112 const TStringMap& classes, QMenu* menu, const char* method
114 TPluginImage* _LoadImage(
115 const std::string& image_type, const std::string& image_dim
117 void _UpdateEnabledFlags( );
119 bool _ParametersDialog( const TParameters& parameters );
120 void _ExecuteDoubleClickPlugin( const double* pnt );
123 void _JoinSegmentations( );
129 void _SliceMesh( int axis );
130 static void _SliceEventCallback(
132 long unsigned int eventId,
133 void* clientData, void* callData
138 void _triggered_actionReloadPlugins( );
139 void _triggered_actionOpenInputImage( );
140 void _triggered_actionOpenSegmentedImage( );
141 void _triggered_actionSwitchMode( );
143 void _triggered_actionSegmentImage( );
144 void _triggered_actionFilterSegmentation( );
145 void _triggered_actionProcessMesh( );
148 void triggered_aOpenSegmentedImage( );
149 void triggered_aFilterSegmentedImage( );
150 void triggered_aSegmentedImageToMesh( );
151 void triggered_aLoadInputImage( );
152 void triggered_aLoadSegmentedImage( );
158 // Application preferences
159 std::string m_ApplicationPreferencesFile;
160 TStringMap m_ApplicationPreferences;
163 std::string m_PluginsConfigurationFile;
164 TPluginsInterface m_Plugins;
166 // Needed object from plugins
167 TStringMap m_BaseClasses;
168 TStringMap m_SegmentationClasses;
169 TStringMap m_SegmentationFilterClasses;
170 TStringMap m_MeshFilterClasses;
173 std::string m_LastOpenedFile;
176 TPluginImage* m_InputImage;
177 TPluginImage* m_SegmentedImage;
179 // Visualization stuff
183 TPlugin* m_ActivePlugin;
184 QWidget* m_ActiveParameters;
185 Self::PluginType m_ActivePluginType;
186 Self::PluginCategory m_ActivePluginCategory;
188 vtkSmartPointer< DoubleClickCommand > m_DoubleClickCommand;
191 #endif // __MAINWND__H__