/*========================================================================= Program: wxMaracas Module: $RCSfile: wxMaracasIRMView.h,v $ Language: C++ Date: $Date: 2009/05/04 07:35:42 $ Version: $Revision: 1.3 $ Copyright: (c) 2002, 2003 License: This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef __wxMaracasIRMViewPanelH__ #define __wxMaracasIRMViewPanelH__ #include #include #include "wx/aui/aui.h" #include #include "marTypes.h" #include "vtkProp3D.h" #include "wxMaracasIRMViewManager.h" class wxMaracasIRMViewPanel : public wxPanel{ public: wxMaracasIRMViewPanel(wxWindow* parent, int propid) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){ createPanel(); _propid = propid; } //virtual ~wxMaracasIRMViewPanel(); virtual void createPanel(){ show = false; /*wxBoxSizer* sizerButtons = new wxBoxSizer(wxVERTICAL); wxButton* b = new wxButton(this, -1, wxString(_T("-")), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxString(_T("-"))); Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasIRMViewPanel::onActionButtonPressedHide); wxButton* b1 = new wxButton(this, -1, wxString(_T("-")), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxString(_T("x"))); Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasIRMViewPanel::onActionButtonPressedEliminate); sizerButtons->Add(b, wxFIXED_MINSIZE); sizerButtons->Add(b1, wxFIXED_MINSIZE);*/ sizercontrols = new wxBoxSizer(wxVERTICAL); wxBoxSizer* sizerpanel = new wxBoxSizer(wxHORIZONTAL); //sizerpanel->Add(sizerButtons,wxGROW); sizerpanel->Add(sizercontrols,wxGROW); this->SetSizer(sizerpanel, true); this->SetAutoLayout( true ); } /** ** Adds a new control to the panel (sizer, radiob, etc) **/ virtual void addControl(wxWindow* win){ if(sizercontrols!=NULL){ sizercontrols->Add(win, wxGROW); } } /** ** Adds a new control to the panel (sizer, radiob, etc) **/ virtual void addControl(wxSizer* sizer){ if(sizercontrols!=NULL){ sizercontrols->Add(sizer, wxGROW); } } /** ** Hides or show the controls in the panel **/ virtual void onActionButtonPressedHide( wxCommandEvent& event ){ wxList list = sizercontrols->GetChildren(); int i; for(i=0; iShow(i,show); } show = !show; sizercontrols->Layout(); this->Layout(); } /** ** The user must implement this function to remove the panel from the **/ //virtual void onActionButtonPressedEliminate( wxCommandEvent& event )=0; /** ** The user must implement this function to add the necessary controls to the panel **/ virtual void createControls( )=0; /** ** returns the id of the panel **/ int getPropId(){ return _propid; } private: wxBoxSizer* sizercontrols; bool show; protected: int _propid; }; class creaMaracasVisu_EXPORT wxMaracasIRMView : public wxPanel { public: wxMaracasIRMView( wxWindow* parent, std::string path); ~wxMaracasIRMView( ); static wxMaracasIRMView* getInstance(wxWindow* parent,std::string path=""); static wxMaracasIRMView* getInstance(); void setRenderer(vtkRenderer* renderer); void changeOpacity(int propid, int value); void changeIsoValue(int propid, double value); void addRemoveActor(int propid, bool addremove); void changeColor(int propid, double red, double green, double blue); void addProp3D(vtkProp3D* prop3D, std::string dataname=""); void addPropMHD(vtkImageData* imgdata, std::string dataname=""); void loadProp3D(wxString filename, wxString dataname); void loadPropMHD(wxString filename, wxString dataname); void onLoadImageFile(); void addIRMViewPanel(wxMaracasIRMViewPanel* irmview, std::string dataname=""); std::string getPath(); void deleteActor(int propid); private: static wxMaracasIRMView* instance; wxMaracasIRMViewManager* irmmanager; wxAuiManager* wxauimanager; void createFileChooser(); std::string _path; }; class wxMaracasIRMViewProp3D : public wxMaracasIRMViewPanel{ public: wxMaracasIRMViewProp3D(wxWindow* parent, int propid); ~wxMaracasIRMViewProp3D(); virtual void createControls(); void onOpacityRelease(wxScrollEvent& event ); void onCheckBoxChange(wxCommandEvent& event); void onColorChange(wxCommandEvent& event); private: wxCheckBox* checkbox; wxSlider* opacity; wxBitmapButton* _colorchoose; }; class wxMaracasIRMViewProp3DMHD : public wxMaracasIRMViewProp3D{ public: wxMaracasIRMViewProp3DMHD(wxWindow* parent, int propid); ~wxMaracasIRMViewProp3DMHD(); void onIsoValueRelease(wxScrollEvent& event ); void createControls(int maxisovalue); private: wxSlider* isovalue; int _propid; }; class ToolBar : public wxToolBar{ public: ToolBar(wxWindow * parent,std::string iconsdir); ~ToolBar(void); void onLoadImageFile(wxCommandEvent& event); private: DECLARE_EVENT_TABLE() }; #endif