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

Private GIT Repository
1st commit of all files
[blast.git] / MainWindow.h
1 #ifndef __MAINWINDOW_H__
2 #define __MAINWINDOW_H__
3
4 #include <iostream>
5
6 #include <QtCore>
7 #include <QtGui>
8 #include <QtNetwork>
9 #include <QtWidgets>
10
11 class Dispatcher;
12 class Parameters;
13 class BlockLibraryWidget;
14 class GroupWidget;
15 class BlockWidget;
16 class Graph;
17
18 // versioning related
19 #define MAGIC_STRING "opentrace"
20 #define VERSION_MAJ (quint8)0 // major version code
21 #define VERSION_MIN (quint8)2 // minor version number
22 #define REVISION (quint8)1 // revision number of current version
23
24
25 // defines for menus
26 #define TRACE_MENU (quint8)1
27
28 // defines for actions
29 #define NONE_ACT (quint16)0
30
31 #define PROJECT_NEW (quint16)1
32 #define PROJECT_OPEN (quint16)2
33 #define PROJECT_SAVE (quint16)4
34 #define PROJECT_SAVEAS (quint16)8
35 #define PROJECT_CLOSE (quint16)16
36 #define PROJECT_LIB (quint16)32
37
38 #define OP_ADD (quint8)0
39 #define OP_REM (quint8)1
40 #define OP_RAZ (quint8)2
41
42 using namespace std;
43 using namespace Qt;
44
45
46 class MainWindow : public QMainWindow {
47
48   Q_OBJECT
49
50 public:
51   explicit MainWindow(QWidget *parent = 0);
52   ~MainWindow();
53   void initialize();
54
55   void addTopGroup(GroupWidget* _topGroup);
56   void removeTopGroup(); // called when closing project
57
58
59   inline BlockLibraryWidget *getLibrary(){return library;}
60
61
62 protected:
63   void closeEvent(QCloseEvent *);
64   void mousePressEvent(QMouseEvent *e);
65   void focusInEvent(QFocusEvent *e);
66
67 private:
68
69   GroupWidget* topGroup;  
70   QStackedWidget *stackedWidget;
71   Dispatcher *dispatcher;
72   Parameters *params;  
73   BlockLibraryWidget *library;
74
75   bool isCurrentProject;
76   QString absoluteFilename;
77
78   QString checkNewVersion;
79
80   void save(QString absoluteFilename);
81
82   void createActions();
83   void createMenus();
84
85   void readSettings();
86   void writeSettings();
87
88   /* Menus */
89   QMenuBar *allMenuBar;
90
91   QMenu* projectMenu;
92   quint16 projectMenuEnb;
93   QMenu* toolsMenu;
94
95   QAction* newProject;
96   QAction* openProject;
97   QAction* saveProject;
98   QAction* saveAsProject;
99   QAction* closeProject;
100   QAction* openLibrary;
101
102   QAction *newBlockWidgetAct;
103   QAction *graphValidation;    
104
105
106   // versioning related
107   quint8 versionMaj;
108   quint8 versionMin;
109   quint8 revision;
110
111 public slots:
112   void enableProjectActions(bool enbMenu, quint16 mask = 0, quint8 op = 0); // default : add nothing
113
114 private slots:
115   void slotNewProject();
116   void slotLoadProject();
117   void slotSaveProject();
118   void slotSaveAsProject();
119   void slotCloseProject();
120   void slotOpenBlockLibrary();
121
122   void slotNewBlockWidget();  
123   void slotGraphValidation();
124
125   void slotCheckNewVersion(QNetworkReply *reply);
126 };
127
128 #endif // MAINWINDOW_H