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

Private GIT Repository
add clk/rst to groups
[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 VHDLConverter;
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 PROJECT_MENU (quint8)1
27 #define ANALYSIS_MENU (quint8)2
28 #define TOOLS_MENU (quint8)3
29
30 // defines for actions
31 #define NONE_ACT (quint16)0
32
33 #define PROJECT_NEW (quint16)1
34 #define PROJECT_OPEN (quint16)2
35 #define PROJECT_SAVE (quint16)4
36 #define PROJECT_SAVEAS (quint16)8
37 #define PROJECT_CLOSE (quint16)16
38 #define PROJECT_LIB (quint16)32
39
40 #define ANALYSIS_ANALYZE (quint16)1
41
42 #define OP_ADD (quint8)0
43 #define OP_REM (quint8)1
44 #define OP_RAZ (quint8)2
45
46 using namespace std;
47 using namespace Qt;
48
49
50 class MainWindow : public QMainWindow {
51
52   Q_OBJECT
53
54 public:
55   explicit MainWindow(QWidget *parent = 0);
56   ~MainWindow();
57   void initialize();
58
59   void addTopGroup(GroupWidget* _topGroup);
60   void removeTopGroup(); // called when closing project
61
62
63   inline BlockLibraryWidget *getLibrary(){return library;}
64
65
66 protected:
67   void closeEvent(QCloseEvent *);
68   void mousePressEvent(QMouseEvent *e);
69   void focusInEvent(QFocusEvent *e);
70
71 private:
72
73   GroupWidget* topGroup;  
74   QStackedWidget *stackedWidget;
75   Dispatcher *dispatcher;
76   Parameters *params;  
77   BlockLibraryWidget *library;
78
79   QString absoluteFilename;
80
81   QString checkNewVersion;
82
83   void save(QString absoluteFilename);
84
85   void createActions();
86   void createMenus();
87
88   void readSettings();
89   void writeSettings();
90
91   /* Menus */
92   QMenuBar *allMenuBar;
93
94   QMenu* projectMenu;
95   quint16 projectMenuEnb;
96   QMenu* analysisMenu;
97   quint16 analysisMenuEnb;
98   QMenu* toolsMenu;
99
100   // actions for project
101   QAction* newProject;
102   QAction* openProject;
103   QAction* saveProject;
104   QAction* saveAsProject;
105   QAction* closeProject;
106   QAction* openLibrary;
107
108   // actions for graph analysis
109   QAction *graphAnalysis;
110
111   // actions for tools
112   QAction *vhdlToXmlAct;
113
114   // versioning related
115   quint8 versionMaj;
116   quint8 versionMin;
117   quint8 revision;
118
119 public slots:
120   void enableProjectActions(bool enbMenu, quint16 mask = 0, quint8 op = 0); // default : add nothing
121   void enableAnalysisActions(bool enbMenu, quint16 mask = 0, quint8 op = 0); // default : add nothing
122
123 private slots:
124   void slotNewProject();
125   void slotLoadProject();
126   void slotSaveProject();
127   void slotSaveAsProject();
128   bool slotCloseProject();
129   void slotOpenBlockLibrary();
130
131   void slotGraphAnalysis();
132
133   void slotVHDLToXml();
134
135   void slotCheckNewVersion(QNetworkReply *reply);
136 };
137
138 #endif // MAINWINDOW_H