]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.h
Feature #1366 Increased the line width of bbEditor connections.
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxVtkSceneManager.h
index 8e8a7aa67355e955380c1955a0b415dcc3d72cb6..fadb8ba819ca0428be5046fd71d3bbc0f43ea870 100644 (file)
@@ -1,4 +1,4 @@
-/*=========================================================================                                                                               
+/*=========================================================================
 Program:   bbtk
 Module:    $RCSfile$
 Language:  C++
@@ -8,37 +8,38 @@ Version:   $Revision$
 
 /* ---------------------------------------------------------------------
 
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-*  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.
-* ------------------------------------------------------------------------ */                                                                         
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ *  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.
+ * ------------------------------------------------------------------------ */
 
 
 
 /**
-*  \file 
-*  \brief Class bbtk::BlackBox : abstract black-box interface. 
-*/
+ *  \file
+ *  \brief Class bbtk::BlackBox : abstract black-box interface.
+ */
 
-/**
-* \class bbtk::wxVtkSceneManager
-* \brief 
-*/
+/****
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
 
 #ifndef __wxVtkSceneManager_h__
 #define __wxVtkSceneManager_h__
@@ -73,10 +74,16 @@ Version:   $Revision$
 #include <vtkRenderWindowInteractor.h>
 #include <vtkRenderer.h>
 #include <vtkInteractorStyleImage.h>
+#include <vtkActor.h>
+#include <vtkPoints.h>
+#include <vtkTextActor3D.h>
+#include <vtkDataSetMapper.h>
 
 
 //Includes std
 #include <iostream>
+#include <string>
+#include <sstream>
 #include <map>
 
 
@@ -86,7 +93,7 @@ namespace bbtk
 
        class wxVtkSceneManager : public InteractorStyleMaracas , public Observer
        {
-       public: 
+       public:
 
                wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager);
                ~wxVtkSceneManager();
@@ -99,13 +106,15 @@ namespace bbtk
 
                virtual bool OnChar();
                virtual bool OnMouseMove();
-               virtual bool  OnLeftButtonDown(); 
-               virtual bool  OnLeftButtonUp();
+               virtual bool OnLeftButtonDown();
+               virtual bool OnLeftButtonUp();
                virtual bool OnRightButtonUp();
                virtual bool OnLeftDClick();
+                virtual bool OnMiddleButtonDown(); ///JLGR 21-05-2012
+                virtual bool OnMiddleButtonUp(); ///JLGR 21-05-2012
 
                //-------
-               int createGBlackBox(int x, int y,std::string packageName, std::string boxType);
+               int createGBlackBox(int x, int y, std::string packageName, std::string boxType );
                int createGComplexBoxInputPort(std::string inputName);
                int createGComplexBoxOutputPort(std::string outputName);
                GPortController* createGPort(int portType, std::string bbtkName, std::string bbtkType, int posinBox,GBoxModel *blackBox);
@@ -113,11 +122,92 @@ namespace bbtk
                int createGOutputPort(int portType, int posinBox,GBoxModel *blackBox, BlackBoxOutputDescriptor *desc);
                int createGConnector(GPortModel* startPort);
 
+               void configGBlackBox(int idBox, double xIn, double yIn, double zIn, std::string name, bool boxExecutable,double xEn,double yEn,double zEn);
+               int configGConnetion( std::string nameStartBox, std::string  nameStartPort, std::string
+                                                         nameEndBox, std::string  nameEndPort);
+               void configGComBoxInputOutputPort(bool inputoutput, std::string inputPortName, double xIn, double yIn,double zIn);
+               GBoxModel* findGBox(std::string boxname);
+
+    class wxVtkSceneManager : public InteractorStyleMaracas, public Observer {
+    public:
+
+        wxVtkSceneManager( wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager );
+        ~ wxVtkSceneManager( );
+        void disconnectDrop( );
+
+        //-------
+        void configureBaseView( );
+        void registerController( InteractorStyleMaracas *param );
+        void unregisterController( InteractorStyleMaracas *param );
+
+        virtual bool OnChar( );
+        virtual bool OnMouseMove( );
+        virtual bool OnLeftButtonDown( );
+        virtual bool OnLeftButtonUp( );
+        virtual bool OnRightButtonUp( );
+        virtual bool OnLeftDClick( );
+
+        //-------
+        int createGBlackBox( int x, int y, std::string packageName, std::string boxType );
+        int createGComplexBoxInputPort( std::string inputName );
+        int createGComplexBoxOutputPort( std::string outputName );
+        GPortController* createGPort( int portType, std::string bbtkName, std::string bbtkType, int posinBox, GBoxModel *blackBox );
+        int createGInputPort( int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc );
+        int createGOutputPort( int portType, int posinBox, GBoxModel *blackBox, BlackBoxOutputDescriptor *desc );
+        int createGConnector( GPortModel* startPort );
+
+        void configGBlackBox( int idBox, double xIn, double yIn, double zIn, std::string name, bool boxExecutable, double xEn, double yEn, double zEn );
+        int configGConnetion( std::string nameStartBox, std::string nameStartPort, std::string
+        nameEndBox, std::string nameEndPort );
+        void configGComBoxInputOutputPort( bool inputoutput, std::string inputPortName, double xIn, double yIn, double zIn );
+        GBoxModel* findGBox( std::string boxname );
+
+        vtkRenderWindow* getRenderWindow( );
+        vtkRenderer* getRenderer( );
+
+        virtual void update( int idController, int command );
+
+        void refresh( );
+        void refreshScene( );
+        void displayBlackBoxInfo( std::string packageName, std::string boxName );
+        void updateStatusBar( std::string textStatus );
+
+        //-------
+        //Get a collection of object ids
+        std::vector<int> getBlackBoxes( );
+        std::vector<int> getConnections( );
+        std::vector<int> getComplexInputPorts( );
+        std::vector<int> getComplexOutputPorts( );
+
+        //Get the map of selected objects (id, controller)
+        std::map<int, GObjectController*> getSelectedObjects( );
+
+        //Get size of selected objects map
+        int getNumSelectedObjects( );
+
+        //Complex box edition mode
+        bool isComplexBox( );
+        void setComplexBox( bool val );
+
+        //-------
+        //Add an object to the list of controllers
+        int addObjectController( GObjectController* objController );
+
+        //Add a map of object controllers
+        void addObjects( std::map<int, GObjectController*> objectsMap );
+
+
+        //-------
+        //Returns a string with the BBS script of the current diagram.
+        std::string getDiagramBBS( bool wln = false );
+
+
                vtkRenderWindow* getRenderWindow();
-               vtkRenderer* getRenderer();             
+               vtkRenderer* getRenderer();
 
                virtual void update(int idController,int command);
 
+               void refresh();
                void refreshScene();
                void displayBlackBoxInfo(std::string packageName, std::string boxName);
                void updateStatusBar(std::string textStatus);
@@ -146,80 +236,107 @@ namespace bbtk
                //Add a map of object controllers
                void addObjects(std::map<int,GObjectController*> objectsMap);
 
+                /// Duplicates Objects to current a diagram
+                void DuplicateObjects(std::map<int,GObjectController*> objectsMap);///JLGR 21-05-2012
 
+               //-------
+               // Makes a BlackBox Executable
+               bool MakeBoxExecutable();//DFCH
                //-------
                //Returns a string with the BBS script of the current diagram.
-               std::string getDiagramBBS();
+               std::string getDiagramBBS(bool wln=false);
 
-               //Returns a string with the BBS script of the complex box.
-               std::string saveComplexBoxBBS(std::string cbName,std::string cbAuthor="",std::string cbCategory="",std::string cbDescription="");
 
-               //Delete the object in the list of controllers with the id given by parameter.
-               void deleteObject(int id);
+        void AddControlerToBeRemove( std::vector<int> *controllersToRemove, int id );
 
-               //Clear list of controllers and refresh
-               void deleteAllBoxes();
+        //Clear list of controllers and refresh
+        void deleteAllBoxes( );
 
-               //Save the diagram in the BBG format, in the string given by param.
-               void saveDiagram(std::string &content);
+        //Save the diagram in the BBG format, in the string given by param.
+        void saveDiagram( std::string &content );
 
-               //Load the diagram 
-               void loadDiagram(ifstream &inputStream);
+        //Load the diagram
+        void loadDiagram( ifstream &inputStream );
 
-               //Center the view of the camera in the initial position
-               void centerView();
+        //Center the view of the camera in the initial position
+        void centerView( );
 
-               //-------
-               //Get a collection of object ids
-               std::vector<int> getBlackBoxes();
-               std::vector<int> getConnections();
-               std::vector<int> getComplexInputPorts();
-               std::vector<int> getComplexOutputPorts();
+               //Load the diagram
+               void loadDiagram(std::stringstream &inputStream);
 
-               //Get the map of selected objects (id, controller)
-               std::map<int,GObjectController*> getSelectedObjects();
 
-               //Get size of selected objects map
-               int getNumSelectedObjects();
+        void SetCbName( std::string cbNane );
+        void SetCbPackageName( std::string packagename );
+        void SetAuthor( std::string author );
+        void SetCategory( std::string category );
+        void SetDescription( std::string description );
 
-               //Complex box edition mode
-               bool isComplexBox();
-               void setComplexBox(bool val);
+        std::string GetCbName( );
+        std::string GetCbPackageName( );
+        std::string GetAuthor( );
+        std::string GetCategory( );
+        std::string GetDescription( );
+        
+        
+
+        // JGRR & CM
+        void printAll( int com, int sta );
+
+        
+
+    private:
+
+        std::string _cbName;
+        std::string _cbPackageName;
+        std::string _Author;
+        std::string _Category;
+        std::string _Description;
+
+        //wxPanel that uses the manager
+        wxGEditorTabPanel *_parent;
 
+        // Id of the manager, the same of the panel
+        int _idManager;
 
+        // Boxes number in the scene
+        int _numBoxes;
 
-       private:
+        // StartDragging
+        bool _startDragging;
 
-               //wxPanel that uses the manager
-               wxGEditorTabPanel *_parent;
+        // creaMaracasVisu viewer
+        wxVtk3DBaseView *_baseView;
 
-               // Id of the manager, the same of the panel
-               int _idManager;
+        // State of the 3D Scene or the virtual world
+        int _worldState;
 
-               // Boxes number in the scene
-               int _numBoxes;
+        //Map of id - objectController
+        std::map<int, GObjectController*> _controllers;
 
-               // StartDragging
-               bool _startDragging;
+        //Saves the id's of the selected objects in the controllers map
+        std::vector<int> _selectedObjects;
 
-               // creaMaracasVisu viewer
-               wxVtk3DBaseView *_baseView;
+        //Is the diagram in state complex box
+        bool _isComplexBox;
 
-               // State of the 3D Scene or the virtual world
-               int _worldState;
+        int _idConnectionInCreation;
 
-               //Map of id - objectController
-               std::map<int,GObjectController*> _controllers;
+        int _contLastId;
 
-               //Saves the id's of the selected objects in the controllers map
-               std::vector<int> _selectedObjects;
+        vtkTextActor3D *_textActor;
+        vtkPoints *_pts;
+        vtkActor *_fillObjectActor;
+        vtkDataSetMapper *_aPolygonMapper;
 
-               //Is the diagram in state complex box 
-               bool _isComplexBox;
+        std::string LineNumber( bool withLineNumber, int &value );
+        int GetIndexInSelected( int idControler );
+        void UnSelectBlackBoxes( );
+        GObjectController *GetGBlackBoxControlerPointedByMouse( );
+        void CancelConnection( );
 
-       protected:
+    protected:
 
-       };
+    };
 
 
 }