summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2018-05-01 00:47:52 +0200
committerUlf Magnusson <ulfalizer@gmail.com>2018-05-01 01:04:41 +0200
commit49d1d4fa7157b4e4510ee3181141209850d6d8b5 (patch)
treefa6d83087403cd8850f2685b095cebb7a585428b /README.rst
parent09b8c589681b1141e7b36a6e487c953c7e6e3c18 (diff)
Add a terminal menuconfig implementation
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.
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst86
1 files changed, 70 insertions, 16 deletions
diff --git a/README.rst b/README.rst
index b7e5228..073daa4 100644
--- a/README.rst
+++ b/README.rst
@@ -8,24 +8,18 @@ Overview
Kconfiglib 1. For a summary of changes between Kconfiglib 1 and Kconfiglib 2,
see* |changes|_.
+*Kconfiglib 2 now has two interactive configuration interfaces available. See
+the Configuration Interfaces section below.*
+
.. _changes: https://github.com/ulfalizer/Kconfiglib/blob/master/kconfiglib-2-changes.txt
.. |changes| replace:: *kconfiglib-2-changes.txt*
-|RomaVis|_ *has built a portable* |TkInter|_ *menuconfig implementation on top of Kconfiglib. It is still a work-in-progress, but is already functional. See the* |pymenuconfig|_ *project.*
-
-.. _RomaVis: https://github.com/RomaVis
-.. |RomaVis| replace:: *RomaVis*
-
-.. _TkInter: https://wiki.python.org/moin/TkInter
-.. |TkInter| replace:: *TkInter*
-
-.. _pymenuconfig: https://github.com/RomaVis/pymenuconfig
-.. |pymenuconfig| replace:: *pymenuconfig*
-
-Kconfiglib is a Python 2/3 library for scripting and extracting information
-from `Kconfig
+Kconfiglib is a Python 2/3 library for working with `Kconfig
<https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt>`_
-configuration systems. It can do the following, among other things:
+configuration systems. It also functions well as a standalone Kconfig
+implementation, and has ``menuconfig`` implementations available.
+
+Kconfiglib can do the following, among other things:
- **Programmatically get and set symbol values**
@@ -145,6 +139,11 @@ Here are some other features:
the current Kconfig file, and a globbing ``source`` (``gsource``) that doubles
as an include-if-exists function.
+- **Unicode support**
+
+ Unicode characters in string literals in `Kconfig` and `.config` files are
+ correctly handled. This support mostly comes for free from Python.
+
- **Windows support**
Nothing Linux-specific is used. Universal newlines mode is used for both
@@ -152,12 +151,11 @@ Here are some other features:
The `Zephyr <https://www.zephyrproject.org/>`_ project uses Kconfiglib to
generate ``.config`` files and C headers on Linux as well as Windows.
-
- **Internals that (mostly) mirror the C implementation**
While being simpler to understand and tweak.
-
+
Documentation
-------------
@@ -218,6 +216,62 @@ The entire library is contained in
`kconfiglib.py <https://github.com/ulfalizer/Kconfiglib/blob/master/kconfiglib.py>`_.
Just drop it somewhere.
+Configuration interfaces
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Two configuration interfaces are currently available:
+
+ - `menuconfig.py <https://github.com/ulfalizer/Kconfiglib/blob/master/menuconfig.py>`_
+ is a terminal-based configuration interface implemented using the standard
+ Python ``curses`` module.
+
+ Some screenshots below:
+
+ .. image:: https://raw.githubusercontent.com/ulfalizer/Kconfiglib/screenshots/screenshots/ss3.png
+
+ .. image:: https://raw.githubusercontent.com/ulfalizer/Kconfiglib/screenshots/screenshots/ss5.png
+
+ .. image:: https://raw.githubusercontent.com/ulfalizer/Kconfiglib/screenshots/screenshots/ss7.png
+
+ .. image:: https://raw.githubusercontent.com/ulfalizer/Kconfiglib/screenshots/screenshots/ss8.png
+
+ .. image:: https://raw.githubusercontent.com/ulfalizer/Kconfiglib/screenshots/screenshots/ss6.png
+
+ (Sorry about that yellow color. See the styling code at the top of
+ ``menuconfig.py`` if you want to try to make it prettier. :))
+
+ ``menuconfig.py`` only supports Python 3, mostly due to
+ ``curses.get_wch()`` being used, which is needed for Unicode support.
+ ``curses.get_wch()`` isn't available in the Python 2 version of the
+ ``curses`` module.
+
+ ``menuconfig.py`` has no third-party dependencies on \*nix.
+
+ On Windows, the ``curses`` modules is not available by default, but support
+ can be added by installing the ``windows-curses`` package:
+
+ pip install windows-curses
+
+ This uses wheels built from `this repository
+ <https://github.com/zephyrproject-rtos/windows-curses>`_, which is in turn
+ based on Christoph Gohlke's `Python Extension Packages for Windows
+ <https://www.lfd.uci.edu/~gohlke/pythonlibs/#curses>`_.
+
+ See the docstring at the top of `menuconfig.py
+ <https://github.com/ulfalizer/Kconfiglib/blob/master/menuconfig.py>`_ for
+ more information about the terminal menuconfig implementation.
+
+ - `RomaVis <https://github.com/RomaVis>`_ has built a fully portable Python
+ 2/3 `TkInter <https://wiki.python.org/moin/TkInter>`_ menuconfig
+ implementation. It is still a work-in-progress, but is already functional.
+
+ See the `pymenuconfig <https://github.com/RomaVis/pymenuconfig>`_ project
+ for more information.
+
+ Screenshot below:
+
+ .. image:: https://raw.githubusercontent.com/RomaVis/pymenuconfig/master/screenshot.PNG
+
Examples
--------