home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / modula2demo.lha / m2 / TalkDemo / txt / Requester.mod < prev    next >
Text File  |  1991-03-29  |  2KB  |  71 lines

  1. IMPLEMENTATION MODULE Requester;
  2. (*$ LargeVars:=FALSE NilChk:=FALSE StackChk:=FALSE
  3.     StackParms:=FALSE RangeChk:=FALSE EntryClear:=FALSE
  4.     Volatile:=FALSE
  5. *)
  6.  
  7. FROM SYSTEM IMPORT ADR,ADDRESS,LONGSET,CAST;
  8. IMPORT A:Arts, ID:IntuitionD, IL:IntuitionL, DD:DosD, R;
  9.  
  10. (*$ LongAlign:=TRUE *)
  11. VAR
  12.   oldWin:ADDRESS;
  13.  
  14. (*$ CopyDyn:=FALSE *)
  15. PROCEDURE Request(
  16.     text:ARRAY OF CHAR; (* durch "\n" getrennt *)
  17.     gadgets:ARRAY OF CHAR; (* durch "|" getrennt *)
  18.     args:ADDRESS) (* args für text und gadgets %d %lx %s etc *)
  19.     :INTEGER;
  20. VAR
  21.   ez:ID.EasyStruct;
  22.   idcmp:ID.IDCMPFlagSet;
  23. BEGIN
  24.   IF CAST(LONGINT,CAST(DD.ProcessPtr,A.thisTask)^.windowPtr)<0 THEN
  25.     RETURN 0
  26.   END;
  27.   idcmp:=ID.IDCMPFlagSet{}; (* nix! *)
  28.   ez.structSize:=SIZE(ID.EasyStruct);
  29.   ez.flags:=LONGSET{};
  30.   ez.title:=A.programName;
  31.   ez.textFormat:=ADR(text);
  32.   ez.gadgetFormat:=ADR(gadgets);
  33.   RETURN IL.EasyRequestArgs(CAST(DD.ProcessPtr,A.thisTask)^.windowPtr,ez,idcmp,args);
  34. END Request;
  35.  
  36.  
  37. (* bringt YES=1 NO=2 CANCEL=0 auf process^.windowPtr *)
  38. (*$ CopyDyn:=FALSE *)
  39. PROCEDURE YNCRequest(frage:ARRAY OF CHAR (* kann mehrere Zeilen enthalten! *)
  40.         ):INTEGER;
  41. BEGIN
  42.   RETURN Request(frage,"YES|NO|CANCEL",NIL);
  43. END YNCRequest;
  44.  
  45. (* bringt nur ein Gadget: OK *)
  46. (*$ CopyDyn:=FALSE *)
  47. PROCEDURE OKRequest(msg:ARRAY OF CHAR); (* s.o *)
  48. BEGIN
  49.   IF Request(msg,"OK",NIL)=0 THEN END;
  50. END OKRequest;
  51.  
  52. PROCEDURE SetWindow(win{R.A0}:ID.WindowPtr);
  53. VAR
  54.   me{R.A1}:DD.ProcessPtr;
  55. BEGIN
  56.   me:=A.thisTask;
  57.   me^.windowPtr:=win;
  58. END SetWindow;
  59.  
  60. PROCEDURE RestoreWindow;
  61. BEGIN
  62.   SetWindow(oldWin);
  63. END RestoreWindow;
  64.  
  65. BEGIN
  66.   oldWin:=CAST(DD.ProcessPtr,A.thisTask)^.windowPtr;
  67.   A.Assert(IL.intuitionVersion>=36,ADR("Needs Intuition>=36!"));
  68. CLOSE
  69.   RestoreWindow;
  70. END Requester.
  71.