get-selection-as-text/ref for user-info records
part of darcs patch Fri Sep 16 23:55:48 EEST 2005 Martin Gasbichler <gasbichl@informatik.uni-tuebingen.de>
This commit is contained in:
parent
fa5a08ace7
commit
f87a5adf01
|
@ -257,13 +257,67 @@
|
||||||
self))))
|
self))))
|
||||||
(else
|
(else
|
||||||
(error "unknown message in make-group-info-browser" message))))))
|
(error "unknown message in make-group-info-browser" message))))))
|
||||||
|
|
||||||
|
(define (value->string val)
|
||||||
|
(cond ((string? val) val)
|
||||||
|
((number? val) (number->string val))
|
||||||
|
((boolean? val) (if val "#t" "#f"))
|
||||||
|
(else
|
||||||
|
(error "unknwon value in value->string" val))))
|
||||||
|
|
||||||
(define (make-user-info-browser ui buffer)
|
(define (make-user-info-browser ui buffer)
|
||||||
(let ((ui ui)
|
(let ((ui ui)
|
||||||
(buffer buffer)
|
(buffer buffer)
|
||||||
(selection-list
|
(selection-list
|
||||||
(make-ui-select-list ui (result-buffer-num-lines buffer))))
|
(make-ui-select-list ui (result-buffer-num-lines buffer))))
|
||||||
|
|
||||||
|
(define (user-info-element->value info)
|
||||||
|
(case info
|
||||||
|
((gid)
|
||||||
|
(user-info:gid ui))
|
||||||
|
((uid)
|
||||||
|
(user-info:uid ui))
|
||||||
|
((home-dir)
|
||||||
|
(user-info:home-dir ui))
|
||||||
|
((shell)
|
||||||
|
(user-info:shell ui))
|
||||||
|
(else ;user name
|
||||||
|
info)))
|
||||||
|
|
||||||
|
(define (prepare-selection-for-command-mode infos)
|
||||||
|
(string-join
|
||||||
|
(map value->string
|
||||||
|
(map user-info-element->value infos))))
|
||||||
|
|
||||||
|
(define (prepare-selection-for-scheme-mode infos)
|
||||||
|
(string-append
|
||||||
|
"'"
|
||||||
|
(exp->string
|
||||||
|
(map user-info-element->value infos))))
|
||||||
|
|
||||||
|
(define (get-selection-as-text self for-scheme-mode?
|
||||||
|
focus-object-table)
|
||||||
|
(let ((infos
|
||||||
|
(select-list-get-selection selection-list)))
|
||||||
|
((if for-scheme-mode?
|
||||||
|
prepare-selection-for-scheme-mode
|
||||||
|
prepare-selection-for-command-mode)
|
||||||
|
infos)))
|
||||||
|
|
||||||
|
(define (get-selection-as-ref self focus-object-table)
|
||||||
|
(let ((infos
|
||||||
|
(select-list-get-selection selection-list))
|
||||||
|
(make-reference (lambda (obj)
|
||||||
|
(make-focus-object-reference
|
||||||
|
focus-object-table obj))))
|
||||||
|
(string-append
|
||||||
|
"(list "
|
||||||
|
(string-join
|
||||||
|
(map exp->string
|
||||||
|
(map make-reference
|
||||||
|
(map user-info-element->value infos))))
|
||||||
|
")")))
|
||||||
|
|
||||||
(lambda (message)
|
(lambda (message)
|
||||||
(case message
|
(case message
|
||||||
((paint)
|
((paint)
|
||||||
|
@ -278,6 +332,8 @@
|
||||||
(case selected
|
(case selected
|
||||||
((gid)
|
((gid)
|
||||||
(make-group-info-browser (group-info (user-info:gid ui)) buffer))
|
(make-group-info-browser (group-info (user-info:gid ui)) buffer))
|
||||||
|
((uid)
|
||||||
|
self)
|
||||||
((home-dir)
|
((home-dir)
|
||||||
(make-browser-for-dir (user-info:home-dir ui) buffer))
|
(make-browser-for-dir (user-info:home-dir ui) buffer))
|
||||||
((shell)
|
((shell)
|
||||||
|
@ -290,6 +346,10 @@
|
||||||
(select-list-handle-key-press
|
(select-list-handle-key-press
|
||||||
selection-list key))
|
selection-list key))
|
||||||
self))))
|
self))))
|
||||||
|
((get-selection-as-text)
|
||||||
|
get-selection-as-text)
|
||||||
|
((get-selection-as-ref)
|
||||||
|
get-selection-as-ref)
|
||||||
(else
|
(else
|
||||||
(error "unknown message in make-user-info-browser" message))))))
|
(error "unknown message in make-user-info-browser" message))))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue