diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-04-28 21:43:35 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-04-28 22:57:07 +0200 |
commit | 7253c2b6297f85ec94512a2cff39ab25df043ad9 (patch) | |
tree | 0bdd892538d284e691e7daad08d9e7e8cb30f7af /gnu/installer | |
parent | 0fe169220050db9eb0b271e2afebe70ccd070ab9 (diff) | |
download | guix-7253c2b6297f85ec94512a2cff39ab25df043ad9.tar.gz guix-7253c2b6297f85ec94512a2cff39ab25df043ad9.zip |
installer: Add #:selection parameter to 'run-checkbox-tree-page'.
* gnu/installer/newt/page.scm (%none-selected): New variable.
(run-checkbox-tree-page): Add #:selection.
[fill-checkbox-tree]: Honor it.
Diffstat (limited to 'gnu/installer')
-rw-r--r-- | gnu/installer/newt/page.scm | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm index e9514e110f..3173d54737 100644 --- a/gnu/installer/newt/page.scm +++ b/gnu/installer/newt/page.scm @@ -437,10 +437,14 @@ error is raised if the MAX-SCALE-UPDATE limit is reached." (lambda () (destroy-form-and-pop form))))) +(define %none-selected + (circular-list #f)) + (define* (run-checkbox-tree-page #:key info-text title items + (selection %none-selected) item->text (info-textbox-width 50) (checkbox-tree-height 10) @@ -453,7 +457,8 @@ a checkbox list. The page contains vertically stacked from the top to the bottom, an informative text set to INFO-TEXT, the checkbox list and two buttons, 'Ok' and 'Exit'. The page title's is set to TITLE. ITEMS are converted to text using ITEM->TEXT before being displayed in the checkbox -list. +list. SELECTION is a list of Booleans of the same length as ITEMS that +specifies which items are initially checked. INFO-TEXTBOX-WIDTH is the width of the textbox where INFO-TEXT will be displayed. CHECKBOX-TREE-HEIGHT is the height of the checkbox list. @@ -465,12 +470,15 @@ pressed. This procedure returns the list of checked items in the checkbox list among ITEMS when 'Ok' is pressed." (define (fill-checkbox-tree checkbox-tree items) - (map - (lambda (item) - (let* ((item-text (item->text item)) - (key (add-entry-to-checkboxtree checkbox-tree item-text 0))) - (cons key item))) - items)) + (map (lambda (item selected?) + (let* ((item-text (item->text item)) + (key (add-entry-to-checkboxtree checkbox-tree item-text + (if selected? + FLAG-SELECTED + 0)))) + (cons key item))) + items + selection)) (let* ((checkbox-tree (make-checkboxtree -1 -1 |