gttest.pas 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. done := false;
  34. handle := LT_CreateHandleTags(nil,[
  35. LAHN_AutoActivate, lfalse,
  36. TAG_DONE]);
  37. if handle = nil then CleanUp('Could''t create a handle',20);
  38. LT_New(handle,[LA_Type,VERTICAL_KIND, { A vertical group. }
  39. LA_LabelText,'Main Group',
  40. TAG_DONE]);
  41. LT_New(handle,[LA_Type,BUTTON_KIND, { A plain button. }
  42. LA_LabelText,'A button',
  43. LA_ID,11,
  44. TAG_DONE]);
  45. LT_New(handle,[LA_Type,XBAR_KIND,TAG_DONE]); { A separator bar. }
  46. LT_New(handle,[LA_Type,BUTTON_KIND, { A plain button. }
  47. LA_LabelText,'Another button',
  48. LA_ID,22,
  49. TAG_DONE]);
  50. LT_New(handle,[LA_Type,CHECKBOX_KIND,LA_LabelText,'test',LA_ID,33,LA_BOOL,1,TAG_DONE]);
  51. LT_New(handle,[La_Type,END_KIND,TAG_DONE]); { This ends the current group. }
  52. win := LT_Build(handle,[LAWN_Title,'Window title',
  53. LAWN_IDCMP, IDCMP_CLOSEWINDOW,
  54. WA_CloseGadget, ltrue,
  55. TAG_DONE]);
  56. if win = nil then CleanUp('Can''t open the window',20);
  57. repeat
  58. msg := pIntuiMessage(WaitPort(win^.UserPort));
  59. msg := GT_GetIMsg(win^.UserPort);
  60. while msg <> nil do begin
  61. msgclass := msg^.IClass;
  62. msgcode := msg^.Code;
  63. msgQuali := msg^.Qualifier;
  64. msggadget := msg^.IAddress;
  65. GT_ReplyIMsg(msg);
  66. LT_HandleInput(handle,msgQuali,@msgclass,@msgcode,@msggadget);
  67. case msgclass of
  68. IDCMP_CLOSEWINDOW : begin
  69. writeln(LT_GetAttributesA(handle,33,nil));
  70. done := true;
  71. end;
  72. IDCMP_GADGETUP: begin
  73. case msggadget^.GadgetId of
  74. 11 : writeln('First gadget');
  75. 22 : writeln('Second gadget');
  76. end;
  77. end;
  78. end;
  79. msg := GT_GetIMsg(win^.UserPort);
  80. end;
  81. until done;
  82. CleanUp('all ok',0);
  83. end.