split result window into result-window and result-frame-window
This commit is contained in:
		
							parent
							
								
									214a66021f
								
							
						
					
					
						commit
						1e8cb9369c
					
				| 
						 | 
				
			
			@ -29,9 +29,12 @@
 | 
			
		|||
 | 
			
		||||
(define bar-1 #f)
 | 
			
		||||
(define bar-2 #f)
 | 
			
		||||
 | 
			
		||||
(define command-frame-window #f)
 | 
			
		||||
(define command-window #f)
 | 
			
		||||
 | 
			
		||||
(define result-window #f)
 | 
			
		||||
(define result-frame-window #f)
 | 
			
		||||
 | 
			
		||||
(define shortcuts '("F1:Exit"
 | 
			
		||||
		    "F2:Repaint (after change of buffer size)"
 | 
			
		||||
| 
						 | 
				
			
			@ -278,16 +281,21 @@
 | 
			
		|||
	(paint)
 | 
			
		||||
	(loop (wait-for-input))))
 | 
			
		||||
 | 
			
		||||
     ((= ch 35)
 | 
			
		||||
      (error "Is this what you want?"))
 | 
			
		||||
 | 
			
		||||
     ;; forward in result history
 | 
			
		||||
     ((= ch key-npage)
 | 
			
		||||
      (history-forward)
 | 
			
		||||
      (paint-result-window)
 | 
			
		||||
      (refresh-result-window)
 | 
			
		||||
      (loop (wait-for-input)))
 | 
			
		||||
     
 | 
			
		||||
     ;; back in result history
 | 
			
		||||
     ((= ch key-ppage)
 | 
			
		||||
      (history-back)
 | 
			
		||||
      (paint-result-window)
 | 
			
		||||
      (refresh-result-window)
 | 
			
		||||
      (loop (wait-for-input)))
 | 
			
		||||
 | 
			
		||||
     ;;if lower window is active a message is sent.
 | 
			
		||||
| 
						 | 
				
			
			@ -304,11 +312,12 @@
 | 
			
		|||
						 97)))
 | 
			
		||||
		  (focus-result-buffer!)
 | 
			
		||||
		  (set! current-result-object (switch key-message))
 | 
			
		||||
		  (paint-result-window))
 | 
			
		||||
		  (paint-result-window)
 | 
			
		||||
		  (refresh-result-window))
 | 
			
		||||
		(begin
 | 
			
		||||
		  (focus-command-buffer!)
 | 
			
		||||
		  (paint-command-window-contents)
 | 
			
		||||
		  (set! command-buffer (move-cursor command-buffer))))
 | 
			
		||||
		  (move-cursor command-buffer)))
 | 
			
		||||
	    (set! c-x-pressed #f)
 | 
			
		||||
	    (loop (wait-for-input)))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -358,6 +367,7 @@
 | 
			
		|||
					       ch)))
 | 
			
		||||
		(set! current-result-object (switch key-message))
 | 
			
		||||
		(paint-result-window)
 | 
			
		||||
		(refresh-result-window)
 | 
			
		||||
		(loop (wait-for-input)))
 | 
			
		||||
	      
 | 
			
		||||
	      (cond
 | 
			
		||||
| 
						 | 
				
			
			@ -373,21 +383,21 @@
 | 
			
		|||
		   command-buffer
 | 
			
		||||
		   (- (length (buffer-text command-buffer)) 1))
 | 
			
		||||
		  (paint-result-window)
 | 
			
		||||
		  (refresh-result-window)
 | 
			
		||||
		  (paint-bar-2)
 | 
			
		||||
		  (paint-command-window-contents)
 | 
			
		||||
		  (set! command-buffer (move-cursor command-buffer))
 | 
			
		||||
		  (move-cursor command-buffer)
 | 
			
		||||
		  (refresh-command-window)
 | 
			
		||||
		  (loop (wait-for-input))))
 | 
			
		||||
	      
 | 
			
		||||
	       (else 
 | 
			
		||||
		(set! command-buffer (input command-buffer ch))
 | 
			
		||||
		(debug-message "loop after input " command-buffer)
 | 
			
		||||
		(input command-buffer ch)
 | 
			
		||||
		;(debug-message "loop after input " command-buffer)
 | 
			
		||||
		(werase (app-window-curses-win command-window))
 | 
			
		||||
		(set! command-buffer 
 | 
			
		||||
		      (print-command-buffer (app-window-curses-win command-window) 
 | 
			
		||||
					    command-buffer))
 | 
			
		||||
		(debug-message "loop after print-command-buffer " command-buffer)
 | 
			
		||||
		(set! command-buffer (move-cursor command-buffer))
 | 
			
		||||
		(print-command-buffer (app-window-curses-win command-window) 
 | 
			
		||||
				      command-buffer)
 | 
			
		||||
		;(debug-message "loop after print-command-buffer " command-buffer)
 | 
			
		||||
		(move-cursor command-buffer)
 | 
			
		||||
		(refresh-command-window)
 | 
			
		||||
		(loop (wait-for-input))))))))))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -397,6 +407,13 @@
 | 
			
		|||
   (newwin (app-window-height window) (app-window-width window)
 | 
			
		||||
	   (app-window-y window) (app-window-x window))))
 | 
			
		||||
 | 
			
		||||
