Selection-ref for id-output, change semantics of select-list-get-selection, introduce select-list-get-marked
part of darcs patch Fri Sep 16 12:23:43 EEST 2005 Martin Gasbichler <gasbichl@informatik.uni-tuebingen.de>
This commit is contained in:
		
							parent
							
								
									4fce440abc
								
							
						
					
					
						commit
						c46282f826
					
				| 
						 | 
				
			
			@ -205,7 +205,7 @@
 | 
			
		|||
	(string-join file-names))
 | 
			
		||||
 | 
			
		||||
      (define (get-selection-as-text self for-scheme-mode? focus-object-table)
 | 
			
		||||
	(let* ((marked (select-list-get-selection select-list))
 | 
			
		||||
	(let* ((marked (select-list-get-marked select-list))
 | 
			
		||||
	       (file-names
 | 
			
		||||
		(map fs-object-complete-path
 | 
			
		||||
		     (if (null? marked)
 | 
			
		||||
| 
						 | 
				
			
			@ -217,7 +217,7 @@
 | 
			
		|||
	   file-names)))
 | 
			
		||||
 | 
			
		||||
      (define (get-selection-as-ref self focus-object-table)
 | 
			
		||||
	(let ((marked (select-list-get-selection select-list))
 | 
			
		||||
	(let ((marked (select-list-get-marked select-list))
 | 
			
		||||
	      (make-reference (lambda (obj)
 | 
			
		||||
				(make-focus-object-reference 
 | 
			
		||||
				 focus-object-table obj))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,7 +153,7 @@
 | 
			
		|||
                   val)))))
 | 
			
		||||
 | 
			
		||||
    (define (get-selection-as-ref self focus-object-table)
 | 
			
		||||
      (let ((marked (select-list-get-selection selection-list))
 | 
			
		||||
      (let ((marked (select-list-get-marked selection-list))
 | 
			
		||||
            (make-reference (lambda (obj)
 | 
			
		||||
                              (make-focus-object-reference 
 | 
			
		||||
                               focus-object-table obj))))
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +167,7 @@
 | 
			
		|||
 | 
			
		||||
    (define (get-selection-as-text self for-scheme-mode? focus-object-table)
 | 
			
		||||
      (if for-scheme-mode?
 | 
			
		||||
          (let ((marked (select-list-get-selection selection-list)))
 | 
			
		||||
          (let ((marked (select-list-get-marked selection-list)))
 | 
			
		||||
            (prepare-selection-for-scheme-mode marked))
 | 
			
		||||
          ""))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,7 +78,7 @@
 | 
			
		|||
    (define (get-selection-as-text self for-scheme-mode? focus-object-table)
 | 
			
		||||
      (if for-scheme-mode?
 | 
			
		||||
	  (send self 'get-selection-as-ref focus-object-table)
 | 
			
		||||
	  (let ((marked (select-list-get-selection select-list)))
 | 
			
		||||
	  (let ((marked (select-list-get-marked select-list)))
 | 
			
		||||
	    (if (null? marked)
 | 
			
		||||
		(number->string 
 | 
			
		||||
		 (proc:pid (job-proc (select-list-selected-entry select-list))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -154,6 +154,7 @@
 | 
			
		|||
  (open scheme-with-scsh
 | 
			
		||||
        define-record-types
 | 
			
		||||
        (subset primitives (record-ref record?))
 | 
			
		||||
        (subset srfi-13 (string-join))
 | 
			
		||||
 | 
			
		||||
        dirlist-view-plugin
 | 
			
		||||
        fs-object
 | 
			
		||||
| 
						 | 
				
			
			@ -300,6 +301,7 @@
 | 
			
		|||
	  paint-selection-list
 | 
			
		||||
	  paint-selection-list-at
 | 
			
		||||
	  select-list-get-selection
 | 
			
		||||
          select-list-get-marked
 | 
			
		||||
	  select-list-selected-entry
 | 
			
		||||
 | 
			
		||||
	  select-list-navigation-key?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@
 | 
			
		|||
	(header (make-header-line (result-buffer-num-cols buffer))))
 | 
			
		||||
 | 
			
		||||
    (define (get-selection-as-text self for-scheme-mode? focus-object-table)
 | 
			
		||||
      (let* ((marked (select-list-get-selection select-list)))
 | 
			
		||||
      (let* ((marked (select-list-get-marked select-list)))
 | 
			
		||||
	(cond
 | 
			
		||||
	 ((null? marked)
 | 
			
		||||
	  (number->string 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,19 +165,31 @@
 | 
			
		|||
	(mvwaddstr win y x (element-text (car elts)))
 | 
			
		||||
	(lp (cdr elts) (+ y 1) (+ i 1)))))))
 | 
			
		||||
 | 
			
		||||
(define (select-list-get-selection select-list)
 | 
			
		||||
(define (select-list-get-marked select-list)
 | 
			
		||||
  (map element-value
 | 
			
		||||
       (filter element-marked? 
 | 
			
		||||
	       (select-list-elements select-list))))
 | 
			
		||||
 | 
			
		||||
(define (select-list-selected-entry select-list)
 | 
			
		||||
  (element-value
 | 
			
		||||
   (list-ref (select-list-elements select-list)
 | 
			
		||||
	     (select-list-cursor-index select-list))))
 | 
			
		||||
   (select-list-selected-element select-list)))
 | 
			
		||||
 | 
			
		||||
(define (select-list-selected-element select-list)
 | 
			
		||||
  (list-ref (select-list-elements select-list)
 | 
			
		||||
            (select-list-cursor-index select-list)))
 | 
			
		||||
 | 
			
		||||
(define (select-list-get-selection select-list)
 | 
			
		||||
  (let ((marked (select-list-get-marked select-list)))
 | 
			
		||||
    (if (null? marked)
 | 
			
		||||
        (let ((selected (select-list-selected-element select-list)))
 | 
			
		||||
          (if (element-markable? selected)
 | 
			
		||||
              (list (element-value selected))
 | 
			
		||||
              '()))
 | 
			
		||||
        marked)))
 | 
			
		||||
 | 
			
		||||
(define (make-get-selection-as-ref-method select-list)
 | 
			
		||||
  (lambda (self focus-object-table)
 | 
			
		||||
    (let ((marked (select-list-get-selection select-list))
 | 
			
		||||
    (let ((marked (select-list-get-marked select-list))
 | 
			
		||||
	  (make-reference (lambda (obj)
 | 
			
		||||
			    (make-focus-object-reference 
 | 
			
		||||
			     focus-object-table obj))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,7 +61,7 @@
 | 
			
		|||
(define (make-id-output-select-list ido num-lines)
 | 
			
		||||
  (make-select-list
 | 
			
		||||
   `(,(make-unmarked-element 
 | 
			
		||||
       (cons 'user 
 | 
			
		||||
       (cons 'uid 
 | 
			
		||||
             (string->number
 | 
			
		||||
              (id-output-uid ido)))
 | 
			
		||||
       #t
 | 
			
		||||
| 
						 | 
				
			
			@ -71,13 +71,13 @@
 | 
			
		|||
       #t
 | 
			
		||||
       (string-append "Name: " (id-output-name ido)))
 | 
			
		||||
     ,(make-unmarked-element 
 | 
			
		||||
       (cons 'group 
 | 
			
		||||
       (cons 'gid 
 | 
			
		||||
             (string->number
 | 
			
		||||
              (id-output-gid ido)))
 | 
			
		||||
       #t
 | 
			
		||||
       (string-append "GID: " (id-output-gid ido)))
 | 
			
		||||
     ,(make-unmarked-element 
 | 
			
		||||
       (cons 'group 
 | 
			
		||||
       (cons 'group
 | 
			
		||||
             (id-output-group ido))
 | 
			
		||||
       #t
 | 
			
		||||
       (string-append "GID: " (id-output-group ido)))
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@
 | 
			
		|||
                               (cdr group)
 | 
			
		||||
                               "")))
 | 
			
		||||
                (make-unmarked-element 
 | 
			
		||||
                 (cons 'group (string->number gid))
 | 
			
		||||
                 (cons 'gid (string->number gid))
 | 
			
		||||
                 #t
 | 
			
		||||
                 (string-append "  " gid " " gname))))
 | 
			
		||||
            (id-output-groups ido)))
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +106,29 @@
 | 
			
		|||
         (make-id-output-select-list 
 | 
			
		||||
          ido
 | 
			
		||||
          (result-buffer-num-lines buffer))))
 | 
			
		||||
    
 | 
			
		||||
    (define (prepare-selection-for-scheme-mode infos)
 | 
			
		||||
	(string-append "'" (exp->string (map cdr infos))))
 | 
			
		||||
 | 
			
		||||
    (define (prepare-selection-for-command-mode infos)
 | 
			
		||||
      (string-join
 | 
			
		||||
       (map (lambda (type.val)
 | 
			
		||||
              (case (car type.val)
 | 
			
		||||
                ((user group) (cdr type.val))
 | 
			
		||||
                ((uid gid) (number->string (cdr type.val)))
 | 
			
		||||
                (else
 | 
			
		||||
                 (error "unknown type in prepare-selection-for-command-mode"
 | 
			
		||||
                        type.val))))
 | 
			
		||||
            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)))
 | 
			
		||||
 | 
			
		||||
    (lambda (message)
 | 
			
		||||
      (case message
 | 
			
		||||
        ((paint)
 | 
			
		||||
| 
						 | 
				
			
			@ -123,16 +146,27 @@
 | 
			
		|||
                      (eq? (car selected) 'user))
 | 
			
		||||
                 (make-user-info-browser 
 | 
			
		||||
                  (user-info (cdr selected)) buffer))
 | 
			
		||||
                ((and (pair? selected)
 | 
			
		||||
                      (eq? (car selected) 'uid))
 | 
			
		||||
                 (make-user-info-browser 
 | 
			
		||||
                  (user-info (cdr selected)) buffer))
 | 
			
		||||
                ((and (pair? selected)
 | 
			
		||||
                      (eq? (car selected) 'group))
 | 
			
		||||
                 (make-group-info-browser 
 | 
			
		||||
                  (group-info (cdr selected)) buffer))
 | 
			
		||||
                ((and (pair? selected)
 | 
			
		||||
                      (eq? (car selected) 'gid))
 | 
			
		||||
                 (make-group-info-browser 
 | 
			
		||||
                  (group-info (cdr selected)) buffer))
 | 
			
		||||
                (else self))))
 | 
			
		||||
            (else
 | 
			
		||||
             (set! selection-list
 | 
			
		||||
                   (select-list-handle-key-press
 | 
			
		||||
                    selection-list key))
 | 
			
		||||
             self))))
 | 
			
		||||
        ((get-selection-as-text)
 | 
			
		||||
         get-selection-as-text)
 | 
			
		||||
           
 | 
			
		||||
        (else
 | 
			
		||||
         (error "unknown message in make-id-output-browser" 
 | 
			
		||||
                message))))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue