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

Private GIT Repository
insert/move/remove block/groups/interface done. Next to fo: loading project file
[blast.git] / GroupItem.h
1 #ifndef __GROUPITEM_H__
2 #define __GROUPITEM_H__
3
4 #include <iostream>
5
6 #include <QtCore>
7 #include <QtGui>
8
9 #include "AbstractBoxItem.h"
10 class AbstractBoxItem;
11
12 class BoxItem;
13 class InterfaceItem;
14 class Dispatcher;
15 class Parameters;
16
17 #include "Exception.h"
18
19 using namespace std;
20 using namespace Qt;
21
22 class GroupItem : public AbstractBoxItem {
23
24 public:
25   /* CAUTION : the parentItem of a group block IS NOT the group item of the parent scene. It is a BlockItem that is
26      wihtin the parent scene. It is used when interfaceItem are added to the current GroupItem: they must be also added
27      to the parent BlockItem.
28
29      NB : this yields a problem when loading a project because scenes are created before creating group and then block.
30      thus, the parentItem must be initialized afterward when all block items have been created.
31
32    */
33   GroupItem(BoxItem* _parentItem, AbstractBlock *_refBlock, Dispatcher *_dispatcher, Parameters *_params) throw(Exception);
34   ~GroupItem();
35
36   // getters
37   BoxItem* getParentItem();
38
39   // setters
40
41   // testers
42   bool isGroupItem();
43
44   // others  
45   void updateShape();
46   void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);  
47   void save(QXmlStreamWriter& writer);
48
49 protected:
50
51   void updateMinimumSize(); // modify the minimum size
52   bool updateGeometry(ChangeType type);
53
54   void mousePressEvent(QGraphicsSceneMouseEvent *event);
55   void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
56   void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
57   void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
58   void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
59
60
61
62 private:
63   /* NOTE : parentItem attribute is never NULL except for the top GroupItem
64   in the top scene
65   */
66   BoxItem* parentItem;
67   QRectF rectTitle;  
68
69
70   InterfaceItem *isHoverInterface(QPointF point);
71 };
72
73 #endif // __GROUPITEM_H__