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.h276
1 files changed, 139 insertions, 137 deletions
diff --git a/utils/regtools/qeditor/regedit.h b/utils/regtools/qeditor/regedit.h
index c56f0d9026..2540500f29 100644
--- a/utils/regtools/qeditor/regedit.h
+++ b/utils/regtools/qeditor/regedit.h
@@ -38,6 +38,8 @@
38#include <QButtonGroup> 38#include <QButtonGroup>
39#include <QDebug> 39#include <QDebug>
40#include <QScrollArea> 40#include <QScrollArea>
41#include <QSpinBox>
42#include <QFormLayout>
41#include "backend.h" 43#include "backend.h"
42#include "settings.h" 44#include "settings.h"
43#include "mainwindow.h" 45#include "mainwindow.h"
@@ -48,7 +50,7 @@ class AbstractRegEditPanel
48public: 50public:
49 AbstractRegEditPanel() {} 51 AbstractRegEditPanel() {}
50 virtual ~AbstractRegEditPanel() {} 52 virtual ~AbstractRegEditPanel() {}
51 virtual void OnModified(bool mod) = 0; 53 virtual void OnModified() = 0;
52}; 54};
53 55
54class EmptyEditPanel : public QWidget, public AbstractRegEditPanel 56class EmptyEditPanel : public QWidget, public AbstractRegEditPanel
@@ -58,7 +60,7 @@ public:
58 EmptyEditPanel(QWidget *parent); 60 EmptyEditPanel(QWidget *parent);
59 61
60signals: 62signals:
61 void OnModified(bool mod); 63 void OnModified();
62 64
63protected: 65protected:
64}; 66};
@@ -67,178 +69,167 @@ class SocEditPanel : public QWidget, public AbstractRegEditPanel
67{ 69{
68 Q_OBJECT 70 Q_OBJECT
69public: 71public:
70 SocEditPanel(SocRef ref, QWidget *parent = 0); 72 SocEditPanel(const soc_desc::soc_ref_t& ref, QWidget *parent = 0);
71 73
72signals: 74signals:
73 void OnModified(bool mod); 75 void OnModified();
74 76
75protected slots: 77protected slots:
76 void OnTextEdited(); 78 void OnTextEdited();
77 void OnNameEdited(const QString& text); 79 void OnNameEdited(const QString& text);
80 void OnTitleEdited(const QString& text);
81 void OnVersionEdited(const QString& text);
82 void OnIsaEdited(const QString& text);
83 void OnAuthorActivated(QTableWidgetItem *);
84 void OnAuthorChanged(QTableWidgetItem *);
78 85
79protected: 86protected:
80 SocRef m_ref; 87 soc_desc::soc_ref_t m_ref;
81 QGroupBox *m_name_group; 88 QTableWidget *m_authors_list;
82 QLineEdit *m_name_edit;
83 QGroupBox *m_desc_group;
84 MyTextEditor *m_desc_edit; 89 MyTextEditor *m_desc_edit;
85}; 90};
86 91
87class DevEditPanel : public QWidget, public AbstractRegEditPanel 92class NodeInstanceEditPanel : public QWidget
88{ 93{
89 Q_OBJECT 94 Q_OBJECT
90public: 95public:
91 DevEditPanel(SocDevRef ref, QWidget *parent = 0); 96 NodeInstanceEditPanel(const soc_desc::node_ref_t& ref, soc_id_t inst_id,
97 QWidget *parent = 0);
98 soc_id_t GetId();
99 soc_desc::instance_t& GetInstance();
92 100
93signals: 101signals:
94 void OnModified(bool mod); 102 void OnModified();
95 103
96protected slots: 104protected slots:
97 void OnInstActivated(int row, int column);
98 void OnInstChanged(int row, int column);
99 void OnNameEdited(const QString& text); 105 void OnNameEdited(const QString& text);
100 void OnLongNameEdited(const QString& text); 106 void OnTitleEdited(const QString& text);
101 void OnVersionEdited(const QString& text); 107 void OnDescEdited(const QString& text);
102 void OnDescEdited(); 108 void OnTypeChanged(int index);
109 void OnAddrChanged(uint addr);
110 void OnBaseChanged(uint base);
111 void OnStrideChanged(uint stride);
112 void OnFirstChanged(int first);
113 void OnCountChanged(int count);
114 void OnFormulaChanged(const QString& formula);
115 void OnVariableChanged(const QString& variable);
116 void OnAddressActivated(QTableWidgetItem *);
117 void OnAddressChanged(QTableWidgetItem *);
103 118
104protected: 119protected:
105 void FillRow(int row, const soc_dev_addr_t& addr); 120 void UpdateType(int type);
106 void CreateNewRow(int row); 121
107 122 soc_desc::node_ref_t m_ref;
108 enum 123 soc_id_t m_id;
109 { 124 QComboBox *m_type_combo;
110 DevInstDeleteType = QTableWidgetItem::UserType, 125 QWidget *m_single_group;
111 DevInstNewType 126 QWidget *m_range_group;
112 }; 127 QWidget *m_formula_group;
113 128 QWidget *m_stride_group;
114 enum 129 QWidget *m_list_group;
115 { 130 QStyledItemDelegate *m_table_delegate;
116 DevInstIconColumn = 0, 131 SocFieldEditorCreator *m_table_edit_factory;
117 DevInstNameColumn = 1,
118 DevInstAddrColumn = 2,
119 };
120
121 SocDevRef m_ref;
122 QGroupBox *m_name_group;
123 QLineEdit *m_name_edit;
124 QGroupBox *m_long_name_group;
125 QLineEdit *m_long_name_edit;
126 QGroupBox *m_version_group;
127 QLineEdit *m_version_edit;
128 QGroupBox *m_instances_group;
129 QTableWidget *m_instances_table;
130 QGroupBox *m_desc_group;
131 MyTextEditor *m_desc_edit;
132}; 132};
133 133
134class RegEditPanel : public QWidget, public AbstractRegEditPanel 134class NodeEditPanel : public QWidget, public AbstractRegEditPanel
135{ 135{
136 Q_OBJECT 136 Q_OBJECT
137public: 137public:
138 RegEditPanel(SocRegRef ref, QWidget *parent = 0); 138 NodeEditPanel(const soc_desc::node_ref_t& ref, QWidget *parent = 0);
139 139
140signals: 140signals:
141 void OnModified(bool mod); 141 void OnModified();
142 142
143protected slots: 143protected slots:
144 void OnInstActivated(int row, int column);
145 void OnInstChanged(int row, int column);
146 void OnNameEdited(const QString& text); 144 void OnNameEdited(const QString& text);
145 void OnTitleEdited(const QString& text);
147 void OnDescEdited(); 146 void OnDescEdited();
148 void OnSctEdited(int state); 147 void OnInstRemove(int index);
149 void OnFormulaChanged(int index); 148 void OnInstCreate();
150 void OnFormulaStringChanged(const QString& text); 149 void OnInstModified();
151 void OnFormulaGenerate(bool checked); 150
151protected:
152 soc_desc::instance_t *GetInstanceById(soc_id_t id);
153 soc_desc::instance_t *GetInstanceByRow(int row);
154 QString GuessName();
155
156 soc_desc::node_ref_t m_ref;
157 MyTextEditor *m_desc_edit;
158 YTabWidget *m_instances_tab;
159};
160
161class RegFieldEditPanel : public QWidget
162{
163 Q_OBJECT
164public:
165 RegFieldEditPanel(const soc_desc::field_ref_t& ref, QWidget *parent = 0);
166 soc_desc::field_ref_t GetField();
167 void UpdateWidth();
168
169signals:
170 void OnModified();
171
172protected slots:
173 void OnFieldNameChanged(const QString& name);
174 void OnFieldRangeChanged(const QString& range);
175 void OnFieldDescChanged(const QString& name);
176 void OnFieldValueActivated(QTableWidgetItem *item);
177 void OnFieldValueChanged(QTableWidgetItem *item);
152 178
153protected: 179protected:
154 void CreateNewAddrRow(int row); 180
155 void FillRow(int row, const soc_reg_addr_t& addr); 181 soc_desc::field_ref_t m_ref;
156 void UpdateFormula();
157 void UpdateWarning(int row);
158
159 enum
160 {
161 RegInstDeleteType = QTableWidgetItem::UserType,
162 RegInstNewType
163 };
164
165 enum
166 {
167 RegInstIconColumn = 0,
168 RegInstNameColumn,
169 RegInstAddrColumn,
170 RegInstNrColumns,
171 };
172
173 SocRegRef m_ref;
174 QGroupBox *m_name_group;
175 QLineEdit *m_name_edit; 182 QLineEdit *m_name_edit;
176 QGroupBox *m_instances_group; 183 QLineEdit *m_range_edit;
177 QTableWidget *m_instances_table; 184 SocBitRangeValidator *m_range_validator;
178 QGroupBox *m_desc_group;
179 QGroupBox *m_flags_group;
180 QCheckBox *m_sct_check;
181 QFont m_reg_font;
182 QGroupBox *m_formula_group;
183 QButtonGroup *m_formula_radio_group;
184 QLabel *m_formula_type_label;
185 QComboBox *m_formula_combo;
186 QLineEdit *m_formula_string_edit;
187 QPushButton *m_formula_string_gen;
188 Unscroll< RegSexyDisplay2 > *m_sexy_display2;
189 MyTextEditor *m_desc_edit; 185 MyTextEditor *m_desc_edit;
190 QGroupBox *m_field_group; 186 QTableWidget *m_enum_table;
191 QTableView *m_value_table; 187 SocFieldItemDelegate *m_enum_delegate;
192 RegFieldTableModel *m_value_model; 188 SocFieldEditorCreator *m_enum_editor;
193 QStyledItemDelegate *m_table_delegate;
194}; 189};
195 190
196class FieldEditPanel : public QWidget, public AbstractRegEditPanel 191class RegEditPanel : public QWidget, public AbstractRegEditPanel
197{ 192{
198 Q_OBJECT 193 Q_OBJECT
199public: 194public:
200 FieldEditPanel(SocFieldRef ref, QWidget *parent = 0); 195 RegEditPanel(const soc_desc::register_ref_t& ref, QWidget *parent = 0);
201 196
202signals: 197signals:
203 void OnModified(bool mod); 198 void OnModified();
204 199
205protected slots: 200protected slots:
201 void OnRegFieldActivated(const QModelIndex& index);
202 void OnRegDisplayContextMenu(QPoint point);
203 void OnRegFieldDelete();
204 void OnRegFieldNew();
205 void OnWidthChanged(int size);
206 void OnFieldModified();
206 void OnDescEdited(); 207 void OnDescEdited();
207 void OnNameEdited(const QString& text); 208 void OnVariantActivated(QTableWidgetItem *item);
208 void OnBitRangeEdited(const QString& string); 209 void OnVariantValueChanged(QTableWidgetItem *item);
209 void OnValueActivated(int row, int column); 210 void OnFieldRemove(int index);
210 void OnValueChanged(int row, int column); 211 void OnFieldCreate();
211 212
212protected: 213protected:
213 void CreateNewRow(int row); 214 void DoModify();
214 void FillRow(int row, const soc_reg_field_value_t& val); 215 int FindFreeBit(int preferred);
215 void UpdateWarning(int row); 216 int IndexById(soc_id_t id); // tab index
216 void UpdateDelegates(); 217 void UpdateWidthRestrictions();
217 218
218 enum
219 {
220 FieldValueDeleteType = QTableWidgetItem::UserType,
221 FieldValueNewType,
222 };
223
224 enum
225 {
226 FieldValueIconColumn = 0,
227 FieldValueNameColumn,
228 FieldValueValueColumn,
229 FieldValueDescColumn,
230 FieldValueNrColumns,
231 };
232
233 SocFieldRef m_ref;
234 QGroupBox *m_name_group;
235 QLineEdit *m_name_edit;
236 QGroupBox *m_bitrange_group;
237 QLineEdit *m_bitrange_edit;
238 QGroupBox *m_desc_group;
239 MyTextEditor *m_desc_edit; 219 MyTextEditor *m_desc_edit;
240 QGroupBox *m_value_group; 220 soc_desc::register_ref_t m_ref;
241 QTableWidget *m_value_table; 221 QFont m_reg_font;
222 Unscroll< YRegDisplay > *m_sexy_display2;
223 RegFieldTableModel *m_value_model;
224 YTabWidget *m_fields_tab;
225 QTabWidget *m_view_tab;
226 QTableWidget *m_variant_table;
227 QAction *m_new_action;
228 QAction *m_delete_action;
229 QPoint m_menu_point;
230 SocFieldItemDelegate *m_variant_delegate;
231 SocFieldEditorCreator *m_variant_editor;
232 QButtonGroup *m_reg_size_group;
242}; 233};
243 234
244class RegEdit : public QWidget, public DocumentTab 235class RegEdit : public QWidget, public DocumentTab
@@ -252,43 +243,50 @@ public:
252 243
253protected slots: 244protected slots:
254 void OnSocItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); 245 void OnSocItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
255 void OnSocItemActivated(QTreeWidgetItem *current, int column);
256 void OnOpen(); 246 void OnOpen();
257 void OnSave(); 247 void OnSave();
258 void OnSaveAs(); 248 void OnSaveAs();
259 void OnSocModified(bool modified); 249 void OnSocModified();
260 void OnNew(); 250 void OnNew();
261 void OnSocItemDelete(); 251 void OnSocItemDelete();
252 void OnSocItemNew();
253 void OnSocItemCreate();
254 void OnSocTreeContextMenu(QPoint point);
262 255
263protected: 256protected:
264 void LoadSocFile(const QString& filename); 257 void LoadSocFile(const QString& filename);
265 void UpdateSocFile(); 258 void UpdateSocFile();
266 void FillSocTree(); 259 void FillSocTree();
267 void FillSocTreeItem(QTreeWidgetItem *_item); 260 void FillNodeTreeItem(QTreeWidgetItem *item);
268 void FillDevTreeItem(QTreeWidgetItem *_item);
269 void FillRegTreeItem(QTreeWidgetItem *_item);
270 void SetPanel(QWidget *panel); 261 void SetPanel(QWidget *panel);
271 void DisplaySoc(SocRef ref); 262 void DisplaySoc(const soc_desc::soc_ref_t& ref);
272 void DisplayDev(SocDevRef ref); 263 void DisplayNode(const soc_desc::node_ref_t& ref);
273 void DisplayReg(SocRegRef ref); 264 void DisplayReg(const soc_desc::register_ref_t& ref);
274 void DisplayField(SocFieldRef ref);
275 bool CloseSoc(); 265 bool CloseSoc();
276 bool SaveSoc(); 266 bool SaveSoc();
277 bool SaveSocAs(); 267 bool SaveSocAs();
278 bool SaveSocFile(const QString& filename); 268 bool SaveSocFile(const QString& filename);
279 bool GetFilename(QString& filename, bool save); 269 bool GetFilename(QString& filename, bool save);
280 void SetModified(bool add, bool mod); 270 void SetModified(bool add, bool mod);
281 void FixupEmptyItem(QTreeWidgetItem *item); 271 void FixupItem(QTreeWidgetItem *item);
272 QIcon GetIconFromType(int type);
282 void MakeItalic(QTreeWidgetItem *item, bool it); 273 void MakeItalic(QTreeWidgetItem *item, bool it);
283 void AddDevice(QTreeWidgetItem *item); 274 void AddDevice(QTreeWidgetItem *item);
284 void AddRegister(QTreeWidgetItem *_item); 275 void AddRegister(QTreeWidgetItem *_item);
285 void UpdateName(QTreeWidgetItem *current); 276 void UpdateName(QTreeWidgetItem *current);
286 void AddField(QTreeWidgetItem *_item); 277 void AddField(QTreeWidgetItem *_item);
287 void CreateNewDeviceItem(QTreeWidgetItem *parent); 278 void CreateNewNodeItem(QTreeWidgetItem *parent);
288 void CreateNewRegisterItem(QTreeWidgetItem *parent); 279 void CreateNewRegisterItem(QTreeWidgetItem *parent);
289 void CreateNewFieldItem(QTreeWidgetItem *parent); 280 void CreateNewFieldItem(QTreeWidgetItem *parent);
290 void UpdateTabName(); 281 void UpdateTabName();
291 282 bool ValidateName(const QString& name);
283 int SetMessage(MessageWidget::MessageType type, const QString& msg);
284 void HideMessage(int id);
285
286 QAction *m_delete_action;
287 QAction *m_new_action;
288 QAction *m_create_action;
289 QTreeWidgetItem *m_action_item;
292 QGroupBox *m_file_group; 290 QGroupBox *m_file_group;
293 QToolButton *m_file_open; 291 QToolButton *m_file_open;
294 QToolButton *m_file_save; 292 QToolButton *m_file_save;
@@ -299,6 +297,10 @@ protected:
299 bool m_modified; 297 bool m_modified;
300 SocFile m_cur_socfile; 298 SocFile m_cur_socfile;
301 QWidget *m_right_panel; 299 QWidget *m_right_panel;
300 MessageWidget *m_msg;
301 QVBoxLayout *m_right_panel_layout;
302 int m_msg_welcome_id;
303 int m_msg_name_error_id;
302}; 304};
303 305
304#endif /* REGEDIT_H */ 306#endif /* REGEDIT_H */