diff options
Diffstat (limited to 'utils/regtools/qeditor/regedit.h')
-rw-r--r-- | utils/regtools/qeditor/regedit.h | 276 |
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 | |||
48 | public: | 50 | public: |
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 | ||
54 | class EmptyEditPanel : public QWidget, public AbstractRegEditPanel | 56 | class EmptyEditPanel : public QWidget, public AbstractRegEditPanel |
@@ -58,7 +60,7 @@ public: | |||
58 | EmptyEditPanel(QWidget *parent); | 60 | EmptyEditPanel(QWidget *parent); |
59 | 61 | ||
60 | signals: | 62 | signals: |
61 | void OnModified(bool mod); | 63 | void OnModified(); |
62 | 64 | ||
63 | protected: | 65 | protected: |
64 | }; | 66 | }; |
@@ -67,178 +69,167 @@ class SocEditPanel : public QWidget, public AbstractRegEditPanel | |||
67 | { | 69 | { |
68 | Q_OBJECT | 70 | Q_OBJECT |
69 | public: | 71 | public: |
70 | SocEditPanel(SocRef ref, QWidget *parent = 0); | 72 | SocEditPanel(const soc_desc::soc_ref_t& ref, QWidget *parent = 0); |
71 | 73 | ||
72 | signals: | 74 | signals: |
73 | void OnModified(bool mod); | 75 | void OnModified(); |
74 | 76 | ||
75 | protected slots: | 77 | protected 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 | ||
79 | protected: | 86 | protected: |
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 | ||
87 | class DevEditPanel : public QWidget, public AbstractRegEditPanel | 92 | class NodeInstanceEditPanel : public QWidget |
88 | { | 93 | { |
89 | Q_OBJECT | 94 | Q_OBJECT |
90 | public: | 95 | public: |
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 | ||
93 | signals: | 101 | signals: |
94 | void OnModified(bool mod); | 102 | void OnModified(); |
95 | 103 | ||
96 | protected slots: | 104 | protected 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 | ||
104 | protected: | 119 | protected: |
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 | ||
134 | class RegEditPanel : public QWidget, public AbstractRegEditPanel | 134 | class NodeEditPanel : public QWidget, public AbstractRegEditPanel |
135 | { | 135 | { |
136 | Q_OBJECT | 136 | Q_OBJECT |
137 | public: | 137 | public: |
138 | RegEditPanel(SocRegRef ref, QWidget *parent = 0); | 138 | NodeEditPanel(const soc_desc::node_ref_t& ref, QWidget *parent = 0); |
139 | 139 | ||
140 | signals: | 140 | signals: |
141 | void OnModified(bool mod); | 141 | void OnModified(); |
142 | 142 | ||
143 | protected slots: | 143 | protected 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 | |
151 | protected: | ||
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 | |||
161 | class RegFieldEditPanel : public QWidget | ||
162 | { | ||
163 | Q_OBJECT | ||
164 | public: | ||
165 | RegFieldEditPanel(const soc_desc::field_ref_t& ref, QWidget *parent = 0); | ||
166 | soc_desc::field_ref_t GetField(); | ||
167 | void UpdateWidth(); | ||
168 | |||
169 | signals: | ||
170 | void OnModified(); | ||
171 | |||
172 | protected 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 | ||
153 | protected: | 179 | protected: |
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 | ||
196 | class FieldEditPanel : public QWidget, public AbstractRegEditPanel | 191 | class RegEditPanel : public QWidget, public AbstractRegEditPanel |
197 | { | 192 | { |
198 | Q_OBJECT | 193 | Q_OBJECT |
199 | public: | 194 | public: |
200 | FieldEditPanel(SocFieldRef ref, QWidget *parent = 0); | 195 | RegEditPanel(const soc_desc::register_ref_t& ref, QWidget *parent = 0); |
201 | 196 | ||
202 | signals: | 197 | signals: |
203 | void OnModified(bool mod); | 198 | void OnModified(); |
204 | 199 | ||
205 | protected slots: | 200 | protected 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 | ||
212 | protected: | 213 | protected: |
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 | ||
244 | class RegEdit : public QWidget, public DocumentTab | 235 | class RegEdit : public QWidget, public DocumentTab |
@@ -252,43 +243,50 @@ public: | |||
252 | 243 | ||
253 | protected slots: | 244 | protected 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 | ||
263 | protected: | 256 | protected: |
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 */ |