172 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
 | |
| 		Input-fields
 | |
| 		============
 | |
| 
 | |
| 1. Erstellen und installieren
 | |
| -----------------------------
 | |
| 
 | |
| (make-input-field x-dim y-dim) -> <input-field>
 | |
| 
 | |
| erstellt ein Input-field mit x-dim Spalten und y-dim Zeilen.
 | |
| Make-input-field können weitere optinale Parameter übergeben
 | |
| werden:
 | |
|  
 | |
| (make-input-field x-dim y-dim 
 | |
| 		  [default-text
 | |
| 		  [behavior
 | |
| 		  [insert-active
 | |
| 		  [x-scroll-enabled
 | |
| 		  [y-scroll-enabled]]]]])
 | |
| 
 | |
| default-text:	  ist ein String, der am Anfang und nach einem Reset (s.u.)
 | |
| 		  der Inhalt des Input-fields ist.
 | |
| 		  (Default: "")
 | |
| behavior:	  ist eine Liste von Paaren. Der car eines solchen Paares
 | |
| 		  ist die Nummer eines Zeichens oder einer Tastenkombination,
 | |
| 		  wie sie von wgetch (aus ncurses) zurückgegeben werden.
 | |
| 		  Der cdr des Paares ist ein Symbol, das eine Nachricht an ein
 | |
| 		  Input-field darstellt, so würde ein Input-field, das mit dem
 | |
| 		  Behvior 
 | |
