]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsKernelEditorGraphic/GPortModel.cxx
Bug #1682 Crash deleting the actual connection creation
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsKernelEditorGraphic / GPortModel.cxx
index fa208106e601938876cc21b4f7fb467c6fb7dec3..20caad2c738f73dc6c8c45fe58c98456b7baad6d 100644 (file)
@@ -1,4 +1,4 @@
-/*=========================================================================                                                                               
+/*=========================================================================
 Program:   bbtk
 Module:    $RCSfile$
 Language:  C++
@@ -8,185 +8,188 @@ 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::GPortModel 
-*/
+ *  \file
+ *  \brief Class bbtk::GPortModel
+ */
+
+/****
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
+#include "GPortModel.h"
 
+namespace bbtk {
 
-#include "GPortModel.h"
 
-namespace bbtk
-{
-
-
-       //=========================================================================
-       GPortModel::GPortModel()
-       {               
-               _parentBox = NULL;
-               _portType=-1;
-               _posInBox=0;
-               _isConnected=false;
-               _value="";
-               _isValueSet=false;
-       }
-
-       //=========================================================================
-       GPortModel::~GPortModel()
-       {
-       }
-       //=========================================================================
-
-       void GPortModel::registerInBox(GBlackBoxModel *blackBox,int portType, int pos)
-       {
-               _parentBox = blackBox;
-               _portType = portType;
-               _posInBox = pos;
-
-               updatePortPosition();
-
-       }
-
-       //=========================================================================
-
-       void GPortModel::updatePortPosition()
-       {
-               double xInic, yInic,zInic,xFin,yFin,zFin;
-               _parentBox->getInicPoint(xInic,yInic,zInic);
-               _parentBox->getFinalPoint(xFin, yFin,zFin);
-
-               double posX=xInic,posY=yInic,posZ=zInic;
-               if(_portType==GOUTPUTPORT)
-               {
-                       posY = yFin;
-               }
-               else if(_portType==GINPUTPORT)
-               {
-                       posY = yInic+PORT_HEIGHT;
-               }
-
-               //Attribute '_posInBox' starts with value 0 and it represents the position of the port in the box from left to right
-               posX = xInic + PORT_WIDTH + _posInBox*2*PORT_WIDTH;
-               
-               setInicPoint(posX,posY,posZ);
+    //=========================================================================
 
-               posX=posX+PORT_WIDTH;
-               posY=posY-PORT_HEIGHT;
+    GPortModel::GPortModel( ) {
+        _parentBox             = NULL ;
+        _portType              = -1 ;
+        _posInBox              = 0 ;
+        _isConnected   = false ;
+        _value                 = "" ;
+        _isValueSet            = false ;
 
-               setFinalPoint(posX,posY,posZ);          
-               
-       }
 
-       //=========================================================================
+    }
+
+    //=========================================================================
+
+    GPortModel::~GPortModel( ) {
+    }
+    //=========================================================================
+
+    void GPortModel::registerInBox( GBoxModel *blackBox , int portType , int pos ) {
+        _parentBox     = blackBox ;
+        _portType      = portType ;
+        _posInBox      = pos ;
+        updatePortPosition( ) ;
+    }
+
+    //=========================================================================
+
+    void GPortModel::updatePortPosition( ) {
+        double xInic , yInic , zInic , xFin , yFin , zFin ;
+        _parentBox->getInicPoint( xInic , yInic , zInic ) ;
+        _parentBox->getFinalPoint( xFin , yFin , zFin ) ;
+
+        double posX = xInic , posY = yInic , posZ = zInic ;
+        if ( _portType == GOUTPUTPORT ) {
+            posY = yFin ;
+        } else if ( _portType == GINPUTPORT ) {
+            posY = yInic + PORT_HEIGHT ;
+        }
+
+        //Attribute '_posInBox' starts with value 0 and it represents the position of the port in the box from left to right
+        posX = xInic + ( PORT_WIDTH / 2 ) + _posInBox * 1.1 * PORT_WIDTH ;
+
+        setInicPoint( posX , posY , posZ ) ;
+
+        posX = posX + PORT_WIDTH ;
+        posY = posY - PORT_HEIGHT ;
+
+        setFinalPoint( posX , posY , posZ ) ;
+
+    }
+
+    //=========================================================================
+
+    int GPortModel::getPortType( ) {
+        return _portType ;
+    }
+
+    //=========================================================================
+
+    int GPortModel::getPosInBox( ) {
+        return _posInBox ;
+    }
 
-       int GPortModel::getPortType()
-       {
-               return _portType;
-       }
+    //=========================================================================
 
-       //=========================================================================
-       
-       std::string GPortModel::getStatusText()
-       {
-               std::string temp = "Name:";
+    std::string GPortModel::getStatusText( ) {
+        std::string temp = "" ;
+
+        temp += _bbtkName ;
+        if ( isValueSet( ) ) {
+            temp += "(" ;
+            temp += _value ;
+            temp += ")" ;
+        }
+        temp += " " ;
+        temp += _bbtkType ;
+
+        return temp ;
+    }
+
+    //=========================================================================
+
+    GBoxModel* GPortModel::getParentBox( ) {
+        return _parentBox;
+    }
+
+    //=========================================================================
+
+    bool GPortModel::isConnected( ) {
+        return _isConnected ;
+    }
+
+    //=========================================================================
+
+    void GPortModel::setConnected( bool value ) {
+        _isConnected = value ;
+        notifyObservers( _objectId ) ;
+    }
+
+    //=========================================================================
+
+    void GPortModel::setValue( std::string value ) {
+
+               //Removing Colons JPRG
+               _parentBox->removeColons(value);
+               
+        _value = value ;
+        if ( _value == "" ) {
+            _isValueSet = false ;
+        } else {
+            _isValueSet = true ;
+        }
+        notifyObservers( _objectId ) ;
+    }
+
+    //=========================================================================
+
+    std::string GPortModel::getValue( ) {
+               //JPRG::Adding Colons
+               std::string text = _value;
+               _parentBox->addColons(text);
+               return text;
                
-               temp+=_bbtkName;
-               temp+=" Type:";
-               temp+=_bbtkType;
-               temp+=" Box:";
-               temp+=_parentBox->getBBTKType();
-               if(_portType==GOUTPUTPORT)
-               {
-                       temp+=" [Output Port]";
-               }
-               else if(_portType==GINPUTPORT)
-               {
-                       if(isValueSet())
-                       {
-                               temp+=" Value:";
-                               temp+=_value;
-                       }
-                       temp+=" [Input Port]";
-               }
-
-               return temp;
-       }
-
-       //=========================================================================
-
-       GBlackBoxModel* GPortModel::getParentBox()
-       {
-               return _parentBox;
-       }
-
-       //=========================================================================
-
-       bool GPortModel::isConnected()
-       {
-               return _isConnected;
-       }
-
-       //=========================================================================
-       
-       void GPortModel::setConnected(bool value)
-       {
-               _isConnected=value;
-               notifyObservers(_objectId);
-       }
-
-       //=========================================================================
-
-       void GPortModel::setValue(std::string value)
-       {
-               _value = value;
-               if(_value=="")
-               {
-                       _isValueSet=false;
-               }
-               else
-               {
-                       _isValueSet=true;
-               }
-               notifyObservers(_objectId);
-       }
-
-       //=========================================================================
-       
-       std::string GPortModel::getValue()
-       {
-               return _value;
-       }
-
-       //=========================================================================
-
-       bool GPortModel::isValueSet()
-       {
-               return _isValueSet;
-       }
-
-       //=========================================================================
-
-}  // EO namespace bbtk
+    }
+
+    //=========================================================================
+
+    bool GPortModel::isValueSet( ) {
+        return _isValueSet ;
+    }
+
+    //=========================================================================
+
+    void GPortModel::save( std::string &content ) {
+        content += "PORT\n" ;
+
+        // Port value info
+        content += _bbtkName ;
+        content += ":" ;
+        content += _value ;
+        content += "\n" ;
+    }
+
+    //=========================================================================
+
+} // EO namespace bbtk
 
 // EOF