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

Private GIT Repository
modified pattern to use only QMap
[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   QString absoluteFilename;
76
77   QString checkNewVersion;
78
79   void save(QString absoluteFilename);
80
81   void createActions();
82   void createMenus();
83
84   void readSettings();
85   void writeSettings();
86
87   /* Menus */
88   QMenuBar *allMenuBar;
89
90   QMenu* projectMenu;
91   quint16 projectMenuEnb;
92   QMenu* toolsMenu;
93
94   QAction* newProject;
95   QAction* openProject;
96   QAction* saveProject;
97   QAction* saveAsProject;
98   QAction* closeProject;
99   QAction* openLibrary;
100
101   QAction *newBlockWidgetAct;
102   QAction *graphValidation;    
103
104
105   // versioning related
106   quint8 versionMaj;
107   quint8 versionMin;
108   quint8 revision;
109
110 public slots:
111   void enableProjectActions(bool enbMenu, quint16 mask = 0, quint8 op = 0); // default : add nothing
112
113 private slots:
114   void slotNewProject();
115   void slotLoadProject();
116   void slotSaveProject();
117   void slotSaveAsProject();
118   bool slotCloseProject();
119   void slotOpenBlockLibrary();
120
121   void slotNewBlockWidget();  
122   void slotGraphValidation();
123
124   void slotCheckNewVersion(QNetworkReply *reply);
125 };
126
127 #endif // MAINWINDOW_H