From a50e41251cd0693e7fed99110e1e6cf901bcec82 Mon Sep 17 00:00:00 2001 From: riveros <> Date: Wed, 23 May 2012 16:10:54 +0000 Subject: [PATCH] Visual hints for possible connections done beautifully :P . Feature 1367 --- .../wxVtkSceneManager.cxx | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index 543f88a..b27c724 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -663,6 +663,41 @@ void wxVtkSceneManager::update(int idController, int command) { _selectedObjects.erase(_selectedObjects.begin() + index); } } else if (command == 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(); @@ -700,6 +735,31 @@ void wxVtkSceneManager::update(int idController, int command) { if (finPort->getGObjectType() == GPORT) { GPortModel* modelPort = (GPortModel*) finPort->getModel(); modelContour->setEndPort(modelPort); + + + // 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(); } @@ -828,6 +888,14 @@ bool wxVtkSceneManager::OnLeftButtonDown() { && portView->getState() == HIGHLIGHTED) { isOverPort = true; } // if + + // JGRR & CM + if ( portmod->getPortType( ) == GINPUTPORT && portView->getState( ) == SELECTED_POSSIBLE_CONNECTION ) { + isOverPort = true ; + portView->setState( HIGHLIGHTED); + } + // EO JGRR & CM + } // if } // for @@ -2617,6 +2685,58 @@ std::string wxVtkSceneManager::GetDescription() { } //========================================================================= +// JGRR & CM +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 -- 2.45.0