summaryrefslogtreecommitdiff
path: root/utils/regtools/qeditor/regedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor/regedit.h')
-rw-r--r--utils/regtools/qeditor/regedit.h282
1 files changed, 282 insertions, 0 deletions
diff --git a/utils/regtools/qeditor/regedit.h b/utils/regtools/qeditor/regedit.h
new file mode 100644
index 0000000000..8615816783
--- /dev/null
+++ b/utils/regtools/qeditor/regedit.h
@@ -0,0 +1,282 @@
1#ifndef REGEDIT_H
2#define REGEDIT_H
3
4#include <QComboBox>
5#include <QTreeWidget>
6#include <QVBoxLayout>
7#include <QTabWidget>
8#include <QSplitter>
9#include <QLineEdit>
10#include <QPushButton>
11#include <QLabel>
12#include <QListWidget>
13#include <QGroupBox>
14#include <QToolButton>
15#include <QMenu>
16#include <QCheckBox>
17#include <QRadioButton>
18#include <QButtonGroup>
19#include <QDebug>
20#include <QScrollArea>
21#include "backend.h"
22#include "settings.h"
23#include "mainwindow.h"
24#include "aux.h"
25
26class AbstractRegEditPanel
27{
28public:
29 AbstractRegEditPanel() {}
30 virtual ~AbstractRegEditPanel() {}
31 virtual void OnModified(bool mod) = 0;
32};
33
34class EmptyEditPanel : public QWidget, public AbstractRegEditPanel
35{
36 Q_OBJECT
37public:
38 EmptyEditPanel(QWidget *parent);
39
40signals:
41 void OnModified(bool mod);
42
43protected:
44};
45
46class SocEditPanel : public QWidget, public AbstractRegEditPanel
47{
48 Q_OBJECT
49public:
50 SocEditPanel(SocRef ref, QWidget *parent = 0);
51
52signals:
53 void OnModified(bool mod);
54
55protected slots:
56 void OnTextEdited();
57 void OnNameEdited(const QString& text);
58
59protected:
60 SocRef m_ref;
61 QGroupBox *m_name_group;
62 QLineEdit *m_name_edit;
63 QGroupBox *m_desc_group;
64 MyTextEditor *m_desc_edit;
65};
66
67class DevEditPanel : public QWidget, public AbstractRegEditPanel
68{
69 Q_OBJECT
70public:
71 DevEditPanel(SocDevRef ref, QWidget *parent = 0);
72
73signals:
74 void OnModified(bool mod);
75
76protected slots:
77 void OnInstActivated(int row, int column);
78 void OnInstChanged(int row, int column);
79 void OnNameEdited(const QString& text);
80 void OnLongNameEdited(const QString& text);
81 void OnVersionEdited(const QString& text);
82 void OnDescEdited();
83
84protected:
85 void FillRow(int row, const soc_dev_addr_t& addr);
86 void CreateNewRow(int row);
87
88 enum
89 {
90 DevInstDeleteType = QTableWidgetItem::UserType,
91 DevInstNewType
92 };
93
94 enum
95 {
96 DevInstIconColumn = 0,
97 DevInstNameColumn = 1,
98 DevInstAddrColumn = 2,
99 };
100
101 SocDevRef m_ref;
102 QGroupBox *m_name_group;
103 QLineEdit *m_name_edit;
104 QGroupBox *m_long_name_group;
105 QLineEdit *m_long_name_edit;
106 QGroupBox *m_version_group;
107 QLineEdit *m_version_edit;
108 QGroupBox *m_instances_group;
109 QTableWidget *m_instances_table;
110 QGroupBox *m_desc_group;
111 MyTextEditor *m_desc_edit;
112};
113
114class RegEditPanel : public QWidget, public AbstractRegEditPanel
115{
116 Q_OBJECT
117public:
118 RegEditPanel(SocRegRef ref, QWidget *parent = 0);
119
120signals:
121 void OnModified(bool mod);
122
123protected slots:
124 void OnInstActivated(int row, int column);
125 void OnInstChanged(int row, int column);
126 void OnNameEdited(const QString& text);
127 void OnDescEdited();
128 void OnSctEdited(int state);
129 void OnFormulaChanged(int index);
130 void OnFormulaStringChanged(const QString& text);
131 void OnFormulaGenerate(bool checked);
132
133protected:
134 void CreateNewAddrRow(int row);
135 void FillRow(int row, const soc_reg_addr_t& addr);
136 void UpdateFormula();
137 void UpdateWarning(int row);
138
139 enum
140 {
141 RegInstDeleteType = QTableWidgetItem::UserType,
142 RegInstNewType
143 };
144
145 enum
146 {
147 RegInstIconColumn = 0,
148 RegInstNameColumn,
149 RegInstAddrColumn,
150 RegInstNrColumns,
151 };
152
153 SocRegRef m_ref;
154 QGroupBox *m_name_group;
155 QLineEdit *m_name_edit;
156 QGroupBox *m_instances_group;
157 QTableWidget *m_instances_table;
158 QGroupBox *m_desc_group;
159 QGroupBox *m_flags_group;
160 QCheckBox *m_sct_check;
161 QFont m_reg_font;
162 QGroupBox *m_formula_group;
163 QButtonGroup *m_formula_radio_group;
164 QLabel *m_formula_type_label;
165 QComboBox *m_formula_combo;
166 QLineEdit *m_formula_string_edit;
167 QPushButton *m_formula_string_gen;
168 RegSexyDisplay *m_sexy_display;
169 MyTextEditor *m_desc_edit;
170 QGroupBox *m_field_group;
171 QTableWidget *m_field_table;
172};
173
174class FieldEditPanel : public QWidget, public AbstractRegEditPanel
175{
176 Q_OBJECT
177public:
178 FieldEditPanel(SocFieldRef ref, QWidget *parent = 0);
179
180signals:
181 void OnModified(bool mod);
182
183protected slots:
184 void OnDescEdited();
185 void OnNameEdited(const QString& text);
186 void OnBitRangeEdited(const QString& string);
187 void OnValueActivated(int row, int column);
188 void OnValueChanged(int row, int column);
189
190protected:
191 void CreateNewRow(int row);
192 void FillRow(int row, const soc_reg_field_value_t& val);
193 void UpdateWarning(int row);
194 void UpdateDelegates();
195
196 enum
197 {
198 FieldValueDeleteType = QTableWidgetItem::UserType,
199 FieldValueNewType,
200 };
201
202 enum
203 {
204 FieldValueIconColumn = 0,
205 FieldValueNameColumn,
206 FieldValueValueColumn,
207 FieldValueDescColumn,
208 FieldValueNrColumns,
209 };
210
211 SocFieldRef m_ref;
212 QGroupBox *m_name_group;
213 QLineEdit *m_name_edit;
214 QGroupBox *m_bitrange_group;
215 QLineEdit *m_bitrange_edit;
216 QGroupBox *m_desc_group;
217 MyTextEditor *m_desc_edit;
218 QGroupBox *m_value_group;
219 QTableWidget *m_value_table;
220};
221
222class RegEdit : public QWidget, public DocumentTab
223{
224 Q_OBJECT
225public:
226 RegEdit(Backend *backend, QWidget *parent = 0);
227 ~RegEdit();
228 virtual bool Quit();
229
230signals:
231 void OnModified(bool mod);
232
233protected slots:
234 void OnSocItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
235 void OnSocItemActivated(QTreeWidgetItem *current, int column);
236 void OnOpen();
237 void OnSave();
238 void OnSaveAs();
239 void OnSocModified(bool modified);
240 void OnNew();
241
242protected:
243 void LoadSocFile(const QString& filename);
244 void UpdateSocFile();
245 void FillSocTree();
246 void FillSocTreeItem(QTreeWidgetItem *_item);
247 void FillDevTreeItem(QTreeWidgetItem *_item);
248 void FillRegTreeItem(QTreeWidgetItem *_item);
249 void SetPanel(QWidget *panel);
250 void DisplaySoc(SocRef ref);
251 void DisplayDev(SocDevRef ref);
252 void DisplayReg(SocRegRef ref);
253 void DisplayField(SocFieldRef ref);
254 bool CloseSoc();
255 bool SaveSoc();
256 bool SaveSocAs();
257 bool SaveSocFile(const QString& filename);
258 bool GetFilename(QString& filename, bool save);
259 void SetModified(bool add, bool mod);
260 void FixupEmptyItem(QTreeWidgetItem *item);
261 void MakeItalic(QTreeWidgetItem *item, bool it);
262 void AddDevice(QTreeWidgetItem *item);
263 void AddRegister(QTreeWidgetItem *_item);
264 void UpdateName(QTreeWidgetItem *current);
265 void AddField(QTreeWidgetItem *_item);
266 void CreateNewDeviceItem(QTreeWidgetItem *parent);
267 void CreateNewRegisterItem(QTreeWidgetItem *parent);
268 void CreateNewFieldItem(QTreeWidgetItem *parent);
269
270 QGroupBox *m_file_group;
271 QToolButton *m_file_open;
272 QToolButton *m_file_save;
273 QLineEdit *m_file_edit;
274 QSplitter *m_splitter;
275 QTreeWidget *m_soc_tree;
276 Backend *m_backend;
277 bool m_modified;
278 SocFile m_cur_socfile;
279 QWidget *m_right_panel;
280};
281
282#endif /* REGEDIT_H */