]> AND Private Git Repository - blast.git/blob - Dispatcher.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] / Dispatcher.h
1 #ifndef __DISPATCHER_H__
2 #define __DISPATCHER_H__
3
4 #include <iostream>
5
6 #include <QtCore>
7 #include <QtGui>
8 #include <QtWidgets>
9
10 class Graph;
11 class Parameters;
12 class MainWindow;
13 class GroupWidget;
14 class GroupScene;
15 class AbstractBoxItem;
16 class GroupItem;
17 class BoxItem;
18 class ConnectionItem;
19 class InterfaceItem;
20
21
22
23 using namespace std;
24 using namespace Qt;
25
26 class Dispatcher {
27
28 public:
29   Dispatcher(Parameters* _params,             
30              MainWindow* _window);
31
32   GroupWidget* loadProject(const QString& filename);
33
34   inline int getNumberOfScenes() { return groupList.length(); }
35   bool connect(InterfaceItem *iface1, InterfaceItem *iface2);
36   void checkSelection();
37   void unselectAllItems(int direction=0);
38   void setCurrentGroupWidget(GroupWidget *win);
39   void changeConnectionMode(int mode = -1);
40
41
42   GroupWidget* createTopScene();
43   GroupWidget* createChildScene(GroupWidget* parentWidget, BoxItem* upperItemOfGroupItem = NULL);
44   void destroyScene(GroupScene* scene);
45   void showRaiseWindow(BoxItem *item);
46   void showRstClkInter(AbstractBoxItem *item);
47   void addNewEmptyGroup(GroupScene *scene);
48   void addNewFullGroup();  
49
50   inline GroupWidget* getCurrentGroup() { return currentGroup; }
51
52   bool isCurrentProject;
53
54 public slots:
55   QMap<int, QString> getAllGroupNames();
56   GroupScene* searchSceneById(int id);
57   GroupScene* searchSceneByName(QString name);
58   BoxItem* searchBlockItemById(int id);
59   GroupItem* searchGroupItemById(int id);
60   InterfaceItem* searchInterfaceItemById(int id);
61
62   // block ops
63   void addBlock(int idCategory, int idBlock, int idScene);
64   void removeBlock(BoxItem* item);
65   void duplicateBlock(BoxItem* item);
66   void renameBlockOrGroup(AbstractBoxItem* item);
67
68   // interface ops
69   /*!
70    * \brief connectInterToGroup
71    * \param item item is always owned by a BoxItem
72    *
73    * This method is called only when the user right clicks on an InterfaceItem (that belongs
74    * to a BoxItem and if it is NOT connected to an InterfaceItem of the GroupItem) and chooses
75    * connect to group in the contextual menu.
76    * Thus, parameter item is always owned by a BoxItem
77    */
78   void connectInterToGroup(InterfaceItem* item);
79   /*!
80    * \brief disconnectInterFromGroup
81    * \param item item is always owned by a BoxItem
82    *
83    * This method is called only when the user right clicks on an InterfaceItem (that belongs
84    * to a BoxItem and if it IS connected to an InterfaceItem of the GroupItem) and chooses
85    * disconnect from group in the contextual menu.
86    * Thus, parameter item is always owned by a BoxItem
87    */
88   void disconnectInterFromGroup(InterfaceItem* item);
89   /*!
90    * \brief removeBlockInterface
91    * \param item item is always owned by a BoxItem
92    *
93    * This method is called only when the user right clicks on an InterfaceItem (that belongs
94    * to a BoxItem and has a multiplicity > 1) and chooses remove in the contextual menu.
95    * Thus, parameter item is always owned by a BoxItem
96    */
97   void removeBlockInterface(InterfaceItem* item);
98   /*!
99    * \brief removeGroupInterface
100    * \param item item is always owned by a GroupItem
101    *
102    * This method is called only when the user right clicks on an InterfaceItem (that belongs
103    * to a GroupItem and if it is connected only to an inner interface) and chooses remove in the contextual menu.
104    * Thus, parameter item is always owned by a GroupItem
105    */
106   void removeGroupInterface(InterfaceItem* item);
107   void duplicateInterface(InterfaceItem* item);
108   void showProperties(InterfaceItem *inter);
109   void renameInterface(InterfaceItem* item);
110
111   // connection ops
112   ConnectionItem *addConnection(InterfaceItem *input, InterfaceItem *output);
113   void removeAllBlockConnections(BoxItem *item);
114   void removeConnection(ConnectionItem *conn);
115
116
117   // others
118   void showBlocksLibrary();
119
120
121   void closeCurrentProject();
122
123 private:  
124
125   // the model
126   Parameters* params;
127
128   // attributes that corresponds to the views
129   MainWindow* mainWindow;
130   QList<GroupWidget*> groupList;
131   GroupWidget* currentGroup;
132   GroupWidget *topGroup;
133
134   static int sceneCounter;
135 };
136
137 #endif // __DISPATCHER_H__