summaryrefslogtreecommitdiff
path: root/menuconfig.py
AgeCommit message (Collapse)Author
2018-05-10Style nitsUlf Magnusson
Air some long conditionals out a bit. Be more consistent with format().
2018-05-09menuconfig: Misleading comment nitUlf Magnusson
Can't get { } since {} implies n isn't assignable.
2018-05-09menuconfig: Fix rendering of long prefilled edit box stringUlf Magnusson
The horizontal scroll (hscroll) wasn't initialized properly when the initial (prefilled) contents of an edit box was longer than the edit box itself (e.g. when saving with a long path in KCONFIG_CONFIG). Things snapped back into place once a key was pressed. Initialize hscroll properly to fix the initial rendering.
2018-05-08menuconfig: Convert the C locale to a UTF-8 locale for LC_CTYPEUlf Magnusson
If LC_CTYPE is set to the C locale, try to convert it to a UTF-8 locale. Use a list of commonly available UTF-8 locales. Give up and use the C locale if none of them are available. This fixes curses Unicode I/O issues on systems with bad defaults: ncurses configures itself from the locale settings, and the C locale implies ASCII. The logic mirrors https://www.python.org/dev/peps/pep-0538/. I took the list of locales to try from the CPython code (in Python/pylifecycle.c).
2018-05-08Increase indent for implicit submenus to 4Ulf Magnusson
Makes it easier to see the menu structure. Make the indent configurable via a _SUBMENU_INDENT configuration variable.
2018-05-07menuconfig: Add incremental regex search and jump-toUlf Magnusson
Pressing [/] brings up a dialog with an edit box where a regex can be entered. The list of matching symbols is always shown below it. Selecting a symbol and pressing [Enter] jumps directly to it in the menu tree. If the symbol is invisible, show-all mode is turned on automatically. This commit also includes a bunch of more-or-less unrelated changes from poking around with the code: - Some redundant styles were merged. Probably wouldn't want to have a different style for each separator line, for example... - [ESC] in the top menu now works like [Q] - Returning to a parent menu now makes sure that the selected row is visible, even if the terminal was shrunk between entering the child menu and leaving it. - A _max_scroll() helper was factored out to reduce code duplication. It takes a list of items and a window in which the list is displayed, with one row per item, and returns the minimum scroll value that will make the final item visible. - The save dialog now pops up a message to confirm that the save was successful. - Lots of minor code nits all over (renamings, etc.)
2018-05-03menuconfig: Scroll to show current menu in menu pathUlf Magnusson
Previously, the title of the current menu disappeared off the right edge of the terminal for long menu paths. Scroll the menu path to the right if needed to make sure it is always shown.
2018-05-03menuconfig: Quit immediately when configuration is unchangedUlf Magnusson
Don't bother to show the save-and-quit dialog. Also quit immediately if the configuration hasn't been changed since the last time it was explicitly saved with the save dialog. Rename _set_node() to _set_node_tri_val(), as the old name gets confusing with the new _set_val() function.
2018-05-03menuconfig: Support setting values with [N]/[M]/[Y]Ulf Magnusson
Works the same as in mconf.
2018-05-03menuconfig: Add a mode that shows invisible itemsUlf Magnusson
When show-all mode is enabled, all items in the current menu are shown, including promptless and invisible items. Promptless items are shown with their name within <> brackets in place of the prompt. This will make it possible to jump to invisible items once the jump-to feature is added. It is also a handy feature on its own. .config loading from within the interface will make use of it as well, in case the current menu becomes complete invisible. Piggyback various code cleanups. Rename _visible* to _shown*, as it now includes invisible items in show-all mode.
2018-05-01Add a terminal menuconfig implementationUlf Magnusson
Uses the 'curses' module, which is in the Python standard library. Only Python 3 is supported, mostly due to Unicode support. Windows support is provided through an external package which adds support for the 'curses' module on Windows. See the changes and the docstring in the newly added menuconfig.py for more information. Piggyback a README notes mentioning that Kconfiglib supports Unicode.