(define (make-inlying-app-window outer-window)
 | 
			
		||||
  (make-app-window (+ (app-window-x outer-window) 1)
 | 
			
		||||
		   (+ (app-window-y outer-window) 1)
 | 
			
		||||
		   (- (app-window-width outer-window) 2)
 | 
			
		||||
		   (- (app-window-height outer-window) 2)
 | 
			
		||||
		   #f))
 | 
			
		||||
 | 
			
		||||
(define (init-windows!)
 | 
			
		||||
  (init-screen)
 | 
			
		||||
  (set! bar-1
 | 
			
		||||
| 
						 | 
				
			
			@ -411,32 +428,29 @@
 | 
			
		|||
	(make-app-window 1 2
 | 
			
		||||
			 (- (COLS) 2) (- (app-window-y bar-2) 2)
 | 
			
		||||
			 #f))
 | 
			
		||||
  (set! command-window
 | 
			
		||||
	(make-app-window (+ (app-window-x command-frame-window) 1)
 | 
			
		||||
			 (+ (app-window-y command-frame-window) 1)
 | 
			
		||||
			 (- (app-window-width command-frame-window) 2)
 | 
			
		||||
			 (- (app-window-height command-frame-window) 2)
 | 
			
		||||
			 #f))
 | 
			
		||||
  (set! result-window
 | 
			
		||||
  (set! command-window 
 | 
			
		||||
	(make-inlying-app-window command-frame-window))
 | 
			
		||||
  (set! result-frame-window
 | 
			
		||||
	(make-app-window 1 (+ (app-window-y bar-2) 3)
 | 
			
		||||
			 (- (COLS) 2)
 | 
			
		||||
			 (- (- (LINES) 6) (app-window-height command-frame-window))
 | 
			
		||||
			 #f))
 | 
			
		||||
  (window-init-curses-win! bar-1)
 | 
			
		||||
  (window-init-curses-win! bar-2)
 | 
			
		||||
  (window-init-curses-win! command-frame-window)
 | 
			
		||||
  (window-init-curses-win! command-window)
 | 
			
		||||
  (window-init-curses-win! result-window)
 | 
			
		||||
  (debug-message "init-windows!: bar-1 " bar-1 " bar-2 " bar-2
 | 
			
		||||
		 " command-frame-window " command-frame-window
 | 
			
		||||
		 " command-window " command-window
 | 
			
		||||
		 " result-window " result-window)
 | 
			
		||||
  (wclear (app-window-curses-win bar-1))
 | 
			
		||||
  (wclear (app-window-curses-win bar-2))
 | 
			
		||||
  (wclear (app-window-curses-win command-window))
 | 
			
		||||
  (wclear (app-window-curses-win command-frame-window))
 | 
			
		||||
  (wclear (app-window-curses-win result-window))
 | 
			
		||||
  (clear))
 | 
			
		||||
  (set! result-window
 | 
			
		||||
	(make-inlying-app-window result-frame-window))
 | 
			
		||||
 | 
			
		||||
  (let ((all-windows (list bar-1 bar-2 
 | 
			
		||||
			   command-frame-window command-window
 | 
			
		||||
			   result-frame-window result-window)))
 | 
			
		||||
    (for-each window-init-curses-win! all-windows)
 | 
			
		||||
  
 | 
			
		||||
    (debug-message "init-windows!: bar-1 " bar-1 " bar-2 " bar-2
 | 
			
		||||
		   " command-frame-window " command-frame-window
 | 
			
		||||
		   " command-window " command-window
 | 
			
		||||
		   " result-frame-window " result-frame-window
 | 
			
		||||
		   " result-window " result-window)
 | 
			
		||||
    (for-each wclear 
 | 
			
		||||
	      (map app-window-curses-win all-windows))
 | 
			
		||||
    (clear)))
 | 
			
		||||
 | 
			
		||||
(define (paint-bar-1)
 | 
			
		||||
  (mvwaddstr (app-window-curses-win bar-1) 0 1 "SCSH-NUIT")
 | 
			
		||||
| 
						 | 
				
			
			@ -458,20 +472,26 @@
 | 
			
		|||
  (set-buffer-num-cols! command-buffer
 | 
			
		||||
 			(- (app-window-width command-window) 3))
 | 
			
		||||
  (werase (app-window-curses-win command-window))
 | 
			
		||||
  (set! command-buffer 
 | 
			
		||||
	(print-command-buffer (app-window-curses-win command-window)
 | 
			
		||||
			      command-buffer)))
 | 
			
		||||
  (print-command-buffer (app-window-curses-win command-window)
 | 
			
		||||
			command-buffer))
 | 
			
		||||
 | 
			
		||||
(define (refresh-command-window)
 | 
			
		||||
  (wrefresh (app-window-curses-win command-window)))
 | 
			
		||||
 | 
			
		||||
(define (paint-result-frame-window)
 | 
			
		||||
  (let ((win (app-window-curses-win result-frame-window)))
 | 
			
		||||
    (wclear win)
 | 
			
		||||
    (box win (ascii->char 0) (ascii->char 0))
 | 
			
		||||
    ;;; EK: wtf is going on here?
 | 
			
		||||
    (set! result-lines (- (app-window-height result-window) 2))
 | 
			
		||||
    (set! result-cols (- (app-window-width result-window) 3))
 | 
			
		||||
    (wrefresh win)))
 | 
			
		||||
 | 
			
		||||
(define (paint-result-window)
 | 
			
		||||
  (wclear (app-window-curses-win result-window))
 | 
			
		||||
  (box (app-window-curses-win result-window) 
 | 
			
		||||
       (ascii->char 0) (ascii->char 0))
 | 
			
		||||
  (set! result-lines (- (app-window-height result-window) 2))
 | 
			
		||||
  (set! result-cols (- (app-window-width result-window) 3))
 | 
			
		||||
  (print-result-buffer result-window)
 | 
			
		||||
  (print-result-buffer))
 | 
			
		||||
 | 
			
		||||
(define (refresh-result-window)
 | 
			
		||||
  (wrefresh (app-window-curses-win result-window)))
 | 
			
		||||
 | 
			
		||||
(define (paint)
 | 
			
		||||
| 
						 | 
				
			
			@ -480,9 +500,11 @@
 | 
			
		|||
  (paint-bar-2)
 | 
			
		||||
  (paint-command-frame-window)
 | 
			
		||||
  (paint-command-window-contents)
 | 
			
		||||
  (paint-result-frame-window)
 | 
			
		||||
  (paint-result-window)
 | 
			
		||||
  (move-cursor command-buffer)
 | 
			
		||||
  (refresh-command-window))
 | 
			
		||||
  (refresh-command-window)
 | 
			
		||||
  (refresh-result-window))
 | 
			
		||||
 | 
			
		||||
(define (wait-for-input)
 | 
			
		||||
  (noecho)
 | 
			
		||||
| 
						 | 
				
			
			@ -701,7 +723,7 @@
 | 
			
		|||
	      (wrefresh win))))))
 | 
			
		||||
 | 
			
		||||
;;print the lower window
 | 
			
		||||
(define (print-result-buffer result-window)
 | 
			
		||||
(define (print-result-buffer)
 | 
			
		||||
  (let* ((window (app-window-curses-win result-window))
 | 
			
		||||
	 (print-message (make-print-message active-command 
 | 
			
		||||
					    current-result-object
 | 
			
		||||
| 
						 | 
				
			
			@ -746,18 +768,18 @@
 | 
			
		|||
		      (wattron window (A-REVERSE))
 | 
			
		||||
		      (mvwaddstr window pos 1 line)
 | 
			
		||||
		      (wattrset window (A-NORMAL))
 | 
			
		||||
		      (wrefresh window)
 | 
			
		||||
		      ;(wrefresh window)
 | 
			
		||||
		      (loop (+ pos 1)))
 | 
			
		||||
		    (if (member pos marked-lines)
 | 
			
		||||
			(begin
 | 
			
		||||
			  (wattron window (A-BOLD))
 | 
			
		||||
			  (mvwaddstr window pos 1 line)
 | 
			
		||||
			  (wattrset window (A-NORMAL))
 | 
			
		||||
			  (wrefresh window)
 | 
			
		||||
			  ;(wrefresh window)
 | 
			
		||||
			  (loop (+ pos 1)))
 | 
			
		||||
			(begin
 | 
			
		||||
			  (mvwaddstr window pos 1 line)
 | 
			
		||||
			  (wrefresh window)
 | 
			
		||||
			  ;(wrefresh window)
 | 
			
		||||
			  (loop (+ pos 1))))))))))))
 | 
			
		||||
  
 | 
			
		||||
