12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- (define-module (gnu installer newt ethernet)
- #:use-module (gnu installer connman)
- #:use-module (gnu installer steps)
- #:use-module (gnu installer newt utils)
- #: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)
- #:export (run-ethernet-page))
- (define (ethernet-services)
- "Return all the connman services of ethernet type."
- (let ((services (connman-services)))
- (filter (lambda (service)
- (and (string=? (service-type service) "ethernet")
- (not (string-null? (service-name service)))))
- services)))
- (define (ethernet-service->text service)
- "Return a string describing the given ethernet SERVICE."
- (let* ((name (service-name service))
- (path (service-path service))
- (full-name (string-append name "-" path))
- (state (service-state service))
- (connected? (or (string=? state "online")
- (string=? state "ready"))))
- (format #f "~c ~a~%"
- (if connected? #\* #\ )
- full-name)))
- (define (connect-ethernet-service service)
- "Connect to the given ethernet SERVICE. Display a connecting page while the
- connection is pending."
- (let* ((service-name (service-name service))
- (form (draw-connecting-page service-name)))
- (connman-connect service)
- (destroy-form-and-pop form)
- service))
- (define (run-ethernet-page)
- (match (ethernet-services)
- (()
- (run-error-page
- (G_ "No ethernet service available, please try again.")
- (G_ "No service"))
- (raise
- (condition
- (&installer-step-abort))))
- ((service)
-
- 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) 5)
- #:button-text (G_ "Exit")
- #:button-callback-procedure
- (lambda _
- (raise
- (condition
- (&installer-step-abort))))
- #:listbox-callback-procedure connect-ethernet-service))))
|