lkml.org 
[lkml]   [2010]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 6/6] xconfig: Add support to show hidden options which have prompts
On Tue, 27 Apr 2010 15:49:30 +0800 Li Zefan wrote:

> This feature has been supported in menuconfig and gconfig, so
> here add it to xconfig.

Looks/sounds reasonable, but it does hide some symbols that were previously displayed
when in "Show all options" mode.

E.g., CONFIG_64BIT is not displayed at all with this patch applied
(except by the Search function).
Also, X86_32 is not displayed at all (when this patch is applied)
and it cannot be found or displayed by the Search function.

IOW, Show all options mode is busted. :(


> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
> ---
> scripts/kconfig/qconf.cc | 62 ++++++++++++++++++++++++++++++++-------------
> scripts/kconfig/qconf.h | 16 +++++++++---
> 2 files changed, 56 insertions(+), 22 deletions(-)
>
> diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
> index d950fff..f8c07c6 100644
> --- a/scripts/kconfig/qconf.cc
> +++ b/scripts/kconfig/qconf.cc
> @@ -149,7 +149,7 @@ void ConfigItem::updateMenu(void)
> case S_TRISTATE:
> char ch;
>
> - if (!sym_is_changable(sym) && !list->showAll) {
> + if (!sym_is_changable(sym) && list->optMode != normalOpt) {
> setPixmap(promptColIdx, 0);
> setText(noColIdx, QString::null);
> setText(modColIdx, QString::null);
> @@ -320,7 +320,7 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
> 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), menuBackPix(xpm_menuback), voidPix(xpm_void),
> - showAll(false), showName(false), showRange(false), showData(false),
> + showName(false), showRange(false), showData(false), optMode(normalOpt),
> rootEntry(0), headerPopup(0)
> {
> int i;
> @@ -337,10 +337,10 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
>
> if (name) {
> configSettings->beginGroup(name);
> - showAll = configSettings->readBoolEntry("/showAll", false);
> showName = configSettings->readBoolEntry("/showName", false);
> showRange = configSettings->readBoolEntry("/showRange", false);
> showData = configSettings->readBoolEntry("/showData", false);
> + optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false);
> configSettings->endGroup();
> connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
> }
> @@ -352,6 +352,17 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
> reinit();
> }
>
> +bool ConfigList::menuSkip(struct menu *menu)
> +{
> + if (optMode == normalOpt && menu_is_visible(menu))
> + return false;
> + if (optMode == promptOpt && menu_has_prompt(menu))
> + return false;
> + if (optMode == allOpt)
> + return false;
> + return true;
> +}
> +
> void ConfigList::reinit(void)
> {
> removeColumn(dataColIdx);
> @@ -380,7 +391,7 @@ void ConfigList::saveSettings(void)
> configSettings->writeEntry("/showName", showName);
> configSettings->writeEntry("/showRange", showRange);
> configSettings->writeEntry("/showData", showData);
> - configSettings->writeEntry("/showAll", showAll);
> + configSettings->writeEntry("/optionMode", (int)optMode);
> configSettings->endGroup();
> }
> }
> @@ -606,7 +617,7 @@ void ConfigList::updateMenuList(P* parent, struct menu* menu)
> }
>
> visible = menu_is_visible(child);
> - if (showAll || visible) {
> + if (!menuSkip(child)) {
> if (!child->sym && !child->list && !child->prompt)
> continue;
> if (!item || item->menu != child)
> @@ -860,13 +871,16 @@ ConfigView::~ConfigView(void)
> }
> }
>
> -void ConfigView::setShowAll(bool b)
> +void ConfigView::setOptionMode(QAction *act)
> {
> - if (list->showAll != b) {
> - list->showAll = b;
> - list->updateListAll();
> - emit showAllChanged(b);
> - }
> + if (act == showNormalAction)
> + list->optMode = normalOpt;
> + else if (act == showAllAction)
> + list->optMode = allOpt;
> + else
> + list->optMode = promptOpt;
> +
> + list->updateListAll();
> }
>
> void ConfigView::setShowName(bool b)
> @@ -1321,11 +1335,22 @@ ConfigMainWindow::ConfigMainWindow(void)
> connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
> connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
> showDataAction->setOn(configList->showData);
> - QAction *showAllAction = new QAction(NULL, _("Show All Options"), 0, this);
> - showAllAction->setToggleAction(TRUE);
> - connect(showAllAction, SIGNAL(toggled(bool)), configView, SLOT(setShowAll(bool)));
> - connect(showAllAction, SIGNAL(toggled(bool)), menuView, SLOT(setShowAll(bool)));
> - showAllAction->setOn(configList->showAll);
> +
> + QActionGroup *optGroup = new QActionGroup(this);
> + optGroup->setExclusive(TRUE);
> + connect(optGroup, SIGNAL(selected(QAction *)), configView,
> + SLOT(setOptionMode(QAction *)));
> +
> + configView->showNormalAction = new QAction(NULL, _("Show Normal Options"), 0, optGroup);
> + configView->showAllAction = new QAction(NULL, _("Show All Options"), 0, optGroup);
> + configView->showPromptAction = new QAction(NULL, _("Show Prompt Options"), 0, optGroup);
> + configView->showNormalAction->setToggleAction(TRUE);
> + configView->showNormalAction->setOn(configList->optMode == normalOpt);
> + configView->showAllAction->setToggleAction(TRUE);
> + configView->showAllAction->setOn(configList->optMode == allOpt);
> + configView->showPromptAction->setToggleAction(TRUE);
> + configView->showPromptAction->setOn(configList->optMode == promptOpt);
> +
> QAction *showDebugAction = new QAction(NULL, _("Show Debug Info"), 0, this);
> showDebugAction->setToggleAction(TRUE);
> connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
> @@ -1368,7 +1393,8 @@ ConfigMainWindow::ConfigMainWindow(void)
> showRangeAction->addTo(optionMenu);
> showDataAction->addTo(optionMenu);
> optionMenu->insertSeparator();
> - showAllAction->addTo(optionMenu);
> + optGroup->addTo(optionMenu);
> + optionMenu->insertSeparator();
> showDebugAction->addTo(optionMenu);
>
> // create help menu
> @@ -1463,7 +1489,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
> ConfigList* list = NULL;
> ConfigItem* item;
>
> - if (!menu_is_visible(menu) && !configView->showAll())
> + if (configList->menuSkip(menu))
> return;
>
> switch (configList->mode) {
> diff --git a/scripts/kconfig/qconf.h b/scripts/kconfig/qconf.h
> index 54775ae..37bdaec 100644
> --- a/scripts/kconfig/qconf.h
> +++ b/scripts/kconfig/qconf.h
> @@ -44,6 +44,9 @@ enum colIdx {
> enum listMode {
> singleMode, menuMode, symbolMode, fullMode, listMode
> };
> +enum optionMode {
> + normalOpt = 0, allOpt, promptOpt
> +};
>
> class ConfigList : public QListView {
> Q_OBJECT
> @@ -115,6 +118,8 @@ public:
> void setAllOpen(bool open);
> void setParentMenu(void);
>
> + bool menuSkip(struct menu *);
> +
> template <class P>
> void updateMenuList(P*, struct menu*);
>
> @@ -124,8 +129,9 @@ public:
> QPixmap choiceYesPix, choiceNoPix;
> QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
>
> - bool showAll, showName, showRange, showData;
> + bool showName, showRange, showData;
> enum listMode mode;
> + enum optionMode optMode;
> struct menu *rootEntry;
> QColorGroup disabledColorGroup;
> QColorGroup inactivedColorGroup;
> @@ -222,17 +228,15 @@ public:
> static void updateList(ConfigItem* item);
> static void updateListAll(void);
>
> - bool showAll(void) const { return list->showAll; }
> bool showName(void) const { return list->showName; }
> bool showRange(void) const { return list->showRange; }
> bool showData(void) const { return list->showData; }
> public slots:
> - void setShowAll(bool);
> void setShowName(bool);
> void setShowRange(bool);
> void setShowData(bool);
> + void setOptionMode(QAction *);
> signals:
> - void showAllChanged(bool);
> void showNameChanged(bool);
> void showRangeChanged(bool);
> void showDataChanged(bool);
> @@ -242,6 +246,10 @@ public:
>
> static ConfigView* viewList;
> ConfigView* nextView;
> +
> + QAction *showNormalAction;
> + QAction *showAllAction;
> + QAction *showPromptAction;
> };
>
> class ConfigInfoView : public QTextBrowser {
> --


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***


\
 
 \ /
  Last update: 2010-04-27 22:47    [W:0.093 / U:0.928 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site