Commit 8a41374c authored by Roman Zippel's avatar Roman Zippel Committed by Linus Torvalds

[PATCH] kconfig: updates

- allow double click to start edit of string symbols
- help text by Rod.VanMeter@nokia.com
- small reorganiztion to prepare for new features
parent b2737a08
...@@ -80,9 +80,17 @@ static void updateMenuList(P* parent, struct menu* menu) ...@@ -80,9 +80,17 @@ static void updateMenuList(P* parent, struct menu* menu)
visible = menu_is_visible(child); visible = menu_is_visible(child);
if (showAll || visible) { if (showAll || visible) {
if (!item || item->menu != child) if (!item || item->menu != child)
item = new ConfigItem(parent, last, child); item = new ConfigItem(parent, last, child, visible);
item->visible = visible; else {
item->updateMenu(); item->visible = visible;
if (item->updateNeeded()) {
ConfigItem* i = (ConfigItem*)child->data;
for (; i; i = i->nextItem) {
i->updateMenu();
}
} else if (list->updateAll)
item->updateMenu();
}
if (mode == fullMode || mode == menuMode || if (mode == fullMode || mode == menuMode ||
(type != P_MENU && type != P_ROOTMENU)) (type != P_MENU && type != P_ROOTMENU))
...@@ -127,36 +135,22 @@ void ConfigItem::updateMenu(void) ...@@ -127,36 +135,22 @@ void ConfigItem::updateMenu(void)
int type; int type;
enum prop_type ptype; enum prop_type ptype;
tristate expr; tristate expr;
bool update;
list = listView(); list = listView();
update = doInit;
if (update)
doInit = false;
else
update = list->updateAll;
sym = menu->sym; sym = menu->sym;
if (!sym) { if (!sym) {
if (update) { setText(promptColIdx, menu_get_prompt(menu));
setText(promptColIdx, menu_get_prompt(menu)); ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; if ((ptype == P_ROOTMENU || ptype == P_MENU) &&
if ((ptype == P_ROOTMENU || ptype == P_MENU) && (list->mode == singleMode || list->mode == symbolMode))
(list->mode == singleMode || list->mode == symbolMode)) setPixmap(promptColIdx, list->menuPix);
setPixmap(promptColIdx, list->menuPix); else
else setPixmap(promptColIdx, 0);
setPixmap(promptColIdx, 0);
}
return; return;
} }
sym_calc_value(sym); setText(nameColIdx, sym->name);
if (!(sym->flags & SYMBOL_CHANGED) && !update)
return;
sym->flags &= ~SYMBOL_CHANGED;
setText(nameColIdx, menu->sym->name);
type = sym_get_type(sym); type = sym_get_type(sym);
switch (type) { switch (type) {
...@@ -211,7 +205,9 @@ void ConfigItem::updateMenu(void) ...@@ -211,7 +205,9 @@ void ConfigItem::updateMenu(void)
data = sym_get_string_value(sym); data = sym_get_string_value(sym);
#if QT_VERSION >= 300 #if QT_VERSION >= 300
setRenameEnabled(list->mapIdx(dataColIdx), TRUE); int i = list->mapIdx(dataColIdx);
if (i >= 0)
setRenameEnabled(i, TRUE);
#endif #endif
setText(dataColIdx, data); setText(dataColIdx, data);
if (type == S_STRING) if (type == S_STRING)
...@@ -225,6 +221,18 @@ void ConfigItem::updateMenu(void) ...@@ -225,6 +221,18 @@ void ConfigItem::updateMenu(void)
setText(promptColIdx, prompt); setText(promptColIdx, prompt);
} }
bool ConfigItem::updateNeeded(void)
{
struct symbol* sym = menu->sym;
if (sym)
sym_calc_value(sym);
if (menu->flags & MENU_CHANGED) {
menu->flags &= ~MENU_CHANGED;
return true;
}
return false;
}
void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align) void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align)
{ {
ConfigList* list = listView(); ConfigList* list = listView();
...@@ -244,13 +252,14 @@ void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int w ...@@ -244,13 +252,14 @@ void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int w
void ConfigItem::init(void) void ConfigItem::init(void)
{ {
ConfigList* list = listView(); ConfigList* list = listView();
#if QT_VERSION < 300 nextItem = (ConfigItem*)menu->data;
visible = TRUE; menu->data = this;
#endif
//menu->data = this;
if (list->mode != fullMode) if (list->mode != fullMode)
setOpen(TRUE); setOpen(TRUE);
doInit= true; if (menu->sym)
sym_calc_value(menu->sym);
updateMenu();
} }
/* /*
...@@ -258,7 +267,13 @@ void ConfigItem::init(void) ...@@ -258,7 +267,13 @@ void ConfigItem::init(void)
*/ */
ConfigItem::~ConfigItem(void) ConfigItem::~ConfigItem(void)
{ {
//menu->data = 0; ConfigItem** ip = &(ConfigItem*)menu->data;
for (; *ip; ip = &(*ip)->nextItem) {
if (*ip == this) {
*ip = nextItem;
break;
}
}
} }
void ConfigLineEdit::show(ConfigItem* i) void ConfigLineEdit::show(ConfigItem* i)
...@@ -280,17 +295,18 @@ void ConfigLineEdit::keyPressEvent(QKeyEvent* e) ...@@ -280,17 +295,18 @@ void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
case Key_Return: case Key_Return:
case Key_Enter: case Key_Enter:
sym_set_string_value(item->menu->sym, text().latin1()); sym_set_string_value(item->menu->sym, text().latin1());
emit lineChanged(item); parent()->updateList(item);
break; break;
default: default:
Parent::keyPressEvent(e); Parent::keyPressEvent(e);
return; return;
} }
e->accept(); e->accept();
parent()->list->setFocus();
hide(); hide();
} }
ConfigList::ConfigList(QWidget* p, ConfigView* cv) ConfigList::ConfigList(ConfigView* p, ConfigMainWindow* cv)
: Parent(p), cview(cv), : Parent(p), cview(cv),
updateAll(false), updateAll(false),
symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),
...@@ -359,6 +375,7 @@ void ConfigList::updateList(ConfigItem* item) ...@@ -359,6 +375,7 @@ void ConfigList::updateList(ConfigItem* item)
{ {
(void)item; // unused so far (void)item; // unused so far
updateMenuList(this, rootEntry); updateMenuList(this, rootEntry);
triggerUpdate();
} }
void ConfigList::setAllOpen(bool open) void ConfigList::setAllOpen(bool open)
...@@ -389,7 +406,7 @@ void ConfigList::setValue(ConfigItem* item, tristate val) ...@@ -389,7 +406,7 @@ void ConfigList::setValue(ConfigItem* item, tristate val)
return; return;
if (oldval == no && item->menu->list) if (oldval == no && item->menu->list)
item->setOpen(TRUE); item->setOpen(TRUE);
emit symbolChanged(item); parent()->updateList(item);
break; break;
} }
} }
...@@ -421,7 +438,7 @@ void ConfigList::changeValue(ConfigItem* item) ...@@ -421,7 +438,7 @@ void ConfigList::changeValue(ConfigItem* item)
item->setOpen(TRUE); item->setOpen(TRUE);
} }
if (oldexpr != newexpr) if (oldexpr != newexpr)
emit symbolChanged(item); parent()->updateList(item);
break; break;
case S_INT: case S_INT:
case S_HEX: case S_HEX:
...@@ -431,7 +448,7 @@ void ConfigList::changeValue(ConfigItem* item) ...@@ -431,7 +448,7 @@ void ConfigList::changeValue(ConfigItem* item)
item->startRename(colMap[dataColIdx]); item->startRename(colMap[dataColIdx]);
else else
#endif #endif
lineEdit->show(item); parent()->lineEdit->show(item);
break; break;
} }
} }
...@@ -523,7 +540,7 @@ void ConfigList::contentsMousePressEvent(QMouseEvent* e) ...@@ -523,7 +540,7 @@ void ConfigList::contentsMousePressEvent(QMouseEvent* e)
{ {
//QPoint p(contentsToViewport(e->pos())); //QPoint p(contentsToViewport(e->pos()));
//printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y()); //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y());
QListView::contentsMousePressEvent(e); Parent::contentsMousePressEvent(e);
} }
void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e)
...@@ -570,14 +587,14 @@ void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) ...@@ -570,14 +587,14 @@ void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e)
skip: skip:
//printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y()); //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y());
QListView::contentsMouseReleaseEvent(e); Parent::contentsMouseReleaseEvent(e);
} }
void ConfigList::contentsMouseMoveEvent(QMouseEvent* e) void ConfigList::contentsMouseMoveEvent(QMouseEvent* e)
{ {
//QPoint p(contentsToViewport(e->pos())); //QPoint p(contentsToViewport(e->pos()));
//printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y()); //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y());
QListView::contentsMouseMoveEvent(e); Parent::contentsMouseMoveEvent(e);
} }
void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e)
...@@ -594,10 +611,12 @@ void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) ...@@ -594,10 +611,12 @@ void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e)
if ((ptype == P_ROOTMENU || ptype == P_MENU) && if ((ptype == P_ROOTMENU || ptype == P_MENU) &&
(mode == singleMode || mode == symbolMode)) (mode == singleMode || mode == symbolMode))
emit menuSelected(menu); emit menuSelected(menu);
else if (menu->sym)
changeValue(item);
skip: skip:
//printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y()); //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y());
QListView::contentsMouseDoubleClickEvent(e); Parent::contentsMouseDoubleClickEvent(e);
} }
void ConfigList::focusInEvent(QFocusEvent *e) void ConfigList::focusInEvent(QFocusEvent *e)
...@@ -612,11 +631,53 @@ void ConfigList::focusInEvent(QFocusEvent *e) ...@@ -612,11 +631,53 @@ void ConfigList::focusInEvent(QFocusEvent *e)
emit gotFocus(); emit gotFocus();
} }
ConfigView* ConfigView::viewList;
ConfigView::ConfigView(QWidget* parent, ConfigMainWindow* cview)
: Parent(parent)
{
list = new ConfigList(this, cview);
lineEdit = new ConfigLineEdit(this);
lineEdit->hide();
this->nextView = viewList;
viewList = this;
}
ConfigView::~ConfigView(void)
{
ConfigView** vp;
for (vp = &viewList; *vp; vp = &(*vp)->nextView) {
if (*vp == this) {
*vp = nextView;
break;
}
}
}
void ConfigView::updateList(ConfigItem* item)
{
ConfigView* v;
for (v = viewList; v; v = v->nextView)
v->list->updateList(item);
}
void ConfigView::updateListAll(void)
{
ConfigView* v;
for (v = viewList; v; v = v->nextView)
v->list->updateListAll();
}
/* /*
* Construct the complete config widget * Construct the complete config widget
*/ */
ConfigView::ConfigView(void) ConfigMainWindow::ConfigMainWindow(void)
{ {
ConfigView* view;
QMenuBar* menu; QMenuBar* menu;
QSplitter* split1; QSplitter* split1;
QSplitter* split2; QSplitter* split2;
...@@ -646,22 +707,15 @@ ConfigView::ConfigView(void) ...@@ -646,22 +707,15 @@ ConfigView::ConfigView(void)
split1->setOrientation(QSplitter::Horizontal); split1->setOrientation(QSplitter::Horizontal);
setCentralWidget(split1); setCentralWidget(split1);
menuList = new ConfigList(split1, this); view = new ConfigView(split1, this);
menuList = view->list;
split2 = new QSplitter(split1); split2 = new QSplitter(split1);
split2->setOrientation(QSplitter::Vertical); split2->setOrientation(QSplitter::Vertical);
// create config tree // create config tree
QVBox* box = new QVBox(split2); view = new ConfigView(split2, this);
configList = new ConfigList(box, this); configList = view->list;
configList->lineEdit = new ConfigLineEdit(box);
configList->lineEdit->hide();
configList->connect(configList, SIGNAL(symbolChanged(ConfigItem*)),
configList, SLOT(updateList(ConfigItem*)));
configList->connect(configList, SIGNAL(symbolChanged(ConfigItem*)),
menuList, SLOT(updateList(ConfigItem*)));
configList->connect(configList->lineEdit, SIGNAL(lineChanged(ConfigItem*)),
SLOT(updateList(ConfigItem*)));
helpText = new QTextView(split2); helpText = new QTextView(split2);
helpText->setTextFormat(Qt::RichText); helpText->setTextFormat(Qt::RichText);
...@@ -711,6 +765,11 @@ ConfigView::ConfigView(void) ...@@ -711,6 +765,11 @@ ConfigView::ConfigView(void)
showDebugAction->setOn(showDebug); showDebugAction->setOn(showDebug);
connect(showDebugAction, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); connect(showDebugAction, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
QAction *showIntroAction = new QAction(NULL, "Introduction", 0, this);
connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
QAction *showAboutAction = new QAction(NULL, "About", 0, this);
connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
// init tool bar // init tool bar
backAction->addTo(toolBar); backAction->addTo(toolBar);
toolBar->addSeparator(); toolBar->addSeparator();
...@@ -740,6 +799,13 @@ ConfigView::ConfigView(void) ...@@ -740,6 +799,13 @@ ConfigView::ConfigView(void)
showAllAction->addTo(optionMenu); showAllAction->addTo(optionMenu);
showDebugAction->addTo(optionMenu); showDebugAction->addTo(optionMenu);
// create help menu
QPopupMenu* helpMenu = new QPopupMenu(this);
menu->insertSeparator();
menu->insertItem("&Help", helpMenu);
showIntroAction->addTo(helpMenu);
showAboutAction->addTo(helpMenu);
connect(configList, SIGNAL(menuSelected(struct menu *)), connect(configList, SIGNAL(menuSelected(struct menu *)),
SLOT(changeMenu(struct menu *))); SLOT(changeMenu(struct menu *)));
connect(configList, SIGNAL(parentSelected()), connect(configList, SIGNAL(parentSelected()),
...@@ -795,12 +861,12 @@ static void expr_print_help(void *data, const char *str) ...@@ -795,12 +861,12 @@ static void expr_print_help(void *data, const char *str)
/* /*
* display a new help entry as soon as a new menu entry is selected * display a new help entry as soon as a new menu entry is selected
*/ */
void ConfigView::setHelp(QListViewItem* item) void ConfigMainWindow::setHelp(QListViewItem* item)
{ {
struct symbol* sym; struct symbol* sym;
struct menu* menu; struct menu* menu;
configList->lineEdit->hide(); configList->parent()->lineEdit->hide();
if (item) { if (item) {
QString head, debug, help; QString head, debug, help;
menu = ((ConfigItem*)item)->menu; menu = ((ConfigItem*)item)->menu;
...@@ -883,24 +949,23 @@ void ConfigView::setHelp(QListViewItem* item) ...@@ -883,24 +949,23 @@ void ConfigView::setHelp(QListViewItem* item)
helpText->setText(NULL); helpText->setText(NULL);
} }
void ConfigView::loadConfig(void) void ConfigMainWindow::loadConfig(void)
{ {
QString s = QFileDialog::getOpenFileName(".config", NULL, this); QString s = QFileDialog::getOpenFileName(".config", NULL, this);
if (s.isNull()) if (s.isNull())
return; return;
if (conf_read(s.latin1())) if (conf_read(s.latin1()))
QMessageBox::information(this, "qconf", "Unable to load configuration!"); QMessageBox::information(this, "qconf", "Unable to load configuration!");
configList->updateListAll(); ConfigView::updateListAll();
menuList->updateListAll();
} }
void ConfigView::saveConfig(void) void ConfigMainWindow::saveConfig(void)
{ {
if (conf_write(NULL)) if (conf_write(NULL))
QMessageBox::information(this, "qconf", "Unable to save configuration!"); QMessageBox::information(this, "qconf", "Unable to save configuration!");
} }
void ConfigView::saveConfigAs(void) void ConfigMainWindow::saveConfigAs(void)
{ {
QString s = QFileDialog::getSaveFileName(".config", NULL, this); QString s = QFileDialog::getSaveFileName(".config", NULL, this);
if (s.isNull()) if (s.isNull())
...@@ -909,13 +974,13 @@ void ConfigView::saveConfigAs(void) ...@@ -909,13 +974,13 @@ void ConfigView::saveConfigAs(void)
QMessageBox::information(this, "qconf", "Unable to save configuration!"); QMessageBox::information(this, "qconf", "Unable to save configuration!");
} }
void ConfigView::changeMenu(struct menu *menu) void ConfigMainWindow::changeMenu(struct menu *menu)
{ {
configList->setRootMenu(menu); configList->setRootMenu(menu);
backAction->setEnabled(TRUE); backAction->setEnabled(TRUE);
} }
void ConfigView::listFocusChanged(void) void ConfigMainWindow::listFocusChanged(void)
{ {
if (menuList->hasFocus()) { if (menuList->hasFocus()) {
if (menuList->mode == menuMode) if (menuList->mode == menuMode)
...@@ -926,7 +991,7 @@ void ConfigView::listFocusChanged(void) ...@@ -926,7 +991,7 @@ void ConfigView::listFocusChanged(void)
} }
} }
void ConfigView::goBack(void) void ConfigMainWindow::goBack(void)
{ {
ConfigItem* item; ConfigItem* item;
...@@ -943,7 +1008,7 @@ void ConfigView::goBack(void) ...@@ -943,7 +1008,7 @@ void ConfigView::goBack(void)
} }
} }
void ConfigView::showSingleView(void) void ConfigMainWindow::showSingleView(void)
{ {
menuList->hide(); menuList->hide();
menuList->setRootMenu(0); menuList->setRootMenu(0);
...@@ -956,7 +1021,7 @@ void ConfigView::showSingleView(void) ...@@ -956,7 +1021,7 @@ void ConfigView::showSingleView(void)
configList->setFocus(); configList->setFocus();
} }
void ConfigView::showSplitView(void) void ConfigMainWindow::showSplitView(void)
{ {
configList->mode = symbolMode; configList->mode = symbolMode;
if (configList->rootEntry == &rootmenu) if (configList->rootEntry == &rootmenu)
...@@ -972,7 +1037,7 @@ void ConfigView::showSplitView(void) ...@@ -972,7 +1037,7 @@ void ConfigView::showSplitView(void)
menuList->setFocus(); menuList->setFocus();
} }
void ConfigView::showFullView(void) void ConfigMainWindow::showFullView(void)
{ {
menuList->hide(); menuList->hide();
menuList->setRootMenu(0); menuList->setRootMenu(0);
...@@ -985,7 +1050,7 @@ void ConfigView::showFullView(void) ...@@ -985,7 +1050,7 @@ void ConfigView::showFullView(void)
configList->setFocus(); configList->setFocus();
} }
void ConfigView::setShowAll(bool b) void ConfigMainWindow::setShowAll(bool b)
{ {
if (configList->showAll == b) if (configList->showAll == b)
return; return;
...@@ -995,14 +1060,14 @@ void ConfigView::setShowAll(bool b) ...@@ -995,14 +1060,14 @@ void ConfigView::setShowAll(bool b)
menuList->updateListAll(); menuList->updateListAll();
} }
void ConfigView::setShowDebug(bool b) void ConfigMainWindow::setShowDebug(bool b)
{ {
if (showDebug == b) if (showDebug == b)
return; return;
showDebug = b; showDebug = b;
} }
void ConfigView::setShowName(bool b) void ConfigMainWindow::setShowName(bool b)
{ {
if (configList->showName == b) if (configList->showName == b)
return; return;
...@@ -1010,7 +1075,7 @@ void ConfigView::setShowName(bool b) ...@@ -1010,7 +1075,7 @@ void ConfigView::setShowName(bool b)
configList->reinit(); configList->reinit();
} }
void ConfigView::setShowRange(bool b) void ConfigMainWindow::setShowRange(bool b)
{ {
if (configList->showRange == b) if (configList->showRange == b)
return; return;
...@@ -1018,7 +1083,7 @@ void ConfigView::setShowRange(bool b) ...@@ -1018,7 +1083,7 @@ void ConfigView::setShowRange(bool b)
configList->reinit(); configList->reinit();
} }
void ConfigView::setShowData(bool b) void ConfigMainWindow::setShowData(bool b)
{ {
if (configList->showData == b) if (configList->showData == b)
return; return;
...@@ -1030,7 +1095,7 @@ void ConfigView::setShowData(bool b) ...@@ -1030,7 +1095,7 @@ void ConfigView::setShowData(bool b)
* ask for saving configuration before quitting * ask for saving configuration before quitting
* TODO ask only when something changed * TODO ask only when something changed
*/ */
void ConfigView::closeEvent(QCloseEvent* e) void ConfigMainWindow::closeEvent(QCloseEvent* e)
{ {
if (!sym_change_count) { if (!sym_change_count) {
e->accept(); e->accept();
...@@ -1053,6 +1118,31 @@ void ConfigView::closeEvent(QCloseEvent* e) ...@@ -1053,6 +1118,31 @@ void ConfigView::closeEvent(QCloseEvent* e)
} }
} }
void ConfigMainWindow::showIntro(void)
{
static char str[] = "Welcome to the qconf graphical kernel configuration tool for Linux.\n\n"
"For each option, a blank box indicates the feature is disabled, a check\n"
"indicates it is enabled, and a dot indicates that it is to be compiled\n"
"as a module. Clicking on the box will cycle through the three states.\n\n"
"If you do not see an option (e.g., a device driver) that you believe\n"
"should be present, try turning on Show All Options under the Options menu.\n"
"Although there is no cross reference yet to help you figure out what other\n"
"options must be enabled to support the option you are interested in, you can\n"
"still view the help of a grayed-out option.\n\n"
"Toggling Show Debug Info under the Options menu will show the dependencies,\n"
"which you can then match by examining other options.\n\n";
QMessageBox::information(this, "qconf", str);
}
void ConfigMainWindow::showAbout(void)
{
static char str[] = "qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
"Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n";
QMessageBox::information(this, "qconf", str);
}
void fixup_rootmenu(struct menu *menu) void fixup_rootmenu(struct menu *menu)
{ {
struct menu *child; struct menu *child;
...@@ -1066,7 +1156,7 @@ void fixup_rootmenu(struct menu *menu) ...@@ -1066,7 +1156,7 @@ void fixup_rootmenu(struct menu *menu)
int main(int ac, char** av) int main(int ac, char** av)
{ {
ConfigView* v; ConfigMainWindow* v;
const char *name; const char *name;
#ifndef LKC_DIRECT_LINK #ifndef LKC_DIRECT_LINK
...@@ -1095,7 +1185,7 @@ int main(int ac, char** av) ...@@ -1095,7 +1185,7 @@ int main(int ac, char** av)
conf_read(NULL); conf_read(NULL);
//zconfdump(stdout); //zconfdump(stdout);
v = new ConfigView(); v = new ConfigMainWindow();
//zconfdump(stdout); //zconfdump(stdout);
v->show(); v->show();
......
...@@ -5,9 +5,27 @@ ...@@ -5,9 +5,27 @@
#include <qlistview.h> #include <qlistview.h>
class ConfigLineEdit; class ConfigList;
class ConfigItem; class ConfigItem;
class ConfigView; class ConfigLineEdit;
class ConfigMainWindow;
class ConfigView : public QVBox {
Q_OBJECT
typedef class QVBox Parent;
public:
ConfigView(QWidget* parent, ConfigMainWindow* cview);
~ConfigView(void);
static void updateList(ConfigItem* item);
static void updateListAll(void);
public:
ConfigList* list;
ConfigLineEdit* lineEdit;
static ConfigView* viewList;
ConfigView* nextView;
};
enum colIdx { enum colIdx {
promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
...@@ -20,12 +38,15 @@ class ConfigList : public QListView { ...@@ -20,12 +38,15 @@ class ConfigList : public QListView {
Q_OBJECT Q_OBJECT
typedef class QListView Parent; typedef class QListView Parent;
public: public:
ConfigList(QWidget* p, ConfigView* cview); ConfigList(ConfigView* p, ConfigMainWindow* cview);
void reinit(void); void reinit(void);
ConfigView* parent(void) const
{
return (ConfigView*)Parent::parent();
}
ConfigLineEdit* lineEdit;
protected: protected:
ConfigView* cview; ConfigMainWindow* cview;
void keyPressEvent(QKeyEvent *e); void keyPressEvent(QKeyEvent *e);
void contentsMousePressEvent(QMouseEvent *e); void contentsMousePressEvent(QMouseEvent *e);
...@@ -43,7 +64,6 @@ public slots: ...@@ -43,7 +64,6 @@ public slots:
signals: signals:
void menuSelected(struct menu *menu); void menuSelected(struct menu *menu);
void parentSelected(void); void parentSelected(void);
void symbolChanged(ConfigItem* item);
void gotFocus(void); void gotFocus(void);
public: public:
...@@ -100,13 +120,13 @@ public slots: ...@@ -100,13 +120,13 @@ public slots:
class ConfigItem : public QListViewItem { class ConfigItem : public QListViewItem {
typedef class QListViewItem Parent; typedef class QListViewItem Parent;
public: public:
ConfigItem(QListView *parent, ConfigItem *after, struct menu *m) ConfigItem(QListView *parent, ConfigItem *after, struct menu *m, bool v)
: Parent(parent, after), menu(m) : Parent(parent, after), menu(m), visible(v)
{ {
init(); init();
} }
ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m) ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
: Parent(parent, after), menu(m) : Parent(parent, after), menu(m), visible(v)
{ {
init(); init();
} }
...@@ -116,6 +136,7 @@ class ConfigItem : public QListViewItem { ...@@ -116,6 +136,7 @@ class ConfigItem : public QListViewItem {
void okRename(int col); void okRename(int col);
#endif #endif
void updateMenu(void); void updateMenu(void);
bool updateNeeded(void);
ConfigList* listView() const ConfigList* listView() const
{ {
return (ConfigList*)Parent::listView(); return (ConfigList*)Parent::listView();
...@@ -146,31 +167,33 @@ class ConfigItem : public QListViewItem { ...@@ -146,31 +167,33 @@ class ConfigItem : public QListViewItem {
} }
void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align); void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
ConfigItem* nextItem;
struct menu *menu; struct menu *menu;
bool visible; bool visible;
bool doInit;
}; };
class ConfigLineEdit : public QLineEdit { class ConfigLineEdit : public QLineEdit {
Q_OBJECT Q_OBJECT
typedef class QLineEdit Parent; typedef class QLineEdit Parent;
public: public:
ConfigLineEdit(QWidget * parent) ConfigLineEdit(ConfigView* parent)
: QLineEdit(parent) : Parent(parent)
{ } { }
ConfigView* parent(void) const
{
return (ConfigView*)Parent::parent();
}
void show(ConfigItem *i); void show(ConfigItem *i);
void keyPressEvent(QKeyEvent *e); void keyPressEvent(QKeyEvent *e);
signals:
void lineChanged(ConfigItem *item);
public: public:
ConfigItem *item; ConfigItem *item;
}; };
class ConfigView : public QMainWindow { class ConfigMainWindow : public QMainWindow {
Q_OBJECT Q_OBJECT
public: public:
ConfigView(void); ConfigMainWindow(void);
public slots: public slots:
void setHelp(QListViewItem* item); void setHelp(QListViewItem* item);
void changeMenu(struct menu *); void changeMenu(struct menu *);
...@@ -187,6 +210,8 @@ public slots: ...@@ -187,6 +210,8 @@ public slots:
void setShowRange(bool); void setShowRange(bool);
void setShowName(bool); void setShowName(bool);
void setShowData(bool); void setShowData(bool);
void showIntro(void);
void showAbout(void);
protected: protected:
void closeEvent(QCloseEvent *e); void closeEvent(QCloseEvent *e);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment