#include <QWidget>
// vtk stuff
+#include <vtkCommand.h>
#include <vtkOrientationMarkerWidget.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <cpPlugins/Interface/DataObject.h>
#include <cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h>
+// -------------------------------------------------------------------------
+class MainWnd;
+
+class DoubleClickCommand
+ : public vtkCommand
+{
+public:
+ typedef DoubleClickCommand Self;
+
+public:
+ vtkTypeMacro( DoubleClickCommand, vtkCommand );
+
+public:
+ static DoubleClickCommand* New( );
+
+ void SetMainWnd( MainWnd* wnd );
+ void Execute( vtkObject* caller, unsigned long eid, void* data );
+
+protected:
+ DoubleClickCommand( );
+ virtual ~DoubleClickCommand( );
+
+private:
+ // Purposely not implemented
+ DoubleClickCommand( const Self& );
+ Self& operator=( const Self& );
+
+protected:
+ MainWnd* m_MainWnd;
+};
+
// -------------------------------------------------------------------------
namespace Ui
{
Q_OBJECT;
public:
+ friend class DoubleClickCommand;
+
+ typedef MainWnd Self;
+
// Plugins types
typedef cpPlugins::Interface::Interface TPluginsInterface;
typedef cpPlugins::Interface::Object TPluginObject;
typedef cpPlugins::Interface::DataObject TPluginData;
typedef cpPlugins::Interface::Image TPluginImage;
typedef cpPlugins::Interface::ProcessObject TPlugin;
+ typedef TPlugin::TParameter TParameter;
typedef TPlugin::TParameters TParameters;
typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR;
typedef std::map< std::string, std::string > TStringMap;
+ enum PluginType
+ {
+ GlobalPluginType = 0,
+ DoubleClickPluginType,
+ SpherePluginType,
+ NonePluginType
+ };
+
+ enum PluginCategory
+ {
+ SegmentationPluginCategory = 0,
+ SegmentationFilteringPluginCategory,
+ MeshProcessingPluginCategory,
+ NonePluginCategory
+ };
+
public:
explicit MainWnd( QWidget* parent = 0 );
virtual ~MainWnd( );
void _UpdateEnabledFlags( );
bool _ParametersDialog( const TParameters& parameters );
+ void _ExecuteDoubleClickPlugin( const double* pnt );
+
+ template< class P >
+ void _JoinSegmentations( );
/* TODO
template< class I >
// Active plugin
TPlugin* m_ActivePlugin;
QWidget* m_ActiveParameters;
+ Self::PluginType m_ActivePluginType;
+ Self::PluginCategory m_ActivePluginCategory;
+
+ vtkSmartPointer< DoubleClickCommand > m_DoubleClickCommand;
};
#endif // __MAINWND__H__