]> Creatis software - bbtkGEditor.git/commitdiff
Visual hints for possible connections done beautifully :P . Feature 1367
authorriveros <>
Wed, 23 May 2012 16:10:54 +0000 (16:10 +0000)
committerriveros <>
Wed, 23 May 2012 16:10:54 +0000 (16:10 +0000)
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx

index 543f88a7e294196bfc96232d400a19e761475068..b27c724c5da02616bba5127a61f1fb27a31cb2fe 100644 (file)
@@ -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<int , GObjectController*>::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<int , GObjectController*>::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