rtai-core/config/kconfig/qconf.h

00001 /*
00002  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
00003  * Released under the terms of the GNU GPL v2.0.
00004  */
00005 
00006 #include <qlistview.h>
00007 
00008 class ConfigList;
00009 class ConfigItem;
00010 class ConfigLineEdit;
00011 class ConfigMainWindow;
00012 
00013 class ConfigView : public QVBox {
00014         Q_OBJECT
00015         typedef class QVBox Parent;
00016 public:
00017         ConfigView(QWidget* parent, ConfigMainWindow* cview);
00018         ~ConfigView(void);
00019         static void updateList(ConfigItem* item);
00020         static void updateListAll(void);
00021 
00022 public:
00023         ConfigList* list;
00024         ConfigLineEdit* lineEdit;
00025 
00026         static ConfigView* viewList;
00027         ConfigView* nextView;
00028 };
00029 
00030 enum colIdx {
00031         promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
00032 };
00033 enum listMode {
00034         singleMode, menuMode, symbolMode, fullMode
00035 };
00036 
00037 class ConfigList : public QListView {
00038         Q_OBJECT
00039         typedef class QListView Parent;
00040 public:
00041         ConfigList(ConfigView* p, ConfigMainWindow* cview);
00042         void reinit(void);
00043         ConfigView* parent(void) const
00044         {
00045                 return (ConfigView*)Parent::parent();
00046         }
00047 
00048 protected:
00049         ConfigMainWindow* cview;
00050 
00051         void keyPressEvent(QKeyEvent *e);
00052         void contentsMousePressEvent(QMouseEvent *e);
00053         void contentsMouseReleaseEvent(QMouseEvent *e);
00054         void contentsMouseMoveEvent(QMouseEvent *e);
00055         void contentsMouseDoubleClickEvent(QMouseEvent *e);
00056         void focusInEvent(QFocusEvent *e);
00057 public slots:
00058         void setRootMenu(struct menu *menu);
00059 
00060         void updateList(ConfigItem *item);
00061         void setValue(ConfigItem* item, tristate val);
00062         void changeValue(ConfigItem* item);
00063         void updateSelection(void);
00064 signals:
00065         void menuSelected(struct menu *menu);
00066         void parentSelected(void);
00067         void gotFocus(void);
00068 
00069 public:
00070         void updateListAll(void)
00071         {
00072                 updateAll = true;
00073                 updateList(NULL);
00074                 updateAll = false;
00075         }
00076         ConfigList* listView()
00077         {
00078                 return this;
00079         }
00080         ConfigItem* firstChild() const
00081         {
00082                 return (ConfigItem *)Parent::firstChild();
00083         }
00084         int mapIdx(colIdx idx)
00085         {
00086                 return colMap[idx];
00087         }
00088         void addColumn(colIdx idx, const QString& label)
00089         {
00090                 colMap[idx] = Parent::addColumn(label);
00091                 colRevMap[colMap[idx]] = idx;
00092         }
00093         void removeColumn(colIdx idx)
00094         {
00095                 int col = colMap[idx];
00096                 if (col >= 0) {
00097                         Parent::removeColumn(col);
00098                         colRevMap[col] = colMap[idx] = -1;
00099                 }
00100         }
00101         void setAllOpen(bool open);
00102         void setParentMenu(void);
00103 
00104         template <class P>
00105         void ConfigList::updateMenuList(P*, struct menu*);
00106 
00107         bool updateAll;
00108 
00109         QPixmap symbolYesPix, symbolModPix, symbolNoPix;
00110         QPixmap choiceYesPix, choiceNoPix;
00111         QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
00112 
00113         bool showAll, showName, showRange, showData;
00114         enum listMode mode;
00115         struct menu *rootEntry;
00116         QColorGroup disabledColorGroup;
00117         QColorGroup inactivedColorGroup;
00118 
00119 private:
00120         int colMap[colNr];
00121         int colRevMap[colNr];
00122 };
00123 
00124 class ConfigItem : public QListViewItem {
00125         typedef class QListViewItem Parent;
00126 public:
00127         ConfigItem(QListView *parent, ConfigItem *after, struct menu *m, bool v)
00128         : Parent(parent, after), menu(m), visible(v), goParent(false)
00129         {
00130                 init();
00131         }
00132         ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
00133         : Parent(parent, after), menu(m), visible(v), goParent(false)
00134         {
00135                 init();
00136         }
00137         ConfigItem(QListView *parent, ConfigItem *after, bool v)
00138         : Parent(parent, after), menu(0), visible(v), goParent(true)
00139         {
00140                 init();
00141         }
00142         ~ConfigItem(void);
00143         void init(void);
00144 #if QT_VERSION >= 300
00145         void okRename(int col);
00146 #endif
00147         void updateMenu(void);
00148         void testUpdateMenu(bool v);
00149         ConfigList* listView() const
00150         {
00151                 return (ConfigList*)Parent::listView();
00152         }
00153         ConfigItem* firstChild() const
00154         {
00155                 return (ConfigItem *)Parent::firstChild();
00156         }
00157         ConfigItem* nextSibling() const
00158         {
00159                 return (ConfigItem *)Parent::nextSibling();
00160         }
00161         void setText(colIdx idx, const QString& text)
00162         {
00163                 Parent::setText(listView()->mapIdx(idx), text);
00164         }
00165         QString text(colIdx idx) const
00166         {
00167                 return Parent::text(listView()->mapIdx(idx));
00168         }
00169         void setPixmap(colIdx idx, const QPixmap& pm)
00170         {
00171                 Parent::setPixmap(listView()->mapIdx(idx), pm);
00172         }
00173         const QPixmap* pixmap(colIdx idx) const
00174         {
00175                 return Parent::pixmap(listView()->mapIdx(idx));
00176         }
00177         void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
00178 
00179         ConfigItem* nextItem;
00180         struct menu *menu;
00181         bool visible;
00182         bool goParent;
00183 };
00184 
00185 class ConfigLineEdit : public QLineEdit {
00186         Q_OBJECT
00187         typedef class QLineEdit Parent;
00188 public:
00189         ConfigLineEdit(ConfigView* parent)
00190         : Parent(parent)
00191         { }
00192         ConfigView* parent(void) const
00193         {
00194                 return (ConfigView*)Parent::parent();
00195         }
00196         void show(ConfigItem *i);
00197         void keyPressEvent(QKeyEvent *e);
00198 
00199 public:
00200         ConfigItem *item;
00201 };
00202 
00203 class ConfigMainWindow : public QMainWindow {
00204         Q_OBJECT
00205 public:
00206         ConfigMainWindow(void);
00207 public slots:
00208         void setHelp(QListViewItem* item);
00209         void changeMenu(struct menu *);
00210         void listFocusChanged(void);
00211         void goBack(void);
00212         void loadConfig(void);
00213         void saveConfig(void);
00214         void saveConfigAs(void);
00215         void showSingleView(void);
00216         void showSplitView(void);
00217         void showFullView(void);
00218         void setShowAll(bool);
00219         void setShowDebug(bool);
00220         void setShowRange(bool);
00221         void setShowName(bool);
00222         void setShowData(bool);
00223         void showIntro(void);
00224         void showAbout(void);
00225 
00226 protected:
00227         void closeEvent(QCloseEvent *e);
00228 
00229         ConfigView *menuView;
00230         ConfigList *menuList;
00231         ConfigView *configView;
00232         ConfigList *configList;
00233         QTextView *helpText;
00234         QToolBar *toolBar;
00235         QAction *backAction;
00236 
00237         bool showDebug;
00238 };

Generated on Sat Jul 24 19:36:02 2004 for RTAI API by doxygen 1.3.4