root/scripts/kconfig/qconf.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */