]> AND Private Git Repository - blast.git/blob - InterfaceItem.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
adding save to gitignore
[blast.git] / InterfaceItem.h
1 #ifndef __INTERFACEITEM_H__
2 #define __INTERFACEITEM_H__
3
4 #include <QtCore>
5 #include <QtGui>
6
7 class Parameters;
8 class ConnectedInterface;
9 class AbstractBoxItem;
10 class ConnectionItem;
11
12
13 using namespace std;
14 using namespace Qt;
15
16 class InterfaceItem {
17
18 public:
19
20
21
22   InterfaceItem(double _position,
23                   int _orientation,
24                   ConnectedInterface* _refInter,
25                   AbstractBoxItem* _owner,
26                   Parameters* _params);
27   InterfaceItem();
28   QRectF boundingRect() const;
29   void paint(QPainter *painter);
30
31   // getters
32   inline int getId() { return id; }
33   inline QString getName() { return name; }
34   inline double getPositionRatio() { return positionRatio; }
35   inline double getPosition() { return position; }
36   inline int getOrientation() { return orientation; }
37   inline AbstractBoxItem *getOwner() { return owner; }
38   inline int getNameWidth() { return nameWidth; }
39   inline int getNameHeight() { return nameHeight; }
40   QString getStrOrientation();
41   static int getIntOrientation(QString str);
42   QPointF getEndPointInGroup();
43
44   // setters
45   void setOriginPoint();
46   inline void setId(int id){ this->id = id; }
47   inline void setName(QString name){ this->name = name; }
48   inline void setPositionRatio(double ratio) { positionRatio = ratio; }
49   inline void setOrientation(int _orientation){ orientation = _orientation; }
50
51   // others
52   void addConnectionItem(ConnectionItem* item);
53   void removeConnectionItem(ConnectionItem* item);
54   bool canConnectWith(InterfaceItem* iface);
55   bool connectWith(InterfaceItem* iface);
56   void unconnectTo(InterfaceItem *iface);
57   void updatePosition();
58
59   AbstractBoxItem* owner;
60   ConnectedInterface* refInter;
61   Parameters* params;
62   bool selected;
63   bool visible;
64
65   static int counter;
66
67   QList<ConnectionItem*> connections; // the connection items that are bounded to this interface item
68
69
70 private:
71   int id;
72   QString name;
73   double positionRatio;
74   int position; // position in pixels on the "orientation side" of the owner
75   int orientation; // north, south, east, west
76   QPointF originPoint; // the point where starts the drawing (along the box border) NB : in the owner coordinates
77   int nameWidth; // the graphical width of the name, computed from default font metrics
78   int nameHeight; // the graphical height of the name, computed from default font metrics
79
80   friend QDataStream &operator<<(QDataStream &out, InterfaceItem *b);
81   friend QDataStream &operator>>(QDataStream &in, InterfaceItem &b);
82 };
83
84 /*
85 QDataStream & operator <<(QDataStream &out, InterfaceItem *b);
86 QDataStream & operator >>(QDataStream &in, InterfaceItem &b);
87 */
88 #endif