|
|
1.1 ! root 1: /* ! 2: * Copyright (C) 2002 Roman Zippel <[email protected]> ! 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: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.