diff options
Diffstat (limited to 'utils/regtools/qeditor/aux.h')
-rw-r--r-- | utils/regtools/qeditor/aux.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/utils/regtools/qeditor/aux.h b/utils/regtools/qeditor/aux.h new file mode 100644 index 0000000000..d6a572826c --- /dev/null +++ b/utils/regtools/qeditor/aux.h | |||
@@ -0,0 +1,227 @@ | |||
1 | #ifndef AUX_H | ||
2 | #define AUX_H | ||
3 | |||
4 | #include <QEvent> | ||
5 | #include <QPaintEvent> | ||
6 | #include <QLineEdit> | ||
7 | #include <QValidator> | ||
8 | #include <QToolButton> | ||
9 | #include <QMenu> | ||
10 | #include <QHBoxLayout> | ||
11 | #include <QTextEdit> | ||
12 | #include <QTableWidget> | ||
13 | #include <QToolBar> | ||
14 | #include <QLabel> | ||
15 | #include <QHBoxLayout> | ||
16 | #include <QItemEditorCreatorBase> | ||
17 | #include <QStyledItemDelegate> | ||
18 | #include "backend.h" | ||
19 | |||
20 | class SocBitRangeValidator : public QValidator | ||
21 | { | ||
22 | Q_OBJECT | ||
23 | public: | ||
24 | SocBitRangeValidator(QObject *parent = 0); | ||
25 | |||
26 | virtual void fixup(QString& input) const; | ||
27 | virtual State validate(QString& input, int& pos) const; | ||
28 | /* validate and return the interpreted value */ | ||
29 | State parse(const QString& input, int& last_bit, int& first_bit) const; | ||
30 | }; | ||
31 | |||
32 | class SocFieldValidator : public QValidator | ||
33 | { | ||
34 | Q_OBJECT | ||
35 | public: | ||
36 | SocFieldValidator(QObject *parent = 0); | ||
37 | SocFieldValidator(const soc_reg_field_t& field, QObject *parent = 0); | ||
38 | |||
39 | virtual void fixup(QString& input) const; | ||
40 | virtual State validate(QString& input, int& pos) const; | ||
41 | /* validate and return the interpreted value */ | ||
42 | State parse(const QString& input, soc_word_t& val) const; | ||
43 | |||
44 | protected: | ||
45 | soc_reg_field_t m_field; | ||
46 | }; | ||
47 | |||
48 | class RegLineEdit : public QWidget | ||
49 | { | ||
50 | Q_OBJECT | ||
51 | public: | ||
52 | enum EditMode | ||
53 | { | ||
54 | Write, Set, Clear, Toggle | ||
55 | }; | ||
56 | |||
57 | RegLineEdit(QWidget *parent = 0); | ||
58 | ~RegLineEdit(); | ||
59 | void SetReadOnly(bool ro); | ||
60 | void EnableSCT(bool en); | ||
61 | void SetMode(EditMode mode); | ||
62 | EditMode GetMode(); | ||
63 | QLineEdit *GetLineEdit(); | ||
64 | void setText(const QString& text); | ||
65 | QString text() const; | ||
66 | |||
67 | Q_PROPERTY(QString text READ text WRITE setText USER true) | ||
68 | |||
69 | protected slots: | ||
70 | void OnWriteAct(); | ||
71 | void OnSetAct(); | ||
72 | void OnClearAct(); | ||
73 | void OnToggleAct(); | ||
74 | protected: | ||
75 | void ShowMode(bool show); | ||
76 | void DoAutoHide(); | ||
77 | |||
78 | QHBoxLayout *m_layout; | ||
79 | QToolButton *m_button; | ||
80 | QLineEdit *m_edit; | ||
81 | EditMode m_mode; | ||
82 | bool m_has_sct; | ||
83 | bool m_readonly; | ||
84 | QMenu *m_menu; | ||
85 | }; | ||
86 | |||
87 | class SocFieldItemDelegate : public QStyledItemDelegate | ||
88 | { | ||
89 | public: | ||
90 | SocFieldItemDelegate(QObject *parent = 0):QStyledItemDelegate(parent), m_bitcount(32) {} | ||
91 | SocFieldItemDelegate(const soc_reg_field_t& field, QObject *parent = 0) | ||
92 | :QStyledItemDelegate(parent), m_bitcount(field.last_bit - field.first_bit + 1) {} | ||
93 | |||
94 | virtual QString displayText(const QVariant& value, const QLocale& locale) const; | ||
95 | protected: | ||
96 | int m_bitcount; | ||
97 | }; | ||
98 | |||
99 | class SocFieldEditor : public QLineEdit | ||
100 | { | ||
101 | Q_OBJECT | ||
102 | Q_PROPERTY(uint field READ field WRITE setField USER true) | ||
103 | public: | ||
104 | SocFieldEditor(const soc_reg_field_t& field, QWidget *parent = 0); | ||
105 | virtual ~SocFieldEditor(); | ||
106 | |||
107 | uint field() const; | ||
108 | void setField(uint field); | ||
109 | |||
110 | protected: | ||
111 | SocFieldValidator *m_validator; | ||
112 | uint m_field; | ||
113 | soc_reg_field_t m_reg_field; | ||
114 | }; | ||
115 | |||
116 | class SocFieldEditorCreator : public QItemEditorCreatorBase | ||
117 | { | ||
118 | public: | ||
119 | SocFieldEditorCreator() { m_field.first_bit = 0; m_field.last_bit = 31; } | ||
120 | SocFieldEditorCreator(const soc_reg_field_t& field):m_field(field) {} | ||
121 | |||
122 | virtual QWidget *createWidget(QWidget *parent) const; | ||
123 | virtual QByteArray valuePropertyName() const; | ||
124 | |||
125 | protected: | ||
126 | soc_reg_field_t m_field; | ||
127 | }; | ||
128 | |||
129 | class RegSexyDisplay : public QWidget | ||
130 | { | ||
131 | Q_OBJECT | ||
132 | public: | ||
133 | RegSexyDisplay(const SocRegRef& reg, QWidget *parent = 0); | ||
134 | |||
135 | QSize minimumSizeHint() const; | ||
136 | QSize sizeHint() const; | ||
137 | |||
138 | protected: | ||
139 | int marginSize() const; | ||
140 | int separatorSize() const; | ||
141 | int columnWidth() const; | ||
142 | int headerHeight() const; | ||
143 | int gapHeight() const; | ||
144 | int maxContentHeight() const; | ||
145 | int textSep() const; | ||
146 | void paintEvent(QPaintEvent *event); | ||
147 | |||
148 | private: | ||
149 | SocRegRef m_reg; | ||
150 | mutable QSize m_size; | ||
151 | }; | ||
152 | |||
153 | class GrowingTextEdit : public QTextEdit | ||
154 | { | ||
155 | Q_OBJECT | ||
156 | public: | ||
157 | GrowingTextEdit(QWidget *parent = 0); | ||
158 | |||
159 | protected slots: | ||
160 | void TextChanged(); | ||
161 | }; | ||
162 | |||
163 | class GrowingTableWidget : public QTableWidget | ||
164 | { | ||
165 | Q_OBJECT | ||
166 | public: | ||
167 | GrowingTableWidget(QWidget *parent = 0); | ||
168 | |||
169 | protected slots: | ||
170 | void DataChanged(const QModelIndex& tl, const QModelIndex& br); | ||
171 | }; | ||
172 | |||
173 | class MyTextEditor : public QWidget | ||
174 | { | ||
175 | Q_OBJECT | ||
176 | public: | ||
177 | MyTextEditor(QWidget *parent = 0); | ||
178 | void SetGrowingMode(bool en); | ||
179 | void SetReadOnly(bool ro); | ||
180 | void SetTextHtml(const QString& text); | ||
181 | QString GetTextHtml(); | ||
182 | bool IsModified(); | ||
183 | signals: | ||
184 | void OnTextChanged(); | ||
185 | |||
186 | protected slots: | ||
187 | void OnInternalTextChanged(); | ||
188 | void OnTextBold(bool checked); | ||
189 | void OnTextItalic(bool checked); | ||
190 | void OnTextUnderline(bool checked); | ||
191 | void OnCharFormatChanged(const QTextCharFormat& fmt); | ||
192 | |||
193 | protected: | ||
194 | bool m_growing_mode; | ||
195 | bool m_read_only; | ||
196 | QToolBar *m_toolbar; | ||
197 | QTextEdit *m_edit; | ||
198 | QToolButton *m_bold_button; | ||
199 | QToolButton *m_italic_button; | ||
200 | QToolButton *m_underline_button; | ||
201 | }; | ||
202 | |||
203 | class MySwitchableTextEditor : public QWidget | ||
204 | { | ||
205 | Q_OBJECT | ||
206 | public: | ||
207 | MySwitchableTextEditor(QWidget *parent = 0); | ||
208 | QString GetTextHtml(); | ||
209 | void SetTextHtml(const QString& text); | ||
210 | void SetEditorMode(bool en); | ||
211 | MyTextEditor *GetEditor(); | ||
212 | QLineEdit *GetLineEdit(); | ||
213 | QLabel *GetLabel(); | ||
214 | void SetLineMode(bool en); | ||
215 | bool IsModified(); | ||
216 | |||
217 | protected: | ||
218 | void UpdateVisibility(); | ||
219 | |||
220 | bool m_editor_mode; | ||
221 | bool m_line_mode; | ||
222 | QLabel *m_label; | ||
223 | MyTextEditor *m_edit; | ||
224 | QLineEdit *m_line; | ||
225 | }; | ||
226 | |||
227 | #endif /* AUX_H */ | ||