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

Private GIT Repository
1st commit of all files
[blast.git] / Parameters.h
1 #ifndef __PARAMETERS_H__\r
2 #define __PARAMETERS_H__\r
3 \r
4 #include <iostream>\r
5 \r
6 #include <QtCore>\r
7 #include <QtGui>\r
8 #include <QtWidgets>\r
9 #include <QtXml>\r
10 #include <QtXmlPatterns>\r
11 \r
12 class Dispatcher;\r
13 class BlockLibraryTree;\r
14 class AbstractBlock;\r
15 class ReferenceBlock;\r
16 class GroupBlock;\r
17 class FunctionalBlock;\r
18 class GroupScene;\r
19 class GroupItem;\r
20 class BoxItem;\r
21 class InterfaceItem;\r
22 class Graph;\r
23 \r
24 #include "BlockImplementation.h"\r
25 \r
26 #include "Exception.h"\r
27 class Exception;\r
28 \r
29 // defines for current mode\r
30 #define MODE_EDITION 1\r
31 #define MODE_ADDBLOC 2\r
32 #define MODE_ADDCONN 3\r
33 \r
34 \r
35 using namespace std;\r
36 using namespace Qt;\r
37 \r
38 class Parameters {\r
39 \r
40 public :\r
41 \r
42   enum Direction { NoDirection, East, North, West, South};\r
43 \r
44   /* state of cursorn:\r
45      - CursorInBlock: cursor is within the main box of a block/group item\r
46      - CursorOnBlockBorder: cursor is on a block/group item border\r
47      - CursorOnInterface: cursor is on a block/group item Interface\r
48      - CursorOnConnection: cursor is one a connection\r
49      - CursorNowhere: none of the previous cases\r
50   */\r
51   enum CursorState { CursorNowhere = 0, CursorInBlock, CursorInGroupTitle, CursorOnBorder, CursorOnInterface, CursorOnConnection };\r
52   /* state of edition:\r
53 \r
54    */\r
55   enum EditState { EditNoOperation = 0, EditBlockMove, EditBlockResize, EditGroupMove, EditGroupResize, EditInterfaceMove, EditInterfaceDeselect, EditConnectionResize, EditStartConnection, EditCloseConnection, EditAbortConnection};\r
56 \r
57   enum XmlFileType { Configuration = 1, Reference, Implementation, Project };\r
58   Parameters();\r
59   ~Parameters();\r
60 \r
61   // getter\r
62   inline GroupScene* getCurrentScene() { return currentScene; }\r
63   inline GroupScene* getTopScene() { return topScene; }\r
64 \r
65   // setter\r
66   inline void setTopScene(GroupScene* _topScene) { topScene = _topScene; }\r
67   inline void setCurrentScene(GroupScene* _currentScene) { currentScene = _currentScene; }\r
68   inline void setEditState(EditState state) { editState = state; }\r
69   inline void setCursorState(CursorState state) { cursorState = state; }\r
70   inline void setDispatcher(Dispatcher* _dispatcher) { dispatcher = _dispatcher;}\r
71 \r
72   /***************************************************\r
73     attributes that are general to the application\r
74   ***************************************************/  \r
75   BlockLibraryTree* categoryTree;\r
76   QList<QString> refPathes;\r
77   QList<QString> implPathes;\r
78   QList<ReferenceBlock*> availableBlocks;\r
79   QList<BlockImplementation*> availableImplementations;\r
80 \r
81 \r
82   QString refLib;\r
83   QString implLib;\r
84 \r
85   // defaults for vhdl\r
86   int wbDataWidth;\r
87   int wbAddressWidth;\r
88   // defaults for scene elements\r
89   int defaultBlockWidth;\r
90   int defaultBlockHeight;\r
91   QFont defaultBlockFont;\r
92   QString defaultBlockFontName;\r
93   int defaultBlockFontSize;\r
94   int arrowWidth;\r
95   int arrowHeight;\r
96   int arrowLineLength;\r
97   QFont defaultIfaceFont;\r
98   QString defaultIfaceFontName;\r
99   int defaultIfaceFontSize;\r
100   int connGapLength;\r
101   QPainterPath inArrow;\r
102   QPainterPath outArrow;\r
103 \r
104   /***************************************************\r
105    attributes that are specific for the current project\r
106   ****************************************************/\r
107   int sceneMode; // takes values from MODE_XXX\r
108   CursorState cursorState;\r
109   EditState editState; // takes values from EDIT_STATE_XXX\r
110   bool unsaveModif;\r
111   bool isRstClkShown;\r
112 \r
113   Graph* createGraph();\r
114   void destroyGraph();\r
115   inline Graph* getGraph() { return graph; }\r
116   GroupBlock* addGroupBlock(); // adding an empty GroupBlock to the current group\r
117   FunctionalBlock* addFunctionalBlock(int idCategory, int idBlock); // adding a functional block to current group\r
118   FunctionalBlock* duplicateFunctionalBlock(FunctionalBlock* block); // adding a copy of a functional block to current group\r
119 \r
120 \r
121   void clear();\r
122 \r
123   QDomElement openProjectFile(const QString& projectFileName) throw(Exception);\r
124   void loadProject(QDomElement root);\r
125 \r
126   void loadBlastConfiguration(QString confFile) throw(Exception);\r
127   void loadReferencesFromXml() throw(Exception);\r
128   void loadReferencesFromLib() throw(Exception);\r
129   void saveReferencesToLib() throw(Exception);\r
130 \r
131   void loadImplementationsFromXml() throw(Exception);\r
132   void loadImplementationsFromLib() throw(Exception);\r
133   void saveImplementationsToLib() throw(Exception);\r
134 \r
135   void addAvailableBlock(ReferenceBlock *block);  \r
136   void parametersValidation();\r
137   void connectionsValidation();\r
138   QList<AbstractBlock *> getBlocksToConfigure();\r
139 \r
140   void updateToolbar();\r
141 \r
142 \r
143   ReferenceBlock* searchBlockByXml(QString xmlName);\r
144   ReferenceBlock* searchBlockByMd5(QString sumMd5);\r
145 \r
146   void save(QString confFile);\r
147 \r
148 \r
149   QString projectPath;\r
150 \r
151 private:\r
152   Graph* graph; // the graph model of blocks\r
153   Dispatcher* dispatcher;\r
154   GroupScene* topScene;\r
155   GroupScene* currentScene;\r
156 \r
157   void setArrowPathes();  \r
158   void updateIds();\r
159 \r
160   GroupScene* searchSceneById(int id, GroupScene* scene);\r
161   BoxItem* searchBlockItemById(int id, GroupScene* scene);\r
162   GroupItem* searchGroupItemById(int id, GroupScene* scene);\r
163   InterfaceItem* searchInterfaceItemById(int id, GroupScene *scene);\r
164 \r
165   void validateXmlFile(const QString& xmlFileName, const QString& xsdFileName, XmlFileType fileType) throw(Exception);\r
166   bool validate(QFile& fileXml, QFile& fileSchema);\r
167 \r
168 };\r
169 \r
170 \r
171 #endif // __PARAMETERS_H__\r