installer: Add a help page.
* gnu/installer/newt/help.scm: New file. * gnu/local.mk (INSTALLER_MODULES): Add it. * po/guix/POTFILES.in: Add it. * gnu/installer/record.scm (<installer>): Add 'help-menu' and 'help-page' fields, (installer-help-menu, installer-help-page): new exported procedures. * gnu/installer/newt.scm (init): Set the help line, (help-menu, help-page): new procedures used ... (newt-installer): ... here. * gnu/installer/newt/keymap.scm (run-layout-page): Add a context argument to differenciate the help context from the main one, (run-keymap-page): add a context argument and pass it to run-layout-page. * gnu/installer.scm (compute-keymap-step): Add a context argument and pass it to 'installer-keymap-page', (installer-steps): set the help menu and pass the appropriate context to compute-keymap-step calls, (guile-newt): update to revision 2.master
parent
a274bba2f9
commit
786c9c39bc
|
@ -172,7 +172,7 @@ been performed at build time."
|
|||
(kmscon-update-keymap (default-keyboard-model)
|
||||
layout variant))))
|
||||
|
||||
(define* (compute-keymap-step)
|
||||
(define* (compute-keymap-step context)
|
||||
"Return a gexp that runs the keymap-page of INSTALLER and install the
|
||||
selected keymap."
|
||||
#~(lambda (current-installer)
|
||||
|
@ -184,7 +184,7 @@ selected keymap."
|
|||
"/share/X11/xkb/rules/base.xml")))
|
||||
(lambda (models layouts)
|
||||
((installer-keymap-page current-installer)
|
||||
layouts)))))
|
||||
layouts '#$context)))))
|
||||
(#$apply-keymap result)
|
||||
result)))
|
||||
|
||||
|
@ -193,10 +193,15 @@ selected keymap."
|
|||
#:locales-name "locales"
|
||||
#:iso639-languages-name "iso639-languages"
|
||||
#:iso3166-territories-name "iso3166-territories"))
|
||||
(keymap-step (compute-keymap-step))
|
||||
(timezone-data #~(string-append #$tzdata
|
||||
"/share/zoneinfo/zone.tab")))
|
||||
#~(lambda (current-installer)
|
||||
((installer-help-menu current-installer)
|
||||
(lambda ()
|
||||
((installer-help-page current-installer)
|
||||
(lambda _
|
||||
(#$(compute-keymap-step 'help)
|
||||
current-installer)))))
|
||||
(list
|
||||
;; Ask the user to choose a locale among those supported by
|
||||
;; the glibc. Install the selected locale right away, so that
|
||||
|
@ -238,7 +243,8 @@ selected keymap."
|
|||
(id 'keymap)
|
||||
(description (G_ "Keyboard mapping selection"))
|
||||
(compute (lambda _
|
||||
(#$keymap-step current-installer)))
|
||||
(#$(compute-keymap-step 'default)
|
||||
current-installer)))
|
||||
(configuration-formatter keyboard-layout->configuration))
|
||||
|
||||
;; Ask the user to input a hostname for the system.
|
||||
|
@ -295,8 +301,8 @@ selected keymap."
|
|||
(define guile-newt
|
||||
;; Guile-Newt with 'form-watch-fd'.
|
||||
;; TODO: Remove once a new release is out.
|
||||
(let ((commit "b3c885d42cfac327d3531c9d064939514ce6bf12")
|
||||
(revision "1"))
|
||||
(let ((commit "c3cdeb0b53ac71aedabee669f57d44563c662446")
|
||||
(revision "2"))
|
||||
(package
|
||||
(inherit (@ (gnu packages guile-xyz) guile-newt))
|
||||
(name "guile-newt")
|
||||
|
@ -309,7 +315,7 @@ selected keymap."
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"02p0bi6c05699idgx6gfkljhqgi8zf09clhzx81i8wa064s70r1y")))))))
|
||||
"1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09")))))))
|
||||
|
||||
(define (installer-program)
|
||||
"Return a file-like object that runs the given INSTALLER."
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -21,6 +21,7 @@
|
|||
#:use-module (gnu installer utils)
|
||||
#:use-module (gnu installer newt ethernet)
|
||||
#:use-module (gnu installer newt final)
|
||||
#:use-module (gnu installer newt help)
|
||||
#:use-module (gnu installer newt hostname)
|
||||
#:use-module (gnu installer newt keymap)
|
||||
#:use-module (gnu installer newt locale)
|
||||
|
@ -44,7 +45,9 @@
|
|||
(define (init)
|
||||
(newt-init)
|
||||
(clear-screen)
|
||||
(set-screen-size!))
|
||||
(set-screen-size!)
|
||||
(push-help-line
|
||||
(format #f (G_ "Press <F1> for help."))))
|
||||
|
||||
(define (exit)
|
||||
(newt-finish)
|
||||
|
@ -91,8 +94,8 @@ problem. The backtrace is displayed below. Please report it by email to \
|
|||
(define (menu-page steps)
|
||||
(run-menu-page steps))
|
||||
|
||||
(define* (keymap-page layouts)
|
||||
(run-keymap-page layouts))
|
||||
(define* (keymap-page layouts context)
|
||||
(run-keymap-page layouts #:context context))
|
||||
|
||||
(define (network-page)
|
||||
(run-network-page))
|
||||
|
@ -109,6 +112,12 @@ problem. The backtrace is displayed below. Please report it by email to \
|
|||
(define (services-page)
|
||||
(run-services-page))
|
||||
|
||||
(define (help-menu menu-proc)
|
||||
(newt-set-help-callback menu-proc))
|
||||
|
||||
(define (help-page keyboard-layout-selection)
|
||||
(run-help-page keyboard-layout-selection))
|
||||
|
||||
(define newt-installer
|
||||
(installer
|
||||
(name 'newt)
|
||||
|
@ -125,4 +134,6 @@ problem. The backtrace is displayed below. Please report it by email to \
|
|||
(user-page user-page)
|
||||
(partition-page partition-page)
|
||||
(services-page services-page)
|
||||
(welcome-page welcome-page)))
|
||||
(welcome-page welcome-page)
|
||||
(help-menu help-menu)
|
||||
(help-page help-page)))
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu installer newt help)
|
||||
#:use-module (gnu installer steps)
|
||||
#:use-module (gnu installer newt page)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (newt)
|
||||
#:export (run-help-page))
|
||||
|
||||
(define (run-help-page keyboard-layout-selection)
|
||||
"Run a help page allowing to change the keyboard layout"
|
||||
(let* ((items
|
||||
(list
|
||||
(cons (G_ "Change keyboard layout") keyboard-layout-selection)))
|
||||
(result
|
||||
(run-listbox-selection-page
|
||||
#:info-text (G_ "This is the help menu, please choose an action.")
|
||||
#:title (G_ "Installation help")
|
||||
#:listbox-items items
|
||||
#:listbox-item->text car
|
||||
#:sort-listbox-items? #f
|
||||
#:button-text (G_ "Continue"))))
|
||||
(match result
|
||||
((_ . proc)
|
||||
(proc))
|
||||
(_ #f))))
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -33,20 +33,32 @@
|
|||
#:export (run-keymap-page
|
||||
keyboard-layout->configuration))
|
||||
|
||||
(define (run-layout-page layouts layout->text)
|
||||
(define (run-layout-page layouts layout->text context)
|
||||
(let ((title (G_ "Layout")))
|
||||
(run-listbox-selection-page
|
||||
#:title title
|
||||
#:info-text (G_ "Please choose your keyboard layout.")
|
||||
#:info-text
|
||||
(case context
|
||||
((help) (G_ "Please choose your keyboard layout. \
|
||||
It will only be used during the installation process."))
|
||||
(else (G_ "Please choose your keyboard layout. \
|
||||
It will be used during the install process, and for the installed system. \
|
||||
You can switch to different layout at any time from the help menu.")))
|
||||
#:listbox-items layouts
|
||||
#:listbox-item->text layout->text
|
||||
#:sort-listbox-items? #f
|
||||
#:button-text (G_ "Exit")
|
||||
#:button-text
|
||||
(case context
|
||||
((help) (G_ "Continue"))
|
||||
(else (G_ "Exit")))
|
||||
#:button-callback-procedure
|
||||
(lambda _
|
||||
(raise
|
||||
(condition
|
||||
(&installer-step-abort)))))))
|
||||
(case context
|
||||
((help) (const #t))
|
||||
(else
|
||||
(lambda _
|
||||
(raise
|
||||
(condition
|
||||
(&installer-step-abort)))))))))
|
||||
|
||||
(define (run-variant-page variants variant->text)
|
||||
(let ((title (G_ "Variant")))
|
||||
|
@ -100,7 +112,7 @@
|
|||
variants))
|
||||
(cut append <> <>)))
|
||||
|
||||
(define* (run-keymap-page layouts)
|
||||
(define* (run-keymap-page layouts #:key (context #f))
|
||||
"Run a page asking the user to select a keyboard layout and variant. LAYOUTS
|
||||
is a list of supported X11-KEYMAP-LAYOUT. Return a list of two elements, the
|
||||
names of the selected keyboard layout and variant."
|
||||
|
@ -114,7 +126,8 @@ names of the selected keyboard layout and variant."
|
|||
(sort-layouts layouts)
|
||||
(lambda (layout)
|
||||
(gettext (x11-keymap-layout-description layout)
|
||||
"xkeyboard-config"))))))
|
||||
"xkeyboard-config"))
|
||||
context))))
|
||||
;; Propose the user to select a variant among those supported by the
|
||||
;; previously selected layout.
|
||||
(installer-step
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -37,7 +37,9 @@
|
|||
installer-user-page
|
||||
installer-partition-page
|
||||
installer-services-page
|
||||
installer-welcome-page))
|
||||
installer-welcome-page
|
||||
installer-help-menu
|
||||
installer-help-page))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -61,7 +63,7 @@
|
|||
(exit-error installer-exit-error)
|
||||
;; procedure void -> void
|
||||
(final-page installer-final-page)
|
||||
;; procedure (layouts) -> (list layout variant)
|
||||
;; procedure (layouts context) -> (list layout variant)
|
||||
(keymap-page installer-keymap-page)
|
||||
;; procedure: (#:key supported-locales iso639-languages iso3166-territories)
|
||||
;; -> glibc-locale
|
||||
|
@ -81,4 +83,8 @@
|
|||
;; procedure void -> void
|
||||
(services-page installer-services-page)
|
||||
;; procedure (logo) -> void
|
||||
(welcome-page installer-welcome-page))
|
||||
(welcome-page installer-welcome-page)
|
||||
;; procedure (menu-proc) -> void
|
||||
(help-menu installer-help-menu)
|
||||
;; procedure (keyboard-layout-selection) -> void
|
||||
(help-page installer-help-page))
|
||||
|
|
|
@ -671,6 +671,7 @@ INSTALLER_MODULES = \
|
|||
\
|
||||
%D%/installer/newt/ethernet.scm \
|
||||
%D%/installer/newt/final.scm \
|
||||
%D%/installer/newt/help.scm \
|
||||
%D%/installer/newt/hostname.scm \
|
||||
%D%/installer/newt/keymap.scm \
|
||||
%D%/installer/newt/locale.scm \
|
||||
|
|
|
@ -16,6 +16,7 @@ gnu/installer/locale.scm
|
|||
gnu/installer/newt.scm
|
||||
gnu/installer/newt/ethernet.scm
|
||||
gnu/installer/newt/final.scm
|
||||
gnu/installer/newt/help.scm
|
||||
gnu/installer/newt/hostname.scm
|
||||
gnu/installer/newt/keymap.scm
|
||||
gnu/installer/newt/locale.scm
|
||||
|
|
Reference in New Issue