installer: Skip network selection dialogs when there is no choice.

Previously, for a machine that only has wired networking, and only one
such network, we'd have to go through two selection boxes.  Now we just
skip both.

* gnu/installer/newt/ethernet.scm (run-ethernet-page): When
'ethernet-services' returns one element, return it directly without
opening a listbox selection.
* gnu/installer/newt/network.scm (run-technology-page): Likewise.
This commit is contained in:
Ludovic Courtès 2019-05-06 22:23:42 +02:00
parent d1e5f758e1
commit 46c102ca5e
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 59 additions and 47 deletions

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,6 +24,7 @@
#:use-module (gnu installer newt page)
#:use-module (guix i18n)
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (newt)
@ -58,25 +60,28 @@ connection is pending."
service))
(define (run-ethernet-page)
(let ((services (ethernet-services)))
(if (null? services)
(begin
(run-error-page
(G_ "No ethernet service available, please try again.")
(G_ "No service"))
(raise
(condition
(&installer-step-abort))))
(run-listbox-selection-page
#:info-text (G_ "Please select an ethernet network.")
#:title (G_ "Ethernet connection")
#:listbox-items services
#:listbox-item->text ethernet-service->text
#:listbox-height (min (+ (length services) 2) 10)
#:button-text (G_ "Exit")
#:button-callback-procedure
(lambda _
(raise
(condition
(&installer-step-abort))))
#:listbox-callback-procedure connect-ethernet-service))))
(match (ethernet-services)
(()
(run-error-page
(G_ "No ethernet service available, please try again.")
(G_ "No service"))
(raise
(condition
(&installer-step-abort))))
((service)
;; Only one service is available so return it directly.
service)
((services ...)
(run-listbox-selection-page
#:info-text (G_ "Please select an ethernet network.")
#:title (G_ "Ethernet connection")
#:listbox-items services
#:listbox-item->text ethernet-service->text
#:listbox-height (min (+ (length services) 2) 10)
#:button-text (G_ "Exit")
#:button-callback-procedure
(lambda _
(raise
(condition
(&installer-step-abort))))
#:listbox-callback-procedure connect-ethernet-service))))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -28,6 +29,7 @@
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (ice-9 match)
#:use-module (newt)
#:export (run-network-page))
@ -53,33 +55,38 @@ Internet and return the selected technology. For now, only technologies with
(string=? type "wifi"))))
(connman-technologies)))
(let ((items (technology-items)))
(if (null? items)
(case (choice-window
(G_ "Internet access")
(G_ "Continue")
(G_ "Exit")
(G_ "The install process requires Internet access but no \
(match (technology-items)
(()
(case (choice-window
(G_ "Internet access")
(G_ "Continue")
(G_ "Exit")
(G_ "The install process requires Internet access but no \
network device were found. Do you want to continue anyway?"))
((1) (raise
(condition
(&installer-step-break))))
((2) (raise
(condition
(&installer-step-abort)))))
(run-listbox-selection-page
#:info-text (G_ "The install process requires Internet access.\
((1) (raise
(condition
(&installer-step-break))))
((2) (raise
(condition
(&installer-step-abort))))))
((technology)
;; Since there's only one technology available, skip the selection
;; screen.
technology)
((items ...)
(run-listbox-selection-page
#:info-text (G_ "The install process requires Internet access.\
Please select a network device.")
#:title (G_ "Internet access")
#:listbox-items items
#:listbox-item->text technology->text
#:listbox-height (min (+ (length items) 2) 10)
#:button-text (G_ "Exit")
#:button-callback-procedure
(lambda _
(raise
(condition
(&installer-step-abort))))))))
#:title (G_ "Internet access")
#:listbox-items items
#:listbox-item->text technology->text
#:listbox-height (min (+ (length items) 2) 10)
#:button-text (G_ "Exit")
#:button-callback-procedure
(lambda _
(raise
(condition
(&installer-step-abort))))))))
(define (find-technology-by-type technologies type)
"Find and return a technology with the given TYPE in TECHNOLOGIES list."