;;visible lines
 | 
			
		||||
| 
						 | 
				
			
			@ -798,7 +820,6 @@
 | 
			
		|||
;;Cursor
 | 
			
		||||
;;move cursor to the corrct position
 | 
			
		||||
(define (move-cursor buffer)
 | 
			
		||||
  (debug-message "move-cursor " buffer)
 | 
			
		||||
  (if (focus-on-command-buffer?)
 | 
			
		||||
      (cursor-right-pos (app-window-curses-win command-window) 
 | 
			
		||||
			buffer)
 | 
			
		||||
| 
						 | 
				
			
			@ -821,8 +842,7 @@
 | 
			
		|||
			       (buffer-pos-fin-ln command-buffer)))
 | 
			
		||||
	(let ((posx (modulo (buffer-pos-col command-buffer)
 | 
			
		||||
			    (buffer-num-cols command-buffer))))
 | 
			
		||||
	  (set-buffer-pos-x! command-buffer posx))
 | 
			
		||||
	(debug-message "compute-y-x " command-buffer))
 | 
			
		||||
	  (set-buffer-pos-x! command-buffer posx)))
 | 
			
		||||
      (begin
 | 
			
		||||
	(if (>= pos-result result-lines)
 | 
			
		||||
	    (set! result-buffer-pos-y result-lines)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue