Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


imported SEABIOS source tree
[palacios.git] / bios / seabios / tools / kconfig / qconf.h
1 /*
2  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
3  * Released under the terms of the GNU GPL v2.0.
4  */
5
6 #if QT_VERSION < 0x040000
7 #include <qlistview.h>
8 #else
9 #include <q3listview.h>
10 #endif
11 #include <qsettings.h>
12
13 #if QT_VERSION < 0x040000
14 #define Q3ValueList             QValueList
15 #define Q3PopupMenu             QPopupMenu
16 #define Q3ListView              QListView
17 #define Q3ListViewItem          QListViewItem
18 #define Q3VBox                  QVBox
19 #define Q3TextBrowser           QTextBrowser
20 #define Q3MainWindow            QMainWindow
21 #define Q3Action                QAction
22 #define Q3ToolBar               QToolBar
23 #define Q3ListViewItemIterator  QListViewItemIterator
24 #define Q3FileDialog            QFileDialog
25 #endif
26
27 class ConfigView;
28 class ConfigList;
29 class ConfigItem;
30 class ConfigLineEdit;
31 class ConfigMainWindow;
32
33 class ConfigSettings : public QSettings {
34 public:
35         Q3ValueList<int> readSizes(const QString& key, bool *ok);
36         bool writeSizes(const QString& key, const Q3ValueList<int>& value);
37 };
38
39 enum colIdx {
40         promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
41 };
42 enum listMode {
43         singleMode, menuMode, symbolMode, fullMode, listMode
44 };
45 enum optionMode {
46         normalOpt = 0, allOpt, promptOpt
47 };
48
49 class ConfigList : public Q3ListView {
50         Q_OBJECT
51         typedef class Q3ListView Parent;
52 public:
53         ConfigList(ConfigView* p, const char *name = 0);
54         void reinit(void);
55         ConfigView* parent(void) const
56         {
57                 return (ConfigView*)Parent::parent();
58         }
59         ConfigItem* findConfigItem(struct menu *);
60
61 protected:
62         void keyPressEvent(QKeyEvent *e);
63         void contentsMousePressEvent(QMouseEvent *e);
64         void contentsMouseReleaseEvent(QMouseEvent *e);
65         void contentsMouseMoveEvent(QMouseEvent *e);
66         void contentsMouseDoubleClickEvent(QMouseEvent *e);
67         void focusInEvent(QFocusEvent *e);
68         void contextMenuEvent(QContextMenuEvent *e);
69
70 public slots:
71         void setRootMenu(struct menu *menu);
72
73         void updateList(ConfigItem *item);
74         void setValue(ConfigItem* item, tristate val);
75         void changeValue(ConfigItem* item);
76         void updateSelection(void);
77         void saveSettings(void);
78 signals:
79         void menuChanged(struct menu *menu);
80         void menuSelected(struct menu *menu);
81         void parentSelected(void);
82         void gotFocus(struct menu *);
83
84 public:
85         void updateListAll(void)
86         {
87                 updateAll = true;
88                 updateList(NULL);
89                 updateAll = false;
90         }
91         ConfigList* listView()
92         {
93                 return this;
94         }
95         ConfigItem* firstChild() const
96         {
97                 return (ConfigItem *)Parent::firstChild();
98         }
99         int mapIdx(colIdx idx)
100         {
101                 return colMap[idx];
102         }
103         void addColumn(colIdx idx, const QString& label)
104         {
105                 colMap[idx] = Parent::addColumn(label);
106                 colRevMap[colMap[idx]] = idx;
107         }
108         void removeColumn(colIdx idx)
109         {
110                 int col = colMap[idx];
111                 if (col >= 0) {
112                         Parent::removeColumn(col);
113                         colRevMap[col] = colMap[idx] = -1;
114                 }
115         }
116         void setAllOpen(bool open);
117         void setParentMenu(void);
118
119         bool menuSkip(struct menu *);
120
121         template <class P>
122         void updateMenuList(P*, struct menu*);
123
124         bool updateAll;
125
126         QPixmap symbolYesPix, symbolModPix, symbolNoPix;
127         QPixmap choiceYesPix, choiceNoPix;
128         QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
129
130         bool showName, showRange, showData;
131         enum listMode mode;
132         enum optionMode optMode;
133         struct menu *rootEntry;
134         QColorGroup disabledColorGroup;
135         QColorGroup inactivedColorGroup;
136         Q3PopupMenu* headerPopup;
137
138 private:
139         int colMap[colNr];
140         int colRevMap[colNr];
141 };
142
143 class ConfigItem : public Q3ListViewItem {
144         typedef class Q3ListViewItem Parent;
145 public:
146         ConfigItem(Q3ListView *parent, ConfigItem *after, struct menu *m, bool v)
147         : Parent(parent, after), menu(m), visible(v), goParent(false)
148         {
149                 init();
150         }
151         ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
152         : Parent(parent, after), menu(m), visible(v), goParent(false)
153         {
154                 init();
155         }
156         ConfigItem(Q3ListView *parent, ConfigItem *after, bool v)
157         : Parent(parent, after), menu(0), visible(v), goParent(true)
158         {
159                 init();
160         }
161         ~ConfigItem(void);
162         void init(void);
163         void okRename(int col);
164         void updateMenu(void);
165         void testUpdateMenu(bool v);
166         ConfigList* listView() const
167         {
168                 return (ConfigList*)Parent::listView();
169         }
170         ConfigItem* firstChild() const
171         {
172                 return (ConfigItem *)Parent::firstChild();
173         }
174         ConfigItem* nextSibling() const
175         {
176                 return (ConfigItem *)Parent::nextSibling();
177         }
178         void setText(colIdx idx, const QString& text)
179         {
180                 Parent::setText(listView()->mapIdx(idx), text);
181         }
182         QString text(colIdx idx) const
183         {
184                 return Parent::text(listView()->mapIdx(idx));
185         }
186         void setPixmap(colIdx idx, const QPixmap& pm)
187         {
188                 Parent::setPixmap(listView()->mapIdx(idx), pm);
189         }
190         const QPixmap* pixmap(colIdx idx) const
191         {
192                 return Parent::pixmap(listView()->mapIdx(idx));
193         }
194         void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
195
196         ConfigItem* nextItem;
197         struct menu *menu;
198         bool visible;
199         bool goParent;
200 };
201
202 class ConfigLineEdit : public QLineEdit {
203         Q_OBJECT
204         typedef class QLineEdit Parent;
205 public:
206         ConfigLineEdit(ConfigView* parent);
207         ConfigView* parent(void) const
208         {
209                 return (ConfigView*)Parent::parent();
210         }
211         void show(ConfigItem *i);
212         void keyPressEvent(QKeyEvent *e);
213
214 public:
215         ConfigItem *item;
216 };
217
218 class ConfigView : public Q3VBox {
219         Q_OBJECT
220         typedef class Q3VBox Parent;
221 public:
222         ConfigView(QWidget* parent, const char *name = 0);
223         ~ConfigView(void);
224         static void updateList(ConfigItem* item);
225         static void updateListAll(void);
226
227         bool showName(void) const { return list->showName; }
228         bool showRange(void) const { return list->showRange; }
229         bool showData(void) const { return list->showData; }
230 public slots:
231         void setShowName(bool);
232         void setShowRange(bool);
233         void setShowData(bool);
234         void setOptionMode(QAction *);
235 signals:
236         void showNameChanged(bool);
237         void showRangeChanged(bool);
238         void showDataChanged(bool);
239 public:
240         ConfigList* list;
241         ConfigLineEdit* lineEdit;
242
243         static ConfigView* viewList;
244         ConfigView* nextView;
245
246         static QAction *showNormalAction;
247         static QAction *showAllAction;
248         static QAction *showPromptAction;
249 };
250
251 class ConfigInfoView : public Q3TextBrowser {
252         Q_OBJECT
253         typedef class Q3TextBrowser Parent;
254 public:
255         ConfigInfoView(QWidget* parent, const char *name = 0);
256         bool showDebug(void) const { return _showDebug; }
257
258 public slots:
259         void setInfo(struct menu *menu);
260         void saveSettings(void);
261         void setShowDebug(bool);
262
263 signals:
264         void showDebugChanged(bool);
265         void menuSelected(struct menu *);
266
267 protected:
268         void symbolInfo(void);
269         void menuInfo(void);
270         QString debug_info(struct symbol *sym);
271         static QString print_filter(const QString &str);
272         static void expr_print_help(void *data, struct symbol *sym, const char *str);
273         Q3PopupMenu* createPopupMenu(const QPoint& pos);
274         void contentsContextMenuEvent(QContextMenuEvent *e);
275
276         struct symbol *sym;
277         struct menu *_menu;
278         bool _showDebug;
279 };
280
281 class ConfigSearchWindow : public QDialog {
282         Q_OBJECT
283         typedef class QDialog Parent;
284 public:
285         ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0);
286
287 public slots:
288         void saveSettings(void);
289         void search(void);
290
291 protected:
292         QLineEdit* editField;
293         QPushButton* searchButton;
294         QSplitter* split;
295         ConfigView* list;
296         ConfigInfoView* info;
297
298         struct symbol **result;
299 };
300
301 class ConfigMainWindow : public Q3MainWindow {
302         Q_OBJECT
303
304         static Q3Action *saveAction;
305         static void conf_changed(void);
306 public:
307         ConfigMainWindow(void);
308 public slots:
309         void changeMenu(struct menu *);
310         void setMenuLink(struct menu *);
311         void listFocusChanged(void);
312         void goBack(void);
313         void loadConfig(void);
314         void saveConfig(void);
315         void saveConfigAs(void);
316         void searchConfig(void);
317         void showSingleView(void);
318         void showSplitView(void);
319         void showFullView(void);
320         void showIntro(void);
321         void showAbout(void);
322         void saveSettings(void);
323
324 protected:
325         void closeEvent(QCloseEvent *e);
326
327         ConfigSearchWindow *searchWindow;
328         ConfigView *menuView;
329         ConfigList *menuList;
330         ConfigView *configView;
331         ConfigList *configList;
332         ConfigInfoView *helpText;
333         Q3ToolBar *toolBar;
334         Q3Action *backAction;
335         QSplitter* split1;
336         QSplitter* split2;
337 };