X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/abbc64cf04a35ab3549d5c516f44c7c5921baa63..df84660fd98b39737692d57b68c8b2c2d34af0f1:/ConnectionItem.h?ds=sidebyside diff --git a/ConnectionItem.h b/ConnectionItem.h index 567a31d..5548715 100644 --- a/ConnectionItem.h +++ b/ConnectionItem.h @@ -10,13 +10,14 @@ class Dispatcher; class Parameters; class InterfaceItem; +class GroupScene; using namespace std; using namespace Qt; -/* NOTES : +/*! \brief ConnectionItem class - A connection item represent a graphical link between two interface items. + A ConnectionItem represents a graphical link between two interface items. Even if it links two in/out interfaces, it is always oriented. The orientation depends on the type and direction of linked interfaces : @@ -40,8 +41,7 @@ public: ConnectionItem(InterfaceItem* _iface1, InterfaceItem* _iface2, Dispatcher* _dispatcher, - Parameters* _params, - QGraphicsItem* _parent); + Parameters* _params); ConnectionItem (const ConnectionItem & copy); ConnectionItem(); ~ConnectionItem(); @@ -50,18 +50,38 @@ public: QPainterPath shape() const; void prepareChange(); - + + // getters + inline GroupScene* getScene() { return (GroupScene*)(scene()); } inline InterfaceItem* getToInterfaceItem(){ return toInterfaceItem; } - inline void setToInterfaceItem(InterfaceItem *iface){ toInterfaceItem = iface; } inline InterfaceItem* getFromInterfaceItem(){ return fromInterfaceItem; } - inline void setFromInterfaceItem(InterfaceItem* iface){ fromInterfaceItem = iface; } inline int getId(){ return id; } + + // setters + inline void setToInterfaceItem(InterfaceItem *iface){ toInterfaceItem = iface; } + inline void setFromInterfaceItem(InterfaceItem* iface){ fromInterfaceItem = iface; } inline void setId(int id){ this->id = id; } - inline bool isSelected() { return selected; } void setSelected(bool selected); - + inline void setVisible(bool state) { visible = state; } + + // testers + inline bool isSelected() { return selected; } + + // others void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - void setPathes(); + + /*! + * \brief setPath + * setPath() allows to compute the graphical shape of the ConnectionItem + * taking into account the position/direction of from and to interface items. + * Depending on their vlaue, it calls on of the dedicated methods. + * + * CAUTION: this method calls prepareGeometryChange() so that the scene + * can automatically updates and redraw the ConnectionItem. Thus, there is + * no need to call update() after the termination of this method. + * + */ + void setPath(); void addInterPoint(QPointF point); static int counter; @@ -73,7 +93,14 @@ protected: void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); private: - + void computeEsse(int orientationFrom); + void computeStaircase(int orientationFrom); + void computeHookSmallEnd(int orientationFrom, int orientationTo); + void computeHookSmallStart(int orientationFrom, int orientationTo); + void computeOpenRect(int orientationFrom, int orientationTo); + void computeElle(int orientationFrom); + void computeCorner(int orientationFrom); + QPointF pointFrom; QPointF pointTo; QList interPoints; @@ -92,13 +119,8 @@ private: bool selected; int id; int marginConn; - void computeEsse(int orientationFrom); - void computeStaircase(int orientationFrom); - void computeHookSmallEnd(int orientationFrom, int orientationTo); - void computeHookSmallStart(int orientationFrom, int orientationTo); - void computeOpenRect(int orientationFrom, int orientationTo); - void computeElle(int orientationFrom); - void computeCorner(int orientationFrom); + + bool visible; friend QDataStream &operator << (QDataStream &out, ConnectionItem &c); friend QDataStream &operator >> (QDataStream &in, ConnectionItem &c);