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

Private GIT Repository
fa773600d4e7356a9368838c3768811750126a1d
[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   void rename(AbstractBoxItem* item);
41   void rename(InterfaceItem* item);
42   GroupWidget* createTopScene();
43   GroupWidget* createChildScene(GroupWidget* parentWidget, BoxItem* upperItemOfGroupItem = NULL);
44   void showRaiseWindow(AbstractBoxItem *item);
45   void showRstClkInter(AbstractBoxItem *item);
46   void addNewEmptyGroup();
47   void addNewFullGroup();  
48
49   inline GroupWidget* getCurrentGroup() { return currentGroup; }
50
51   bool isCurrentProject;
52
53 public slots:
54   QMap<int, QString> getAllGroupNames();
55   GroupScene* searchSceneById(int id);
56   GroupScene* searchSceneByName(QString name);
57   BoxItem* searchBlockItemById(int id);
58   GroupItem* searchGroupItemById(int id);
59   InterfaceItem* searchInterfaceItemById(int id);
60
61   void removeBlock(AbstractBoxItem* item);
62   void duplicateBlock(BoxItem* item);
63   void duplicateInterface(InterfaceItem* item);
64   void addBlock(int idCategory, int idBlock, int idScene);
65   ConnectionItem *addConnection(InterfaceItem *input, InterfaceItem *output);
66   void removeAllBlockConnections(AbstractBoxItem *block);
67   void removeConnection(ConnectionItem *conn);
68   void removeUselessGroupInterfaces();
69   void showBlocksLibrary();
70   void showProperties(InterfaceItem *inter);
71   void connectInterToGroup(InterfaceItem* item);
72   void disconnectInterFromGroup(InterfaceItem* item);
73   void removeGroupInterface(InterfaceItem* item);
74
75   void addConnection();
76
77   void closeCurrentProject();
78
79 private:  
80
81   // the model
82   Parameters* params;
83
84   // attributes that corresponds to the views
85   MainWindow* mainWindow;
86   QList<GroupWidget*> groupList;
87   GroupWidget* currentGroup;
88   GroupWidget *topGroup;
89
90   static int sceneCounter;
91 };
92
93 #endif // __DISPATCHER_H__