[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/01: installer: form-enter: Return whether event was handled.
From: |
Danny Milosavljevic |
Subject: |
01/01: installer: form-enter: Return whether event was handled. |
Date: |
Wed, 5 Jul 2017 04:32:45 -0400 (EDT) |
dannym pushed a commit to branch wip-installer-2
in repository guix.
commit f0cc147d3bcbb20098059c3f1737069b4ac62086
Author: Danny Milosavljevic <address@hidden>
Date: Wed Jul 5 10:31:59 2017 +0200
installer: form-enter: Return whether event was handled.
* gurses/form.scm (form-enter): Modify.
---
gurses/form.scm | 177 ++++++++++++++++++++++++++++----------------------------
1 file changed, 88 insertions(+), 89 deletions(-)
diff --git a/gurses/form.scm b/gurses/form.scm
index f77e218..8748896 100644
--- a/gurses/form.scm
+++ b/gurses/form.scm
@@ -162,95 +162,94 @@ label eq? to N"
(value (field-value f))
(len (string-length value))
(pos (field-cursor-position f))
- (left (substring value 0 (min pos len)))
- (centre (substring value pos (min (1+ pos) len)))
- (right (substring value (min (1+ pos) len) len)))
-
- (cond ((and (char? ch)
- (not (char-set-contains? char-set:iso-control ch)))
-
- (field-set-value! f (string-join
- (list left right)
- (make-string 1 ch)))
-
- (field-set-cursor-position! f (1+ pos))
- (addch (form-window form) (inverse ch))
- 'handled)
-
- ((eq? ch KEY_DC)
- (field-set-value! f (string-append left right))
- (redraw-current-field form f)
- (form-update-cursor form)
- 'handled)
-
- ((eq? ch #\ack) ; Ctrl-F
- (when (< pos len)
- (field-set-cursor-position! f (1+ pos))
- (redraw-current-field form f)
- (form-update-cursor form))
- 'handled)
-
- ((eq? ch #\stx) ; Ctrl-B
- (when (positive? pos)
- (field-set-cursor-position! f (1- pos))
- (redraw-current-field form f)
- (form-update-cursor form))
- 'handled)
-
- ((eq? ch KEY_BACKSPACE)
- (when (positive? pos)
- (field-set-value! f (string-append
- (string-drop-right left 1) centre
right))
- (field-set-cursor-position! f (1- pos))
- (redraw-current-field form f)
- (form-update-cursor form))
- 'handled)
-
- ((eq? ch #\vtab)
- ;; Delete to end of line
- (field-set-value! f (substring value
- 0 pos))
- (redraw-current-field form f)
- 'handled)
-
- ((or (eq? ch KEY_DOWN)
- (eq? ch #\so)
- (eq? ch #\tab))
- (let ((status (form-next-field form)))
- (cursor-move form f 0)
- status))
-
- ((or (eq? ch KEY_UP)
- (eq? ch #\dle))
- (let ((status (form-previous-field form)))
- (cursor-move form f 0)
- status))
-
- ((eq? ch KEY_RIGHT)
- (if (< pos len)
- (cursor-move form f (1+ pos)))
- 'handled)
-
- ((eq? ch KEY_LEFT)
- (if (positive? pos)
- (cursor-move form f (1- pos)))
- 'handled)
-
- ((eq? ch #\soh) ; Ctrl-A
- ;; Move to start of field
- (cursor-move form f 0)
- 'handled)
-
- ((eq? ch #\enq) ; Ctrl-E
- ;; Move to end of field
- (cursor-move form f len)
- 'handled)
- )
- (when (form-callback form)
- ((form-callback form) form))
-
- (refresh (form-window form))
- 'handled)
+ (left (substring value 0 (min pos len)))
+ (centre (substring value pos (min (1+ pos) len)))
+ (right (substring value (min (1+ pos) len) len))
+ (status (cond
+ ((and (char? ch)
+ (not (char-set-contains? char-set:iso-control ch)))
+
+ (field-set-value! f (string-join (list left right)
+ (make-string 1 ch)))
+
+ (field-set-cursor-position! f (1+ pos))
+ (addch (form-window form) (inverse ch))
+ 'handled)
+
+ ((eq? ch KEY_DC)
+ (field-set-value! f (string-append left right))
+ (redraw-current-field form f)
+ (form-update-cursor form)
+ 'handled)
+
+ ((eq? ch #\ack) ; Ctrl-F
+ (when (< pos len)
+ (field-set-cursor-position! f (1+ pos))
+ (redraw-current-field form f)
+ (form-update-cursor form))
+ 'handled)
+
+ ((eq? ch #\stx) ; Ctrl-B
+ (when (positive? pos)
+ (field-set-cursor-position! f (1- pos))
+ (redraw-current-field form f)
+ (form-update-cursor form))
+ 'handled)
+
+ ((eq? ch KEY_BACKSPACE)
+ (when (positive? pos)
+ (field-set-value! f (string-append
+ (string-drop-right left 1)
+ centre right))
+ (field-set-cursor-position! f (1- pos))
+ (redraw-current-field form f)
+ (form-update-cursor form))
+ 'handled)
+
+ ((eq? ch #\vtab)
+ ;; Delete to end of line
+ (field-set-value! f (substring value 0 pos))
+ (redraw-current-field form f)
+ 'handled)
+
+ ((or (eq? ch KEY_DOWN)
+ (eq? ch #\so)
+ (eq? ch #\tab))
+ (let ((status (form-next-field form)))
+ (cursor-move form f 0)
+ 'handled))
+
+ ((or (eq? ch KEY_UP)
+ (eq? ch #\dle))
+ (let ((status (form-previous-field form)))
+ (cursor-move form f 0)
+ status))
+
+ ((eq? ch KEY_RIGHT)
+ (if (< pos len)
+ (cursor-move form f (1+ pos)))
+ 'handled)
+
+ ((eq? ch KEY_LEFT)
+ (if (positive? pos)
+ (cursor-move form f (1- pos)))
+ 'handled)
+
+ ((eq? ch #\soh) ; Ctrl-A
+ ;; Move to start of field
+ (cursor-move form f 0)
+ 'handled)
+
+ ((eq? ch #\enq) ; Ctrl-E
+ ;; Move to end of field
+ (cursor-move form f len)
+ 'handled)
+ (else 'ignored))))
+ (when (form-callback form)
+ ((form-callback form) form))
+
+ (refresh (form-window form))
+ status)
'ignored))
(define (ensure-panel! win)