gttest.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. program gttest;
  2. {
  3. This is just a small test of gtlayout.library.
  4. It's from gtlayout.doc.
  5. No problems so far.
  6. 16 Jul 2000.
  7. Added MessageBox for report.
  8. 31 Jul 2000.
  9. Updated to use fpc 1.0.7
  10. 07 Jan 2003.
  11. [email protected]
  12. }
  13. uses intuition, exec, gadtools, utility, gtlayout, amsgbox;
  14. const
  15. ltrue : longint = 1;
  16. lfalse : longint = 0;
  17. var
  18. handle : pLayoutHandle;
  19. win : pWindow;
  20. msg : pIntuiMessage;
  21. msgQuali : ulong;
  22. msgclass : ulong;
  23. msgcode : word;
  24. msggadget : pGadget;
  25. done : boolean;
  26. procedure CleanUp(why : string; rc : integer);
  27. begin
  28. LT_DeleteHandle(handle);
  29. if why <> '' then MessageBox('GTLayout Report',why,'OK');
  30. halt(rc);
  31. end;
  32. begin
  33. if not Assigned(GTLayoutBase) then
  34. begin
  35. writeln('cannot open ' + GTLAYOUTNAME);
  36. Halt(5);
  37. end;
  38. done := false;
  39. handle := LT_CreateHandleTags(nil,[
  40. LAHN_AutoActivate, lfalse,
  41. TAG_DONE]);
  42. if handle = nil then CleanUp('Could''t create a handle',20);
  43. LT_New(handle,[LA_Type,VERTICAL_KIND, { A vertical group. }
  44. LA_LabelText, AsTag('Main Group'),
  45. TAG_DONE]);
  46. LT_New(handle,[LA_Type,BUTTON_KIND, { A plain button. }
  47. LA_LabelText, AsTag('A button'),
  48. LA_ID,11,
  49. TAG_DONE]);
  50. LT_New(handle,[LA_Type,XBAR_KIND,TAG_DONE]); { A separator bar. }
  51. LT_New(handle,[LA_Type,BUTTON_KIND, { A plain button. }
  52. LA_LabelText, AsTag('Another button'),
  53. LA_ID,22,
  54. TAG_DONE]);
  55. LT_New(handle,[LA_Type,CHECKBOX_KIND,LA_LabelText,AsTag('test'),LA_ID,33,LA_BOOL,1,TAG_DONE]);
  56. LT_New(handle,[La_Type,END_KIND,TAG_DONE]); { This ends the current group. }
  57. win := LT_Build(handle,[LAWN_Title, AsTag('Window title'),
  58. LAWN_IDCMP, IDCMP_CLOSEWINDOW,
  59. WA_CloseGadget, ltrue,
  60. TAG_DONE]);
  61. if win = nil then CleanUp('Can''t open the window',20);
  62. repeat
  63. msg := pIntuiMessage(WaitPort(win^.UserPort));
  64. msg := GT_GetIMsg(win^.UserPort);
  65. while msg <> nil do begin
  66. msgclass := msg^.IClass;
  67. msgcode := msg^.Code;
  68. msgQuali := msg^.Qualifier;
  69. msggadget := msg^.IAddress;
  70. GT_ReplyIMsg(msg);
  71. LT_HandleInput(handle,msgQuali,@msgclass,@msgcode,@msggadget);
  72. case msgclass of
  73. IDCMP_CLOSEWINDOW : begin
  74. writeln(LT_GetAttributesA(handle,33,nil));
  75. done := true;
  76. end;
  77. IDCMP_GADGETUP: begin
  78. case msggadget^.GadgetId of
  79. 11 : writeln('First gadget');
  80. 22 : writeln('Second gadget');
  81. end;
  82. end;
  83. end;
  84. msg := GT_GetIMsg(win^.UserPort);
  85. end;
  86. until done;
  87. CleanUp('all ok',0);
  88. end.