| 		  (list (cons 27
 | |
| 			      'clear))
 | |
| 		  erzeugt worden ist beim drücken der ESC-Taste seinen Inhalt
 | |
| 		  löschen.Es stehen zwei Standardlisten zu Verfügung:
 | |
| 		  standard-behavior und standard-behavior-pro (s.u.).
 | |
| 		  (Default: standard-behavior)
 | |
| insert-active:    ist ein Boolean und gibt an ob das sich das Input-field am 
 | |
| 		  Anfang im Insert- oder im Overwrite-Modus befindet.
 | |
| 		  (Default: #t)
 | |
| x-scroll-enabled: ist ein Boolean und gibt an ob horizontales Scrollen
 | |
| 		  erlaubt ist.
 | |
| 		  (Default #f)
 | |
| y-scroll-enabled: ist ein Boolean und gibt an, ob vertikales Scrollen erlaubt ist.
 | |
| 		  (Default #f)		  
 | |
| 
 | |
| 
 | |
| 
 | |
| (install-input-field input-field
 | |
| 		     window 
 | |
| 		     x-loc y-loc)
 | |
| Ordnet das Input-field input-field dem (ncurses-)Fenter window zu und
 | |
| platziert es mit der linken oberen Ecke in der Spalte x-loc und der
 | |
| Zeile y-loc.
 | |
| Will man das Input-field später nicht direkt verwenden, sondern nur
 | |
| über cursor-over-input-field? (s.u.) so kann man es auch mittels
 | |
| make&install-input-field auf einmal erzeugen und installieren:
 | |
| 
 | |
| (make&install-input-field window 
 | |
| 			  x-loc y-loc
 | |
| 			  x-dim y-dim
 | |
| 			  [...])
 | |
| 
 | |
| 
 | |
| 2. Typpredikat und Feldselektoren
 | |
| ----------------------------------
 | |
| 
 | |
| Input-fields exportirt außerdem ein Typpredikat:
 | |
|   input-field?
 | |
| und die folgenden Selektoren
 | |
|   input-field-default-text: default-text
 | |
|   input-field-text:	    der aktuelle Inhalt des Input-fields
 | |
| 			    als String
 | |
|   input-field-x-location:   x-loc
 | |
|   input-field-y-location:   y-loc
 | |
|   input-field-x-size:	    x-dim
 | |
|   input-field-y-size:	    y-dim
 | |
|   input-field-x-scroll:	    x-scroll-enabled
 | |
|   input-field-y-scroll:	    y-scroll-enabled
 | |
|   input-field-line:	    die Zeile, in der der Cursor steht
 | |
|   input-field-column:	    die Spalte, in der der Cursor steht
 | |
|   input-field-insert:	    insert-active
 | |
| 
 | |
| 
 | |
| 3. Bahaviors
 | |
| ----------------------
 | |
| 
 | |
| standard-behavior führt die folgenden Bindungen ein:
 | |
| Pfeil-Hoch  : Cursor um eine Zeile nach oben bewegen.
 | |
| Pfeil-Runter: Cursor um eine Zeile nach unten bewegen.
 | |
| Pfeil-links:  Cursor nach links bewegen.
 | |
| Pfeil-Rechts: Cursor nach rechts bewegen.
 | |
| Home:	      An den Anfang der Zeile springen.
 | |
| End:	      Ans Ende der Zeile springen.
 | |
| Backspace:    Zeichen vor dem Cursor löschen.
 | |
| Delete:	      Zeichen unter dem Cursor löschen
 | |
| 
 | |
| standard-behavior-pro erweitert standard-behavior um die
 | |
| folgenden Bindungen:
 | |
| C-p: Cursor um eine Zeile nach oben bewegen.
 | |
| C-n: Cursor um eine Zeile nach unten bewegen.
 | |
| C-b: Cursor nach links bewegen.
 | |
| C-f: Cursor nach rechts bewegen.
 | |
| C-a: An den Anfang der Zeile springen.
 | |
| C-e: Ans Ende der Zeile springen.
 | |
| C-d:  Zeichen unter dem Cursor löschen.
 | |
| C-k: alles rechts vom Cursor löschen.
 | |
| 
 | |
| die folgenden (hoffentlich) selbsterklärenden Symbole stehen
 | |
| zum Erstellen von Behaviors zu verfügung:
 | |
| 
 | |
| 'move-prev-line
 | |
| 'move-next-line
 | |
| 'move-left
 | |
| 'move-right
 | |
| 
 | |
| 'move-forawrd		- wie move-right, springt aber nach Ende der Zeile
 | |
| 			  auf den Anfang der Nächsten.
 | |
| 'move-backward		- equivalent zu 'move-forward
 | |
| 
 | |
| 'goto-begin-of-line
 | |
| 'goto-end-of-line
 | |
| 'goto-begin-of-first-line
 | |
| 'goto-begin-of-last-line
 | |
| 'goto-begin-of-word-forward
 | |
| 'goto-begin-of-word-backward
 | |
| 
 | |
| 'delete-left
 | |
| 'delete-right
 | |
| 'delete-all-left
 | |
| 'delete-all-right
 | |
| 'delete-line
 | |
| 
 | |
| 'restore: Synchronisiert inrterne Daten mit externer Darstellung
 | |
| 	  und Zeichent das Input-field neu.
 | |
| 	  (war bisher nicht nötig, aber sobald Sonderzeichen erlaubt 
 | |
| 	  sind.... ;-)
 | |
| 
 | |
| Außerdem zeichnet die Funktion
 | |
| (input-field-refresh input-field)
 | |
| das Input-field neu.
 | |
| 
 | |
| 4. Cursor-over-inputfield? und send-input-field
 | |
| -----------------------------------------------
 | |
| 
 | |
| (cursor-over-input-field? window) -> #f | input-field
 | |
| liefert, wenn der Cursor im Fenster window über einem zuvor installiertem
 | |
| Input-field steht, dieses Input-field zurück, ansonsten #f.
 | |
| 
 | |
| (send-input-field input-field integer) -> (values boolean boolean)
 | |
| übergibt dem Input-field input-field die Zahl integer. Das Input-field
 | |
| schaut zuerst, ob es sich um eine im Behavior gebundene Zahl handelt und
 | |
| führt, falls dies der Fall ist die entsprechende Aktion aus. Falls integer
 | |
| nicht im Behavior gebunden ist überprüft das Input-field ob es sich um einen
 | |
| gültigen zum Einfügen gültigen Ascii-code (32-126) handelt und fügt das
 | |
| entsprechende Zeichen gegebenenfalls an der aktuellen Cursorposition ein.
 | |
| 
 | |
|  
 | |
| 5. Position, Größe, Scrolleigenschaften nachträglich verändern
 | |
| --------------------------------------------------------------
 | |
| 
 | |
| ;; TODOOO
 | |
| 
 | |
| hierzu stehen folgende Funktionen zur Verfügung:
 | |
| 
 | |
| 	  (input-field-reset           input-field)		- stellt den default-text wieder her
 | |
| 	  (input-field-clear           input-field)		- löscht den Inhalt
 | |
| 	  (input-field-move            input-field x-loc y-loc)	- setzt die linke, obere Ecke auf (x-loc y-loc)
 | |
| 	  (input-field-resize          input-field x-dim y-dim) - setzt ...
 | |
| 	  (input-field-toggle-x-scroll input-field)
 | |
| 	  (input-field-toggle-y-scroll input-field)
 | |
| 
 | |
| 
 |