DEFINITION MODULE Requester;
(*$ LargeVars:=FALSE *)

(* Nur ab Version 36 benutzen, Abfrage bei Programmbeginn!! *)

FROM SYSTEM IMPORT ADDRESS;
IMPORT IntuitionD, R;


CONST
  (* Rückgabewerte von YNCRequest: *)
  yes=1;
  no=2;
  cancel=0;

(*
 *  Setzt myProcess^.windowPtr auf win.
 *  Damit landen nun ALLE Requester auf dem zugehörigen Screen
 *  NIL bedeutet Workbench (oder Default Public Screen).
 *  -1 bedeutet, daß alle Requester unterdrückt werden und
 *  FALSE bzw. CANCEL zurückliefern.
 *  Dies gilt auch für System-Requester!
 *  Jeder, der Requster-Module schreibt, sollt esich an diese
 *  Konventionen halten!!
 *)
PROCEDURE SetWindow(win{R.A0}:IntuitionD.WindowPtr);

(*
 * Stellt Window-Zustand bei Programmstart wieder her.
 * Ist auch CLOSE-Procedure.
 *)
PROCEDURE RestoreWindow;

(* Der Titel des Requesters ist jeweils der Arts.programName! *)


(* Allgemeiner, vielseitiger Requester *)
(* Result = gadgets von links=1, 2, 3 usw. ganz rechts =0 *)
PROCEDURE Request(
	text:ARRAY OF CHAR;    (* Zeilen durch "\n" getrennt *)
	gadgets:ARRAY OF CHAR; (* Gadgets durch "|" getrennt *)
	args:ADDRESS   (* args für text und gadgets %d %lx %s etc *)
	):INTEGER;

(* Das meistgebrauchte:
 * Bringt YES=1 NO=2 CANCEL=0
 *)
PROCEDURE YNCRequest(frage:ARRAY OF CHAR (* kann mehrere Zeilen enthalten! *)
		):INTEGER;

(*
 *  Zur einfachen Anzeige von Meldungen.
 *  Bringt nur ein Gadget: OK
 *)
PROCEDURE OKRequest(msg:ARRAY OF CHAR); (* s.o *)

END Requester.
