]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsKernelEditorGraphic/GPortModel.cxx
Added the possibility to delete all the boxes in the scene
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsKernelEditorGraphic / GPortModel.cxx
index ded26739afc74b094774cbcf908593c4855441a9..fa208106e601938876cc21b4f7fb467c6fb7dec3 100644 (file)
@@ -44,6 +44,11 @@ namespace bbtk
        GPortModel::GPortModel()
        {               
                _parentBox = NULL;
+               _portType=-1;
+               _posInBox=0;
+               _isConnected=false;
+               _value="";
+               _isValueSet=false;
        }
 
        //=========================================================================
@@ -52,12 +57,135 @@ namespace bbtk
        }
        //=========================================================================
 
-       void GPortModel::registerInBox(GBlackBoxModel *blackBox)
+       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;
+
+               setFinalPoint(posX,posY,posZ);          
+               
+       }
+
+       //=========================================================================
+
+       int GPortModel::getPortType()
+       {
+               return _portType;
+       }
+
+       //=========================================================================
+       
+       std::string GPortModel::getStatusText()
+       {
+               std::string temp = "Name:";
+               
+               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
 
 // EOF