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

Private GIT Repository
added impl xsd + patterns in impls
[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   GroupWidget *addNewEmptyGroup(GroupScene *scene, bool show = true);
48   void addNewFullGroup();  
49
50   inline GroupWidget* getCurrentGroup() { return currentGroup; }
51
52   inline void setSceneCounter(int value) { sceneCounter = value;}
53
54   bool isCurrentProject;
55
56 public slots:
57   QMap<int, QString> getAllGroupNames();
58   GroupScene* searchSceneById(int id);
59   GroupScene* searchSceneByName(QString name);
60   BoxItem* searchBlockItemById(int id);
61   GroupItem* searchGroupItemById(int id);
62   InterfaceItem* searchInterfaceItemById(int id);
63
64   // block ops
65   void addBlock(int idCategory, int idBlock, int idScene);
66   void removeBlock(BoxItem* item);
67   void duplicateBlock(BoxItem* item);
68   void renameBlockOrGroup(AbstractBoxItem* item);
69
70   // interface ops
71   /*!
72    * \brief connectInterToGroup
73    * \param item item is always owned by a BoxItem
74    *
75    * This method is called only when the user right clicks on an InterfaceItem (that belongs
76    * to a BoxItem and if it is NOT connected to an InterfaceItem of the GroupItem) and chooses
77    * connect to group in the contextual menu.
78    * Thus, parameter item is always owned by a BoxItem
79    */
80   void connectInterToGroup(InterfaceItem* item);
81   /*!
82    * \brief disconnectInterFromGroup
83    * \param item item is always owned by a BoxItem
84    *
85    * This method is called only when the user right clicks on an InterfaceItem (that belongs
86    * to a BoxItem and if it IS connected to an InterfaceItem of the GroupItem) and chooses
87    * disconnect from group in the contextual menu.
88    * Thus, parameter item is always owned by a BoxItem
89    */
90   void disconnectInterFromGroup(InterfaceItem* item);
91   /*!
92    * \brief removeBlockInterface
93    * \param item item is always owned by a BoxItem
94    *
95    * This method is called only when the user right clicks on an InterfaceItem (that belongs
96    * to a BoxItem and has a multiplicity > 1) and chooses remove in the contextual menu.
97    * Thus, parameter item is always owned by a BoxItem
98    */
99   void removeBlockInterface(InterfaceItem* item);
100   /*!
101    * \brief removeGroupInterface
102    * \param item item is always owned by a GroupItem
103    *
104    * This method is called only when the user right clicks on an InterfaceItem (that belongs
105    * to a GroupItem and if it is connected only to an inner interface) and chooses remove in the contextual menu.
106    * Thus, parameter item is always owned by a GroupItem
107    */
108   void removeGroupInterface(InterfaceItem* item);
109   void duplicateInterface(InterfaceItem* item);
110   void showProperties(InterfaceItem *inter);
111   void renameInterface(InterfaceItem* item);
112
113   // connection ops
114   ConnectionItem *addConnection(InterfaceItem *input, InterfaceItem *output);
115   void removeAllBlockConnections(BoxItem *item);
116   void removeConnection(ConnectionItem *conn);
117
118
119   // others
120   void showBlocksLibrary();
121
122
123   void closeCurrentProject();
124
125 private:  
126
127   // the model
128   Parameters* params;
129
130   // attributes that corresponds to the views
131   MainWindow* mainWindow;
132   QList<GroupWidget*> groupList;
133   GroupWidget* currentGroup;
134   GroupWidget *topGroup;
135
136   static int sceneCounter;
137 };
138
139 #endif // __DISPATCHER_H__