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

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