]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx
1977 bbGEditor Bug New Urgent Black boxes Input/Output text is not displayed correctl...
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxVtkSceneManager.cxx
index 9b9c60a8b826890daf3ed879da402150402ea41f..7c2ff2df3823ff29006145257918127a15abf9ef 100644 (file)
@@ -1,3 +1,28 @@
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  This software is governed by the CeCILL-B license under French law and 
+#  abiding by the rules of distribution of free software. You can  use, 
+#  modify and/ or redistribute the software under the terms of the CeCILL-B 
+#  license as circulated by CEA, CNRS and INRIA at the following URL 
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability. 
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------  
+*/
+
 /*=========================================================================
  Program:   bbtk
  Module:    $RCSfile$
@@ -49,19 +74,22 @@ namespace bbtk {
 wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager,Factory::Pointer bbtkfactory) 
 {
        _cbName                 = "ComplexBoxName";
-       _cbPackageName  = "PackageName";
+       _cbPackageName          = "PackageName";
        _Author                 = "Author ??";
        _Category               = "<VOID>";
-       _Description    = "Description ??";
+       _Description            = "Description ??";
+
+       _bugTextActor_text      = "void";
+       _bugTextActor_status    = 0;
 
        _parent                 = parent;
        _numBoxes               = 0;
        _idManager              = idManager;
        _baseView               = baseView;
-       _bbtkfactory    = bbtkfactory;
+       _bbtkfactory            = bbtkfactory;
        
-       _startDragging  = false;
-       _isComplexBox   = false;
+       _startDragging          = false;
+       _isComplexBox           = false;
 
        if (_baseView != NULL) {
                //EED02JUIN2010
@@ -106,7 +134,6 @@ wxVtkSceneManager::~wxVtkSceneManager()
 
 void wxVtkSceneManager::configureBaseView() 
 {
-       printf("EED wxVtkSceneManager::configureBaseView 0\n");
        vtkInteractorStyleBaseView2D *interactorstylebaseview = vtkInteractorStyleBaseView2D::New();
 
        _baseView->SetInteractorStyleBaseView(interactorstylebaseview);
@@ -127,6 +154,7 @@ void wxVtkSceneManager::configureBaseView()
 
        // Actos Port_Text
        _textActor = vtkTextActor3D::New();
+//     _textActor = vtkTextActor::New();
        _textActor->SetPosition(-9999, -9999, GPOSITION_Z);
        _textActor->SetInput("<void>");
        _textActor->GetTextProperty()->SetFontSize(60);
@@ -194,7 +222,6 @@ void wxVtkSceneManager::configureBaseView()
        _aPolygonMapper->Modified();
 
        _baseView->GetRenderer()->AddActor(_fillObjectActor);
-       printf("EED wxVtkSceneManager::configureBaseView 1\n");
 }
 
 //=========================================================================
@@ -777,7 +804,7 @@ bool wxVtkSceneManager::OnMouseMove()
 {
        int X, Y;
        bool okStatusMessage    = false;
-       bool okPortMessage              = false;
+       bool okPortMessage      = false;
        wxVTKRenderWindowInteractor *wxVTKiren;
        wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
        wxVTKiren->GetEventPosition(X, Y);
@@ -819,7 +846,7 @@ bool wxVtkSceneManager::OnMouseMove()
                        if ((state == HIGHLIGHTED) || (state == SELECTED_POSSIBLE_CONNECTION )) 
                        {
                         // EO JGRR & CM    
-                               okStatusMessage = true;
+                               okStatusMessage         = true;
                                updateStatusBar(desc->getStatusText());
                                if (type == GBLACKBOX) 
                                {
@@ -829,32 +856,43 @@ bool wxVtkSceneManager::OnMouseMove()
                                if (type == GPORT) 
                                {
                                        // PortText
-                                       okPortMessage = true;
-                                       py = py + 5;
-                                       _textActor->SetInput(desc->getStatusText().c_str());
-                                       _textActor->SetScale(0.1);
-                                       _textActor->SetPosition(px - 25, py + 1, pz + 2);
-
-                                       // FillPortText
-                                       px = px - 33;
-                                       //py = py;
-                                       _fillObjectActor->SetScale(1);
-                                       _fillObjectActor->GetProperty()->SetOpacity(0.50);
-                                       _fillObjectActor->SetPosition(px, py, 1);
-                                       _aPolygonMapper->Modified();
-                               } // if GPORT
+                                       if ( ( _bugTextActor_text==desc->getStatusText() ) || (_bugTextActor_status==0) )
+                                       {
+                                               _bugTextActor_status    = 1;
+                                               okPortMessage           = true;
+                                               py                      = py + 5;
+                                               _textActor->SetScale(0.1);
+                                               std::string tmp = desc->getStatusText()+"\n";
+                                               _textActor->SetInput( tmp.c_str() );
+                                               _textActor->SetPosition(px - 25, py + 1, pz + 2);
+                                               _textActor->Modified();
+                                               // FillPortText
+                                               px                      = px - 33;
+                                               //py = py;
+                                               _fillObjectActor->SetScale(1);
+                                               _fillObjectActor->GetProperty()->SetOpacity(0.50);
+                                               _fillObjectActor->SetPosition(px, py, 1);
+                                               _aPolygonMapper->Modified();
+                                       } else {
+                                               _bugTextActor_status    = 2;
+                                       } //  _bugTextActor_tex
+                                       _bugTextActor_text              = desc->getStatusText();
 
-                       } // for controllers it
-               }
+                               } // if GPORT
+                       }  //if state
+               } // for controllers it
        }
        if (okStatusMessage == false) 
        {
                updateStatusBar("");
        }
 
-       if (okPortMessage == false) 
+       if ((okPortMessage == false) || (_bugTextActor_status== 2 ) )
        {
+               _bugTextActor_status    = 0; 
                _textActor->SetScale(0.0001);
+               _textActor->SetInput("a\n");
+               _textActor->Modified();
                _fillObjectActor->SetScale(0.0001);
        }
        return true;
@@ -1851,7 +1889,7 @@ void wxVtkSceneManager::getCleanLine(stringstream &inputStream, std::string &lin
 //=========================================================================
 void wxVtkSceneManager::loadDiagram(stringstream &inputStream) 
 {
-       printf("EED wxVtkSceneManager::loadDiagram Start \n");
+
        int size;
        std::string version = "<void>";
        std::string line = "";
@@ -1994,6 +2032,7 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                        }
 
 
+
                        //-----------------------
                        //- COMPLEX OUTPUT PORTS
                        //-----------------------
@@ -2123,6 +2162,7 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                        result = strtok(NULL, delims);//name
                        std::string name(result);
 
+
                        getCleanLine(inputStream, line);//ISEXEC:TRUE|FALSE
                        char exec[15];
                        strcpy(exec, line.c_str());
@@ -2254,6 +2294,7 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                        result = strtok(NULL, delims);
                        std::string nameEndPort(result);
 
+
                        int idCon = configGConnetion(nameStartBox, nameStartPort,nameEndBox, nameEndPort);
 
                        if (version != "1.0") {
@@ -2295,20 +2336,16 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                                        conView->getManualContourView()->AddPoint();
                                }
                        }// version !=1.0
-
                } // for numConns
-
-       } // start
-       
-printf("EED wxVtkSceneManager::loadDiagram End \n");
-
+       } // start      
 }
 //=========================================================================
 
 
 //=========================================================================
 void wxVtkSceneManager::configGComBoxInputOutputPort(bool inputoutput,
-               std::string portName, double xIn, double yIn, double zIn) {
+               std::string portName, double xIn, double yIn, double zIn) 
+{
        int idPort;
        if (inputoutput == true) {
                idPort = createGComplexBoxInputPort(portName);
@@ -2324,7 +2361,8 @@ void wxVtkSceneManager::configGComBoxInputOutputPort(bool inputoutput,
 
 
 //=========================================================================
-GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
+GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) 
+{
        int j;
        int idB;
        GBoxModel *bMod;
@@ -2333,7 +2371,8 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
        for (j = 0; j < (int) lstB.size(); j++) {
                idB = lstB[j];
                bMod = (GBoxModel*) _controllers[idB]->getModel();
-               if (_controllers[idB]->getModel()->getBBTKName() == boxname) {
+               if (_controllers[idB]->getModel()->getBBTKName() == boxname) 
+                {
                        boxModel = bMod;
                }
        } // for
@@ -2345,7 +2384,8 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
                for (j = 0; j < (int) lstInputs.size(); j++) {
                        idB = lstInputs[j];
                        bMod = (GBoxModel*) _controllers[idB]->getModel();
-                       if (_controllers[idB]->getModel()->getBBTKName() == boxname) {
+                       if (_controllers[idB]->getModel()->getBBTKName() == boxname) 
+                        {
                                boxModel = bMod;
                        }
                } // for
@@ -2356,7 +2396,8 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
                for (j = 0; j < (int) lstOutputs.size(); j++) {
                        int idB = lstOutputs[j];
                        bMod = (GBoxModel*) _controllers[idB]->getModel();
-                       if (_controllers[idB]->getModel()->getBBTKName() == boxname) {
+                       if (_controllers[idB]->getModel()->getBBTKName() == boxname) 
+                        {
                                boxModel = bMod;
                        }
                } // for
@@ -2386,7 +2427,7 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox,
        if (boxModel != NULL) {
                startP = boxModel->getOutputPort(nameStartPort);
                if(startP == NULL){
-                       printf("SCP: ERROR in wxVtkSceneManager::configGConnetion start port %s is null. Port name is probably wrong.\n", nameStartPort.c_str());
+                       printf("SCP: ERROR in wxVtkSceneManager::configGConnetion start port is null. Port name is probably wrong.  Start>%s::%s  End>%s::%s\n", nameStartBox.c_str(), nameStartPort.c_str(), nameEndBox.c_str(), nameEndPort.c_str() );
                }
        }
 
@@ -2398,7 +2439,7 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox,
        if (boxModel != NULL) {
                endP = boxModel->getInputPort(nameEndPort);
                if(endP == NULL){
-                       printf("SCP: ERROR in wxVtkSceneManager::configGConnetion end port %s is null. Port name is probably wrong\n", nameStartPort.c_str(), nameEndPort.c_str());
+                       printf("SCP: ERROR in wxVtkSceneManager::configGConnetion end port is null. Port name is probably wrong. Start>%s::%s  End>%s::%s \n", nameStartBox.c_str(), nameStartPort.c_str(), nameEndBox.c_str(), nameEndPort.c_str());
                }
        }