//----------------------------------------------------------------------------------------------------------------
#include "wxContourViewPanel.h"
-
+#include "wxContourMainFrame.h"
//----------------------------------------------------------------------------------------------------------------
// Other includes
//----------------------------------------------------------------------------------------------------------------
-#include "ConceptDataWrap.h"
+//#include "ConceptDataWrap.h"
+//this should be eliminated at some point
+//#include "wxContourEventHandler.h"
//----------------------------------------------------------------------------------------------------------------
// Class implementation
//----------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
// Constructors & Destructors
//------------------------------------------------------------------------------------------------------------
-
- wxContourViewPanel :: wxContourViewPanel ( vtkImageData * theShowingImage, wxWindow *parent, const wxPoint& pos, const wxSize& size,long style, int vertStart, int vertEnd, int horzStart, int horzEnd )
- //:wxScrolledWindow(parent, -1, pos, size, style)
- :wxPanel(parent, -1, pos, size, style)
/*{
showingVID = theShowingImage;
SetBackgroundColour(wxColour(255,0,0));
}*/
+ //:wxScrolledWindow(parent, -1, pos, size, style)
+ wxContourViewPanel :: wxContourViewPanel ( vtkImageData * theShowingImage, wxWindow *parent, const wxPoint& pos, const wxSize& size,long style, int vertStart, int vertEnd, int horzStart, int horzEnd )
+ :wxPanel(parent, -1, pos, size, style)
{
theShowingImage->GetSpacing(last_spacing);
-
showingVID = theShowingImage;
int gapH = 20;
int gapV = 10;
createHorizontalBar(1,80);
createVerticalBar(1,200);
createViewPanel();
+ _eventHandler = NULL;
wxFlexGridSizer * panelSizer = new wxFlexGridSizer(1, 4, gapV, gapH);
panelSizer -> AddGrowableCol(2);
Connect(_verticalBar->GetId(),wxEVT_TSBAR_MOVED,(wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onMovedBar_Vertical );
- SetSizer( outSizer );
+ this->SetSizer( outSizer );
this->SetAutoLayout( true );
this->Layout();
//theViewPanel->GetWindow(1)->SetSize(800,600);
//outSizer->Fit( this );
+
+ initializeScenceManager();
}
wxContourViewPanel :: ~wxContourViewPanel()
{
+ delete _sceneManager;
+ }
+
+ void wxContourViewPanel::initializeScenceManager(){
+
+ //_theViewPanel = theViewPanel;
+ //_theViewPanel->setWxEventHandler( this );
+
+ double spc[3];
+ this->getSpacing(spc);
+ _sceneManager = new wxVtkBaseView_SceneManager ( this->getWxVtkBaseView(), this, spc );
+ Connect( this->GetId(), wxINSTANT_CHANGE, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onChangeInstant );
+ Connect( wxID_ANY, wxEVT_START_CREATE_MULT_ROI, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onCreateMultipleROI );
+ Connect( wxID_ANY, wxEVT_START_CREATE_ROI, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onCreateROI );
+ Connect( wxID_ANY, wxEVT_STOP_CREATE_ROI, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onStopCreateROI );
+ Connect( wxID_ANY, wxEVT_CHANGED_DEEP, (wxObjectEventFunction) (wxCommandEventFunction) &wxContourViewPanel::onChangedDeep );
+ Connect( wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &wxContourViewPanel :: onActionButtonPressed );
+
+ }
+
+ wxVtkBaseView_SceneManager* wxContourViewPanel::getSceneManager(){
+ return _sceneManager;
}
//------------------------------------------------------------------------------------------------------------
}
//------------------------------------------------------------------------------------------------------------
- void wxContourViewPanel :: createViewPanel()
+ void wxContourViewPanel::createViewPanel()
{
std::vector<int> * numViews = new std::vector<int> ();
- numViews->push_back(2);
- theViewPanel = new wxMaracas_N_ViewersWidget( this, showingVID, numViews );
+ numViews->push_back(0);
+ theViewPanel = new wxMaracas_N_ViewersWidget( this, showingVID, numViews );
SetVisibleAxis(false);
theViewPanel->SetBackgroundColour(wxColour(0,0,0));
theViewPanel->SetSize(800,600);
- theViewPanel->GetWindow(1)->SetSize(800,600);
+ theViewPanel->GetWindow(1)->SetSize(800,600);
+
}
//------------------------------------------------------------------------------------------------------------
+ void wxContourViewPanel::changeImage(vtkImageData* img){
+
+ theViewPanel->SetImage(img);
+
+ }
wxVtkMPR2DView * wxContourViewPanel::GetwxVtkMPR2DView()
{
return (wxVtkMPR2DView *) (theViewPanel->GetwxVtkBaseView(1));
*/
void wxContourViewPanel :: onActualChange_Bar_Horizontal(wxCommandEvent& event)
{
- int nxActual_h = getActualHorizontal();
+
+ int actual = getActualHorizontal();
- if (_eventHandler!=NULL)
- {
+ wxContourMainFrame::getInstance()->onChangeInstant(_horizontalConceptName, actual);
+
+ //JCP 26 - 11 - 08
+ //int nxActual_h = getActualHorizontal();
+
+
+ //if (_eventHandler!=NULL)
+ //{
//-------------------------------------------------
// Sending the event of wxINSTANT_CHANGE
//-------------------------------------------------
- wxCommandEvent newevent(wxINSTANT_CHANGE,GetId());
+ // wxCommandEvent newevent(wxINSTANT_CHANGE,GetId());
- ConceptDataWrap * cWrap = new ConceptDataWrap( _horizontalConceptName );
- cWrap->setActualValue( nxActual_h );
+ // ConceptDataWrap * cWrap = new ConceptDataWrap( _horizontalConceptName );
+ // cWrap->setActualValue( nxActual_h );
- newevent.SetClientData( (void *)cWrap );
- _eventHandler->ProcessEvent(newevent);
- }
- }
+ // newevent.SetClientData( (void *)cWrap );
+ // _eventHandler->ProcessEvent(newevent);
+
+ //}
+ //JCP 26 - 11 - 08
+ }
/**
* Handles the event wxEVT_TSBAR_START from the horizontal bar
*/
void wxContourViewPanel :: onStartChange_Bar_Horizontal(wxCommandEvent& event)
{
- int nxStart_h = getStartHorizontal();
+// int nxStart_h = getStartHorizontal();
}
/**
* Handles the event wxEVT_TSBAR_END from the horizontal bar
*/
void wxContourViewPanel :: onEndChange_Bar_Horizontal(wxCommandEvent& event)
{
- int nxEnd_h = getEndHorizontal();
+// int nxEnd_h = getEndHorizontal();
}
/**
* Handles the event wxEVT_SELECTION_END from the horizontal bar
*/
void wxContourViewPanel :: onSelectionEnd_Horizontal(wxCommandEvent& event)
{
-
+
}
/**
* Handles the event wxEVT_TSBAR_MOVED from the horizontal bar
*/
void wxContourViewPanel :: onMovedBar_Horizontal(wxCommandEvent& event)
{
- int nxStart_h = getStartHorizontal();
- int nxEnd_h = getEndHorizontal();
+// int nxStart_h = getStartHorizontal();
+// int nxEnd_h = getEndHorizontal();
}
*/
void wxContourViewPanel :: onActualChange_Bar_Vertical(wxCommandEvent& event)
{
+ int actual = getActualVertical();
+ wxContourMainFrame::getInstance()->onChangeInstant(_verticalConceptName, actual);
+ //JCP 26 - 11 - 08
+ /*
int nxActual_v = getActualVertical();
if (_eventHandler!=NULL)
newevent.SetClientData( (void *)cWrap );
_eventHandler->ProcessEvent(newevent);
- }
+ }*/
+ //JCP 26 - 11 - 08
}
/**
* Handles the event wxEVT_TSBAR_START from the vertical bar
*/
void wxContourViewPanel :: onStartChange_Bar_Vertical(wxCommandEvent& event)
{
- int nxStart_v = getStartVertical();
+// int nxStart_v = getStartVertical();
}
/**
* Handles the event wxEVT_TSBAR_END from the vertical bar
*/
void wxContourViewPanel :: onEndChange_Bar_Vertical(wxCommandEvent& event)
{
- int nxEnd_v = getEndVertical();
+// int nxEnd_v = getEndVertical();
}
/**
* Handles the event wxEVT_SELECTION_END from the vertical bar
*/
void wxContourViewPanel :: onMovedBar_Vertical(wxCommandEvent& event)
{
- int nxStart_v = getStartVertical();
- int nxEnd_v = getEndVertical();
+// int nxStart_v = getStartVertical();
+// int nxEnd_v = getEndVertical();
}
*/
int wxContourViewPanel :: getActualVertical()
{
- return _verticalBar->GetEnd();
+ return _verticalBar->GetActual();//GetEnd();
}
/**
//EED 08/04/2008
// return theViewPanel->GetZ(1);
return theViewPanel->GetZ();
+ //return GetZ();
}
+ bool wxContourViewPanel::isEditableCControler(std::string theKeyName){
+ return _sceneManager->isEditableCControler(theKeyName);
+ }
+
+ void wxContourViewPanel::removeFromScene(std::string theKeyName){
+
+ _sceneManager->deleteCViewerCControler(theKeyName);
+
+
+ }
+
+ void wxContourViewPanel::onChangeInstant(wxCommandEvent& event){
+ ConceptDataWrap * dataConcept = NULL;
+ if ( GetId() == event.GetId() )
+ {
+ dataConcept = (ConceptDataWrap *)event.GetClientData();
+ int value = dataConcept->getActualValue();
+ //_instantPanel->setConceptValue( dataConcept->getName(), value );
+ wxContourMainFrame::getInstance()->setConceptValue( dataConcept->getName(), value );
+ }
+ else
+ {
+ dataConcept = wxContourMainFrame::getInstance()->getLastConceptData();
+ if( dataConcept->getName().compare( getVerticalConceptName() ) == 0)
+ {
+ setActualVertical( dataConcept->getActualValue());
+ //_theViewPanel->setVerticalConcept( dataConcept->getName(), dataConcept->getMinShowedValue()/*dataConcept->getMinValue()*/, /*dataConcept->getMaxValue()*/ dataConcept->getMaxShowedValue(), dataConcept->getMinShowedValue(), dataConcept->getMaxShowedValue(), dataConcept->getActualValue());
+ }
+ else if( dataConcept->getName().compare( getHorizontalConceptName() ) == 0|| wxContourMainFrame::getInstance()->getIfConceptCheckedAt( dataConcept->getName(), 0 ) )
+ {
+ setHorizontalConcept( dataConcept->getName(), dataConcept->getMinShowedValue()/*dataConcept->getMinValue()*/, /*dataConcept->getMaxValue()*/ dataConcept->getMaxShowedValue(), dataConcept->getMinShowedValue(), dataConcept->getMaxShowedValue(), dataConcept->getActualValue());
+ }
+ }
+ wxContourMainFrame::getInstance()->changeInstant();
+ }
+
+ void wxContourViewPanel::onCreateMultipleROI (wxCommandEvent& event){
+ }
+ void wxContourViewPanel::onCreateROI (wxCommandEvent& event){
+ }
+ void wxContourViewPanel::onStopCreateROI (wxCommandEvent& event){
+ }
+ void wxContourViewPanel::onChangedDeep (wxCommandEvent& event){
+ double val = getCurrentDeep();
+ //setActualVertical( (int)val );
+ wxContourMainFrame::getInstance()->onChangeDeep((int)val);
+ //_instantPanel->setConceptValue( "Axe Depth", (int)val );
+
+// changeInstant();
+ }
+ void wxContourViewPanel::changeDeep(){
+ double val = getCurrentDeep();
+ setActualVertical( (int)val );
+ }
+ void wxContourViewPanel::onActionButtonPressed(wxCommandEvent& event){
+
+
+ std::vector<std::string> currentSelection = _sceneManager->getSelectedObjects();
+// int elementsSelected = currentSelection.size();
+ bool ctrlKey = _sceneManager->isCtrlPressed();
+ char toolCommand = _sceneManager->getLastKeyCode();
+
+
+ if ( toolCommand == 3 && ctrlKey ) //'C' || 'c'
+ {
+ wxContourMainFrame::getInstance()->onCopy();
+ }
+ else if( toolCommand == 22 && ctrlKey ) //'V' || 'v'
+ {
+ wxContourMainFrame::getInstance()->onPaste();
+ }
+ else if( toolCommand == 8 || (toolCommand==127) ) // backspace Delete
+ {
+ wxContourMainFrame::getInstance()->onDeleteContour();
+ }
+ else if( toolCommand == 14 && ctrlKey ) //'N' || 'n'
+ {
+ //toolCommand = &(CREATE_CONTOUR_KEY);
+ }
+ else if( toolCommand == 15 && ctrlKey ) //'O' || 'o'
+ {
+ wxContourMainFrame::getInstance()->onLoad();
+ }
+ else if( toolCommand == 19 && ctrlKey ) //'S' || 's'
+ {
+ wxContourMainFrame::getInstance()->saveFileWithContoursAutomatique();
+ }else if( toolCommand == 26 ){
+ wxContourMainFrame::getInstance()->onUndo();
+ }else if( toolCommand == 25 ){
+ wxContourMainFrame::getInstance()->onRedo();
+ }
+ }
+
+ void wxContourViewPanel::removeSceneContours(){
+ _sceneManager->removeSceneContours();
+ }
+
+ void wxContourViewPanel::addNameWrapperToScene(){
+ int size = wxContourMainFrame::getInstance()->getNamesWrappingSize();
+ for(int i = 0; i < size;i++){
+ std::string name = wxContourMainFrame::getInstance()->getNameWrapping(i);
+ _sceneManager->addToScene(name, true, true, true, false, false );
+ }
+ }
+
+ std::vector<std::string> wxContourViewPanel::getSelectedObjects(){
+ return _sceneManager->getSelectedObjects();
+ }
+
+ void wxContourViewPanel::RefreshInterface(){
+ getWxVtkBaseView()->Refresh();
+ }
+
+ vtkImageData* wxContourViewPanel::getImageData(){
+ return _sceneManager->GetImageData();
+ }
+
+ void wxContourViewPanel::configureViewControlTo(std::string theName,manualContourModel* manModelContour,double* spc,int typeofcontour){
+ _sceneManager->configureViewControlTo(theName, manModelContour, spc, typeofcontour);
+ }
+
+ int wxContourViewPanel::GetImageDataSizeZ(){
+ return _sceneManager->GetImageDataSizeZ();
+ }
+
+ void wxContourViewPanel::GetImageDataRange(double *range){
+ _sceneManager->GetImageDataRange(range);
+ }
+
+ void wxContourViewPanel::SetWidthContour(double width ){
+ _sceneManager->SetWidthContour( width );
+ }
+
+ int wxContourViewPanel::getColorWindow(){
+ wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView();
+ vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2();
+ int colorwindow = (int)imageviewer->GetWindowLevel()->GetLevel();
+ return colorwindow;
+ }
+
+ int wxContourViewPanel::getWindowLevel(){
+ wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView();
+ vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2();
+ int windowlevel = (int)imageviewer->GetWindowLevel()->GetWindow();
+ return windowlevel;
+ }
+
+ void wxContourViewPanel::onBrigthnessColorWindowLevel(int colorwindow,int windowlevel){
+ wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView();
+ vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2();
+ imageviewer->SetColorWindow(colorwindow);
+ imageviewer->SetColorLevel(windowlevel);
+ }
+
+ void wxContourViewPanel::onInterpolation(bool interpolate){
+ wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView();
+ vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2();
+
+ if (interpolate){
+ imageviewer->GetImageActor()->InterpolateOn();
+ } else {
+ imageviewer->GetImageActor()->InterpolateOff();
+ }
+ }
+
+ void wxContourViewPanel::GetPointsOfActualContour( std::vector<double> *vecX, std::vector<double> *vecY, std::vector<double> *vecZ ){
+ _sceneManager->GetPointsOfActualContour(vecX, vecY, vecZ);
+ }
+
+ void wxContourViewPanel::setImageSlice(int z){
+ vtkInteractorStyleBaseView* stylebaseview = (vtkInteractorStyleBaseView*) _sceneManager->getWxVtkViewBase()->GetInteractorStyleBaseView();
+ wxVtk2DBaseView* baseview = (wxVtk2DBaseView*)stylebaseview->GetWxVtk2DBaseView();
+ baseview->SetActualSlice(z);
+ RefreshInterface();
+ }