From 6c3b9595e2e319a6a15a4fa03eec5441a4443aff Mon Sep 17 00:00:00 2001 From: mouton <> Date: Thu, 24 May 2012 09:31:17 +0000 Subject: [PATCH] Feature 1367 - Hint for possible connections. Bug 1352 - Show errors with inconsistent diagrams. --- .../wxVtkSceneManager.cxx | 133 +++++++++++++++++- .../bbsWxGUIEditorGraphic/wxVtkSceneManager.h | 3 + 2 files changed, 131 insertions(+), 5 deletions(-) diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index ab0ef4e..3d66871 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -530,7 +530,13 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { manContourView->SetColorNormalContour(0, 0, 1); manContourView->SetColorEditContour(0.5, 0.5, 0.5); manContourView->SetColorSelectContour(1, 0.8, 0); - manContourView->SetWidthLine(1); + + /** + * JGRR AND CM + * Width increased from 2 to 5, it simplifies line handling and spline control :P + * @param WidthLine + */ + manContourView->SetWidthLine( 5 ) ; manContourView->SetShowText(false); manContourControl->SetModelView(manContourModel, manContourView); @@ -648,7 +654,40 @@ void wxVtkSceneManager::update(int idController, int command) { _selectedObjects.erase(_selectedObjects.begin() + index); } } else if (command == INIT_CREATION_CONTOUR) { - _worldState = INIT_CREATION_CONTOUR; + + // JGRR & CM WH + typedef std::map::iterator TIterator ; + TIterator iter ; + TIterator iter_end ; + // Find current item in the controller + iter = _controllers.find( idController ) ; + iter_end = _controllers.end( ) ; + // If item exist + if ( iter != iter_end ) { + GObjectController* gobjc = iter->second ; + + std::string bbtkType = gobjc->getModel( )->getBBTKType( ) ; + // And if the item is a port + if ( gobjc->getModel( )->getGObjectType( ) == GPORT ) { + TIterator c_it = _controllers.begin( ) ; + // Go through all componets + for ( c_it ; c_it != iter_end ; c_it++ ) { + GObjectController* obc = c_it->second ; + int obc_type = obc->getModel( )->getGObjectType( ) ; + std::string obc_bbtkType = obc->getModel( )->getBBTKType( ) ; + // if the component is a port and the type is the same of that selected + if ( ( obc_type == GPORT ) && ( obc_bbtkType == bbtkType ) ) { + // Highliht element + obc->getView( )->setState( POSSIBLE_CONNECTION ) ; + //obc->getView( )->setState( HIGHLIGHTED ) ; + } + } + } + } + + // EO JGRR & CM WH + + _worldState = INIT_CREATION_CONTOUR; GObjectController* cont = _controllers[idController]; GPortModel* startOutputPort = (GPortModel*) cont->getModel(); @@ -685,7 +724,31 @@ void wxVtkSceneManager::update(int idController, int command) { if (finPort->getGObjectType() == GPORT) { GPortModel* modelPort = (GPortModel*) finPort->getModel(); modelContour->setEndPort(modelPort); - _parent->saveTempDiagram(); + + // JGRR CM + typedef std::map::iterator TIterator; + TIterator c_it = _controllers.begin(); + TIterator iter_end = _controllers.end(); + // Go through all componets + for (c_it; c_it != iter_end; c_it++) { + GObjectController* obc = c_it->second; + int obc_type = obc->getModel()->getGObjectType(); + int obc_state = obc->getView()->getState(); + // if the component is a port and the type is the same of that selected + if ((obc_type == GPORT) && (obc_state == POSSIBLE_CONNECTION)) { + // Return element to neutral state if not selected + obc->getView()->setState(NOTHING_HAPPENS); + } + if ((obc_type == GPORT) && (obc_state == SELECTED_POSSIBLE_CONNECTION)) { + // Change element to connected state + obc->getView()->setState(HIGHLIGHTED); + + } + + } + // EO JGRR CM + + _parent->saveTempDiagram(); } manualConnectorContourController @@ -812,8 +875,15 @@ bool wxVtkSceneManager::OnLeftButtonDown() { if (portmod->getPortType() == GINPUTPORT && portView->getState() == HIGHLIGHTED) { isOverPort = true; - } // if - } // if + } // if + // JGRR & CM + if ( portmod->getPortType( ) == GINPUTPORT && portView->getState( ) == SELECTED_POSSIBLE_CONNECTION ) { + isOverPort = true ; + portView->setState( HIGHLIGHTED); + } + // EO JGRR & CM + + } // if } // for if (isOverPort == false) { @@ -2603,6 +2673,59 @@ std::string wxVtkSceneManager::GetDescription() { //========================================================================= +void wxVtkSceneManager::printAll(int com , int sta ){ + + int tmpState = sta ; + if ( tmpState == NOTHING_HAPPENS ) { + std::cout << "CONTROLER STATE---->NOTHING_HAPPENS\n" ; + } + if ( tmpState == HIGHLIGHTED ) { + std::cout << "CONTROLER STATE---->HIGHLIGHTED\n" ; + } + if ( tmpState == POSSIBLE_CONNECTION ) { + std::cout << "CONTROLER STATE---->POSSIBLE_CONNECTION\n" ; + } + if ( tmpState == SELECTED_POSSIBLE_CONNECTION ) { + std::cout << "CONTROLER STATE---->SELECTED_POSSIBLE_CONNECTION\n" ; + } + if ( tmpState == CLICKED ) { + std::cout << "CONTROLER STATE---->CLICKED\n" ; + } + if ( tmpState == DRAG ) { + std::cout << "CONTROLER STATE---->DRAG\n" ; + } + if ( tmpState == SELECTED ) { + std::cout << "CONTROLER STATE---->SELECTED\n" ; + } + if ( tmpState == CREATING_CONTOUR ) { + std::cout << "CONTROLER STATE---->CREATING_CONTOUR\n" ; + } + + // :P + + int command = com ; + if ( command == INIT_CREATION_CONTOUR ) { + std::cout << "COMMAND ----> INIT_CREATION_CONTOUR \n" ; + } + if ( command == FIN_CREATION_CONTOUR ) { + std::cout << "COMMAND ----> FIN_CREATION_CONTOUR \n" ; + } + if ( command == ADD_TO_SELECTED ) { + std::cout << "COMMAND ----> ADD_TO_SELECTED \n" ; + } + if ( command == DRAG_OBJECTS ) { + std::cout << "COMMAND ----> DRAG_OBJECTS \n" ; + } + if ( command == EDIT_BLACKBOX ) { + std::cout << "COMMAND ----> EDIT_BLACKBOX \n" ; + } + if ( command == REMOVE_FROM_SELECTED ) { + std::cout << "COMMAND ----> REMOVE_FROM_SELECTED \n" ; + } + + } + + } // EO namespace bbtk // EOF diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.h b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.h index fe5889c..3cf5639 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.h +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.h @@ -209,6 +209,9 @@ namespace bbtk std::string GetAuthor(); std::string GetCategory(); std::string GetDescription(); + + // JGRR & CM + void printAll( int com, int sta ); private: -- 2.45.0