diff --git a/scheme/network-viewer.scm b/scheme/network-viewer.scm index e17172b..093df57 100644 --- a/scheme/network-viewer.scm +++ b/scheme/network-viewer.scm @@ -1,24 +1,68 @@ -(define (make-service-info-viewer service-info buffer) - (let ((service-info service-info) - (select-line (make-select-line - (list - (service-info:name service-info) - ;;(service-info:aliases service-info) - (number->string (service-info:port service-info)) - (service-info:protocol service-info))))) +(define (make-service-info-select-list si num-lines) + (make-select-list + (append + (list + (make-unmarked-text-element + (cons 'name (service-info:name si)) + #t + (format #f "Name: ~a" (service-info:name si))) + (make-unmarked-text-element + (cons 'port (service-info:port si)) + #t + (format #f "Port: ~a" (number->string + (service-info:port si)))) + (make-unmarked-text-element + (cons 'protocol + (service-info:protocol si)) + #t + (format #f "Protocol: ~a" (service-info:protocol si))) + (make-unmarked-text-element + (cons 'text "") #f "Aliases:")) + (map (lambda (alias) + (make-unmarked-text-element + (cons 'alias alias) #t + (format #f " ~a" alias))) + (service-info:aliases si))) + num-lines)) + +(define (make-service-info-viewer si buffer) + (let ((si si) + (select-list + (make-service-info-select-list + si (result-buffer-num-lines buffer)))) + + (define (prepare-selection-for-scheme-mode sel) + (format #f "(~a)" + (string-join + (map write-to-string (map cdr sel))))) + + (define (prepare-selection-for-command-mode sel) + (string-join (map display-to-string (map cdr sel)))) + + (define (get-selection-as-text self for-scheme-mode? focus-object-table) + (paste-selection (select-list-get-selection select-list) + (select-list-has-marks? select-list) + for-scheme-mode? + (lambda (se) + (write-to-string (cdr se))) + (lambda (se) + (display-to-string (cdr se))))) + (lambda (message) (case message ((paint) (lambda (self win buffer have-focus?) - (paint-select-line-at select-line 5 5 win))) + (paint-selection-list-at select-list 1 1 win + (result-buffer-num-cols buffer) + have-focus?))) ((key-press) (lambda (self key control-x-pressed?) - (select-line-handle-key-press! select-line key) + (set! select-list + (select-list-handle-key-press select-list key)) self)) - ((get-select-as-text) - (lambda (self for-scheme-mode? focus-object-table) - (select-line-selected-entry select-line))) + ((get-selection-as-text) + get-selection-as-text) ((get-selection-as-ref) "UII get-selection-as-ref") (else diff --git a/scheme/nuit-packages.scm b/scheme/nuit-packages.scm index 2f307b6..ad74e2d 100644 --- a/scheme/nuit-packages.scm +++ b/scheme/nuit-packages.scm @@ -248,7 +248,11 @@ (subset srfi-13 (string-join)) plugin - select-line) + layout + formats + utils + select-element + select-list) (files network-viewer)) ;;; terminal buffer