author | kergoth <kergoth> | 2003-06-17 17:03:49 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-06-17 17:03:49 (UTC) |
commit | 16e53b2a2e94742f3b55ee73700bb264e36638d4 (patch) (side-by-side diff) | |
tree | 4f2b65a635d25c1ce0cfeea7953623c2bf7d9534 /scripts/kconfig/qconf.cc | |
parent | 384b7f1a42f9f2f101dc8fe11c3625055d96f672 (diff) | |
download | opie-16e53b2a2e94742f3b55ee73700bb264e36638d4.zip opie-16e53b2a2e94742f3b55ee73700bb264e36638d4.tar.gz opie-16e53b2a2e94742f3b55ee73700bb264e36638d4.tar.bz2 |
Update LinuxKernelConf version to 1.4.
-rw-r--r-- | scripts/kconfig/qconf.cc | 405 |
1 files changed, 253 insertions, 152 deletions
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index bed541d..52419ad 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc @@ -44,6 +44,5 @@ static QSettings *configSettings; template <class P> -static void updateMenuList(P* parent, struct menu* menu) +void ConfigList::updateMenuList(P* parent, struct menu* menu) { struct menu* child; - ConfigList* list = parent->listView(); ConfigItem* item; @@ -51,4 +50,2 @@ static void updateMenuList(P* parent, struct menu* menu) bool visible; - bool showAll = list->showAll; - enum listMode mode = list->mode; enum prop_type type; @@ -61,3 +58,5 @@ static void updateMenuList(P* parent, struct menu* menu) - last = 0; + last = parent->firstChild(); + if (last && !last->goParent) + last = 0; for (child = menu->list; child; child = child->next) { @@ -68,3 +67,3 @@ static void updateMenuList(P* parent, struct menu* menu) case menuMode: - if (type != P_ROOTMENU) + if (!(child->flags & MENU_ROOT)) goto hide; @@ -72,3 +71,3 @@ static void updateMenuList(P* parent, struct menu* menu) case symbolMode: - if (type == P_ROOTMENU) + if (child->flags & MENU_ROOT) goto hide; @@ -83,15 +82,6 @@ static void updateMenuList(P* parent, struct menu* menu) item = new ConfigItem(parent, last, child, visible); - else { - item->visible = visible; - if (item->updateNeeded()) { - ConfigItem* i = (ConfigItem*)child->data; - for (; i; i = i->nextItem) { - i->updateMenu(); - } - } else if (list->updateAll) - item->updateMenu(); - } + else + item->testUpdateMenu(visible); - if (mode == fullMode || mode == menuMode || - (type != P_MENU && type != P_ROOTMENU)) + if (mode == fullMode || mode == menuMode || type != P_MENU) updateMenuList(item, child); @@ -102,3 +92,3 @@ static void updateMenuList(P* parent, struct menu* menu) } - hide: + hide: if (item && item->menu == child) { @@ -133,5 +123,5 @@ void ConfigItem::updateMenu(void) struct symbol* sym; + struct property *prop; QString prompt; int type; - enum prop_type ptype; tristate expr; @@ -139,14 +129,35 @@ void ConfigItem::updateMenu(void) list = listView(); + if (goParent) { + setPixmap(promptColIdx, list->menuBackPix); + prompt = ".."; + goto set_prompt; + } sym = menu->sym; - if (!sym) { - setText(promptColIdx, menu_get_prompt(menu)); - ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if ((ptype == P_ROOTMENU || ptype == P_MENU) && - (list->mode == singleMode || list->mode == symbolMode)) + prop = menu->prompt; + prompt = menu_get_prompt(menu); + + if (prop) switch (prop->type) { + case P_MENU: + if (list->mode == singleMode || list->mode == symbolMode) { + /* a menuconfig entry is displayed differently + * depending whether it's at the view root or a child. + */ + if (sym && list->rootEntry == menu) + break; setPixmap(promptColIdx, list->menuPix); - else + } else { + if (sym) + break; setPixmap(promptColIdx, 0); - return; + } + goto set_prompt; + case P_COMMENT: + setPixmap(promptColIdx, 0); + goto set_prompt; + default: + ; } + if (!sym) + goto set_prompt; @@ -160,4 +171,4 @@ void ConfigItem::updateMenu(void) - prompt = menu_get_prompt(menu); if (!sym_is_changable(sym) && !list->showAll) { + setPixmap(promptColIdx, 0); setText(noColIdx, 0); @@ -213,5 +224,5 @@ void ConfigItem::updateMenu(void) if (type == S_STRING) - prompt.sprintf("%s: %s", menu_get_prompt(menu), data); + prompt.sprintf("%s: %s", prompt.latin1(), data); else - prompt.sprintf("(%s) %s", data, menu_get_prompt(menu)); + prompt.sprintf("(%s) %s", data, prompt.latin1()); break; @@ -220,2 +231,3 @@ void ConfigItem::updateMenu(void) prompt += " (NEW)"; +set_prompt: setText(promptColIdx, prompt); @@ -223,12 +235,18 @@ void ConfigItem::updateMenu(void) -bool ConfigItem::updateNeeded(void) +void ConfigItem::testUpdateMenu(bool v) { - struct symbol* sym = menu->sym; - if (sym) - sym_calc_value(sym); + ConfigItem* i; + + visible = v; + if (!menu) + return; + + sym_calc_value(menu->sym); if (menu->flags & MENU_CHANGED) { + /* the menu entry changed, so update all list items */ menu->flags &= ~MENU_CHANGED; - return true; - } - return false; + for (i = (ConfigItem*)menu->data; i; i = i->nextItem) + i->updateMenu(); + } else if (listView()->updateAll) + updateMenu(); } @@ -253,10 +271,11 @@ void ConfigItem::init(void) { - ConfigList* list = listView(); - nextItem = (ConfigItem*)menu->data; - menu->data = this; + if (menu) { + ConfigList* list = listView(); + nextItem = (ConfigItem*)menu->data; + menu->data = this; - if (list->mode != fullMode) - setOpen(TRUE); - if (menu->sym) + if (list->mode != fullMode) + setOpen(TRUE); sym_calc_value(menu->sym); + } updateMenu(); @@ -269,7 +288,9 @@ ConfigItem::~ConfigItem(void) { - ConfigItem** ip = &(ConfigItem*)menu->data; - for (; *ip; ip = &(*ip)->nextItem) { - if (*ip == this) { - *ip = nextItem; - break; + if (menu) { + ConfigItem** ip = (ConfigItem**)&menu->data; + for (; *ip; ip = &(*ip)->nextItem) { + if (*ip == this) { + *ip = nextItem; + break; + } } @@ -312,3 +333,4 @@ ConfigList::ConfigList(ConfigView* p, ConfigMainWindow* cv) symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), - choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), menuPix(xpm_menu), menuInvPix(xpm_menu_inv), + choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), + menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), showAll(false), showName(false), showRange(false), showData(false), @@ -368,4 +390,6 @@ void ConfigList::updateSelection(void) menu = item->menu; + if (!menu) + return; type = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (mode == menuMode && (type == P_MENU || type == P_ROOTMENU)) + if (mode == menuMode && type == P_MENU) emit menuSelected(menu); @@ -375,3 +399,24 @@ void ConfigList::updateList(ConfigItem* item) { - (void)item; // unused so far + ConfigItem* last = 0; + + if (!rootEntry) + goto update; + + if (rootEntry != &rootmenu && (mode == singleMode || + (mode == symbolMode && rootEntry->parent != &rootmenu))) { + item = firstChild(); + if (!item) + item = new ConfigItem(this, 0, true); + last = item; + } + if (mode == singleMode && rootEntry->sym && rootEntry->prompt) { + item = last ? last->nextSibling() : firstChild(); + if (!item) + item = new ConfigItem(this, last, rootEntry, true); + + updateMenuList(item, rootEntry); + triggerUpdate(); + return; + } +update: updateMenuList(this, rootEntry); @@ -394,3 +439,3 @@ void ConfigList::setValue(ConfigItem* item, tristate val) - sym = item->menu->sym; + sym = item->menu ? item->menu->sym : 0; if (!sym) @@ -420,2 +465,4 @@ void ConfigList::changeValue(ConfigItem* item) menu = item->menu; + if (!menu) + return; sym = menu->sym; @@ -462,3 +509,3 @@ void ConfigList::setRootMenu(struct menu *menu) type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (type != P_MENU && type != P_ROOTMENU) + if (type != P_MENU) return; @@ -473,9 +520,8 @@ void ConfigList::setParentMenu(void) ConfigItem* item; - struct menu *oldroot, *newroot; + struct menu *oldroot; oldroot = rootEntry; - newroot = menu_get_parent_menu(oldroot); - if (newroot == oldroot) + if (rootEntry == &rootmenu) return; - setRootMenu(newroot); + setRootMenu(menu_get_parent_menu(rootEntry->parent)); @@ -513,5 +559,12 @@ void ConfigList::keyPressEvent(QKeyEvent* ev) case Key_Enter: + if (item->goParent) { + emit parentSelected(); + break; + } menu = item->menu; + if (!menu) + break; type = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if ((type == P_MENU || type == P_ROOTMENU) && mode != fullMode) { + if (type == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) { emit menuSelected(menu); @@ -550,2 +603,3 @@ void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) struct menu *menu; + enum prop_type ptype; const QPixmap* pm; @@ -566,6 +620,13 @@ void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) if (x >= off && x < off + pm->width()) { - if (menu->sym) - changeValue(item); - else + if (item->goParent) { + emit parentSelected(); + break; + } else if (!menu) + break; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) emit menuSelected(menu); + else + changeValue(item); } @@ -608,6 +669,11 @@ void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) goto skip; + if (item->goParent) { + emit parentSelected(); + goto skip; + } menu = item->menu; + if (!menu) + goto skip; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if ((ptype == P_ROOTMENU || ptype == P_MENU) && - (mode == singleMode || mode == symbolMode)) + if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) emit menuSelected(menu); @@ -679,3 +745,2 @@ ConfigMainWindow::ConfigMainWindow(void) { - ConfigView* view; QMenuBar* menu; @@ -709,4 +774,4 @@ ConfigMainWindow::ConfigMainWindow(void) - view = new ConfigView(split1, this); - menuList = view->list; + menuView = new ConfigView(split1, this); + menuList = menuView->list; @@ -716,4 +781,4 @@ ConfigMainWindow::ConfigMainWindow(void) // create config tree - view = new ConfigView(split2, this); - configList = view->list; + configView = new ConfigView(split2, this); + configList = configView->list; @@ -820,3 +885,2 @@ ConfigMainWindow::ConfigMainWindow(void) - //showFullView(); showSplitView(); @@ -866,77 +930,81 @@ void ConfigMainWindow::setHelp(QListViewItem* item) struct symbol* sym; - struct menu* menu; + struct menu* menu = 0; configList->parent()->lineEdit->hide(); - if (item) { - QString head, debug, help; + if (item) menu = ((ConfigItem*)item)->menu; - sym = menu->sym; - if (sym) { - if (menu->prompt) { - head += "<big><b>"; - head += print_filter(menu->prompt->text); - head += "</b></big>"; - if (sym->name) { - head += " ("; - head += print_filter(sym->name); - head += ")"; - } - } else if (sym->name) { - head += "<big><b>"; + if (!menu) { + helpText->setText(NULL); + return; + } + + QString head, debug, help; + menu = ((ConfigItem*)item)->menu; + sym = menu->sym; + if (sym) { + if (menu->prompt) { + head += "<big><b>"; + head += print_filter(menu->prompt->text); + head += "</b></big>"; + if (sym->name) { + head += " ("; head += print_filter(sym->name); - head += "</b></big>"; + head += ")"; } - head += "<br><br>"; - - if (showDebug) { - debug += "type: "; - debug += print_filter(sym_type_name(sym->type)); + } else if (sym->name) { + head += "<big><b>"; + head += print_filter(sym->name); + head += "</b></big>"; + } + head += "<br><br>"; + + if (showDebug) { + debug += "type: "; + debug += print_filter(sym_type_name(sym->type)); + if (sym_is_choice(sym)) + debug += " (choice)"; + debug += "<br>"; + if (sym->rev_dep.expr) { + debug += "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); debug += "<br>"; - for (struct property *prop = sym->prop; prop; prop = prop->next) { - switch (prop->type) { - case P_PROMPT: - debug += "prompt: "; - debug += print_filter(prop->text); - debug += "<br>"; - if (prop->visible.expr) { - debug += " dep: "; - expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); - debug += "<br>"; - } - break; - case P_DEFAULT: - debug += "default: "; - if (sym_is_choice(sym)) - debug += print_filter(prop->def->name); - else { - sym_calc_value(prop->def); - debug += print_filter(sym_get_string_value(prop->def)); - } - debug += "<br>"; - if (prop->visible.expr) { - debug += " dep: "; - expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); - debug += "<br>"; - } - break; - case P_CHOICE: - break; - default: - debug += "unknown property: "; - debug += prop_get_type_name(prop->type); + } + for (struct property *prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_PROMPT: + case P_MENU: + debug += "prompt: "; + debug += print_filter(prop->text); + debug += "<br>"; + break; + case P_DEFAULT: + debug += "default: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "<br>"; + break; + case P_CHOICE: + if (sym_is_choice(sym)) { + debug += "choice: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); debug += "<br>"; } + break; + case P_SELECT: + debug += "select: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "<br>"; + break; + case P_RANGE: + debug += "range: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "<br>"; + break; + default: + debug += "unknown property: "; + debug += prop_get_type_name(prop->type); + debug += "<br>"; } - debug += "<br>"; - } - - help = print_filter(sym->help); - } else if (menu->prompt) { - head += "<big><b>"; - head += print_filter(menu->prompt->text); - head += "</b></big><br><br>"; - if (showDebug) { - if (menu->prompt->visible.expr) { - debug += " dep: "; - expr_print(menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + if (prop->visible.expr) { + debug += " dep: "; + expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); debug += "<br>"; @@ -944,7 +1012,21 @@ void ConfigMainWindow::setHelp(QListViewItem* item) } + debug += "<br>"; + } + + help = print_filter(sym->help); + } else if (menu->prompt) { + head += "<big><b>"; + head += print_filter(menu->prompt->text); + head += "</b></big><br><br>"; + if (showDebug) { + if (menu->prompt->visible.expr) { + debug += " dep: "; + expr_print(menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + debug += "<br><br>"; + } } - helpText->setText(head + debug + help); - return; } - helpText->setText(NULL); + if (showDebug) + debug += QString().sprintf("defined at %s:%d<br><br>", menu->file->name, menu->lineno); + helpText->setText(head + debug + help); } @@ -1012,3 +1094,3 @@ void ConfigMainWindow::showSingleView(void) { - menuList->hide(); + menuView->hide(); menuList->setRootMenu(0); @@ -1034,4 +1116,4 @@ void ConfigMainWindow::showSplitView(void) menuList->setRootMenu(&rootmenu); - menuList->show(); menuList->setAllOpen(TRUE); + menuView->show(); menuList->setFocus(); @@ -1041,3 +1123,3 @@ void ConfigMainWindow::showFullView(void) { - menuList->hide(); + menuView->hide(); menuList->setRootMenu(0); @@ -1075,2 +1157,4 @@ void ConfigMainWindow::setShowName(bool b) configList->reinit(); + menuList->showName = b; + menuList->reinit(); } @@ -1083,2 +1167,4 @@ void ConfigMainWindow::setShowRange(bool b) configList->reinit(); + menuList->showRange = b; + menuList->reinit(); } @@ -1091,2 +1177,4 @@ void ConfigMainWindow::setShowData(bool b) configList->reinit(); + menuList->showData = b; + menuList->reinit(); } @@ -1148,8 +1236,21 @@ void fixup_rootmenu(struct menu *menu) struct menu *child; + static int menu_cnt = 0; - if (!menu->prompt || menu->prompt->type != P_MENU) - return; - menu->prompt->type = P_ROOTMENU; - for (child = menu->list; child; child = child->next) - fixup_rootmenu(child); + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + +static const char *progname; + +static void usage(void) +{ + printf("%s <config>\n", progname); + exit(0); } @@ -1165,2 +1266,3 @@ int main(int ac, char** av) + progname = av[0]; configApp = new QApplication(ac, av); @@ -1171,9 +1273,5 @@ int main(int ac, char** av) switch (av[1][1]) { - case 'a': - //showAll = 1; - break; case 'h': case '?': - printf("%s <config>\n", av[0]); - exit(0); + usage(); } @@ -1182,2 +1280,5 @@ int main(int ac, char** av) name = av[1]; + if (!name) + usage(); + conf_parse(name); |