gtlayout.pas 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311
  1. {
  2. This file is part of the Free Pascal run time library.
  3. A file in Amiga system run time library.
  4. Copyright (c) 2000-2003 by Nils Sjoholm
  5. member of the Amiga RTL development team.
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. {
  13. History:
  14. This is just a quick translation of gtlayout.h.
  15. I have made a small testprogram and all is well.
  16. 16 Jul 2000.
  17. Added MessageBox for error report.
  18. 31 Jul 2000.
  19. Added functions and procedures with array of const.
  20. For use with fpc 1.0.
  21. 06 Jan 2003.
  22. Added the defines use_amiga_smartlink and
  23. use_auto_openlib.
  24. 12 Jan 2003.
  25. Changed startcode for unit.
  26. 10 Feb 2003.
  27. [email protected]
  28. }
  29. {$mode objfpc}
  30. {$I useamigasmartlink.inc}
  31. {$ifdef use_amiga_smartlink}
  32. {$smartlink on}
  33. {$endif use_amiga_smartlink}
  34. UNIT GTLAYOUT;
  35. INTERFACE
  36. USES Exec,intuition,utility, gadtools,graphics;
  37. { Kinds of objects supported in addition to the normal GadTools kinds }
  38. const
  39. GTLAYOUTNAME : PCHar = 'gtlayout.library';
  40. HORIZONTAL_KIND = 45;
  41. VERTICAL_KIND = 46;
  42. END_KIND = 47;
  43. FRAME_KIND = 48;
  44. BOX_KIND = 49;
  45. FRACTION_KIND = 50;
  46. XBAR_KIND = 51;
  47. YBAR_KIND = 52;
  48. PASSWORD_KIND = 53;
  49. GAUGE_KIND = 54;
  50. TAPEDECK_KIND = 55;
  51. LEVEL_KIND = 56;
  52. BOOPSI_KIND = 57;
  53. POPUP_KIND = 58;
  54. TAB_KIND = 59;
  55. BLANK_KIND = 60;
  56. IMAGE_KIND = 61;
  57. { Where to place a gadget label }
  58. PLACE_Left = 0;
  59. PLACE_Right = 1;
  60. PLACE_Above = 2;
  61. PLACE_In = 3;
  62. PLACE_Below = 4;
  63. { How to align text lines in BOX_KIND gadgets }
  64. ALIGNTEXT_Left = 0;
  65. ALIGNTEXT_Centered = 1;
  66. ALIGNTEXT_Right = 2;
  67. ALIGNTEXT_Pad = 3;
  68. { The button images available for TAPEDECK_KIND gadgets. }
  69. TDBT_Backward = 0;
  70. TDBT_Forward = 1;
  71. TDBT_Previous = 2;
  72. TDBT_Next = 3;
  73. TDBT_Stop = 4;
  74. TDBT_Pause = 5;
  75. TDBT_Record = 6;
  76. TDBT_Rewind = 7;
  77. TDBT_Eject = 8;
  78. TDBT_Play = 9;
  79. TDBTLAST = 10;
  80. { The frame types for groups. }
  81. FRAMETYPE_None = 0;
  82. FRAMETYPE_Label = 1;
  83. FRAMETYPE_Tab = 2;
  84. { How to align the window opened by LT_Build() on the screen. }
  85. ALIGNF_Right = 1 shl 0;
  86. ALIGNF_Left = 1 shl 1;
  87. ALIGNF_Top = 1 shl 2;
  88. ALIGNF_Bottom = 1 shl 3;
  89. ALIGNF_ExtraRight = 1 shl 4;
  90. ALIGNF_ExtraLeft = 1 shl 5;
  91. ALIGNF_ExtraTop = 1 shl 6;
  92. ALIGNF_ExtraBottom = 1 shl 7;
  93. { Generic tags, applicable for several object types }
  94. LA_Chars = TAG_USER+2;
  95. LA_LabelPlace = TAG_USER+3;
  96. LA_ExtraSpace = TAG_USER+4;
  97. LA_NoKey = TAG_USER+30;
  98. LA_HighLabel = TAG_USER+31;
  99. LA_LabelText = TAG_USER+37;
  100. LA_LabelID = TAG_USER+38;
  101. LA_ID = TAG_USER+39;
  102. LA_Type = TAG_USER+40;
  103. LA_PageSelector = TAG_USER+79;
  104. LA_LabelChars = TAG_USER+107;
  105. LA_DefaultSize = TAG_USER+170;
  106. LA_LayoutSpace = TAG_USER+189;
  107. { Storage type tags }
  108. LA_BYTE = TAG_USER+63;
  109. LA_UBYTE = TAG_USER+64;
  110. LA_WORD = TAG_USER+65;
  111. LA_BOOL = TAG_USER+65;
  112. LA_UWORD = TAG_USER+66;
  113. LA_LONG = TAG_USER+67;
  114. LA_ULONG = TAG_USER+68;
  115. LA_STRPTR = TAG_USER+69;
  116. { for use with LT_GetAttributes() only }
  117. LA_Left = TAG_USER+16;
  118. LA_Top = TAG_USER+17;
  119. LA_Width = TAG_USER+18;
  120. LA_Height = TAG_USER+19;
  121. LA_LabelLeft = TAG_USER+114;
  122. LA_LabelTop = TAG_USER+115;
  123. { BOOPSI_KIND }
  124. LABO_TagCurrent = TAG_USER+119;
  125. LABO_TagTextAttr = TAG_USER+120;
  126. LABO_TagDrawInfo = TAG_USER+121;
  127. LABO_TagLink = TAG_USER+129;
  128. LABO_TagScreen = TAG_USER+132;
  129. LABO_Link = TAG_USER+7;
  130. LABO_ClassInstance = TAG_USER+122;
  131. LABO_ClassName = TAG_USER+123;
  132. LABO_ClassLibraryName = TAG_USER+124;
  133. LABO_ExactWidth = TAG_USER+127;
  134. LABO_ExactHeight = TAG_USER+128;
  135. LABO_RelFontHeight = TAG_USER+131;
  136. LABO_Object = TAG_USER+133;
  137. LABO_FullWidth = TAG_USER+135;
  138. LABO_FullHeight = TAG_USER+136;
  139. LABO_ActivateHook = TAG_USER+141;
  140. { BOX_KIND }
  141. LABX_Labels = TAG_USER+12;
  142. LABX_Lines = TAG_USER+13;
  143. LABX_Chars = TAG_USER+2;
  144. LABX_Rows = TAG_USER+1;
  145. LABX_Index = TAG_USER+14;
  146. LABX_Text = TAG_USER+15;
  147. LABX_AlignText = TAG_USER+27;
  148. LABX_DrawBox = TAG_USER+11;
  149. LABX_FirstLabel = TAG_USER+44;
  150. LABX_LastLabel = TAG_USER+45;
  151. LABX_ReserveSpace = TAG_USER+72;
  152. LABX_LabelTable = TAG_USER+98;
  153. LABX_FirstLine = TAG_USER+152;
  154. LABX_LastLine = TAG_USER+153;
  155. LABX_LineTable = TAG_USER+156;
  156. LABX_Line = TAG_USER+161;
  157. LABX_LineID = TAG_USER+162;
  158. LABX_TextPen = TAG_USER+172;
  159. LABX_BackPen = TAG_USER+173;
  160. LABX_Spacing = TAG_USER+180;
  161. { BUTTON_KIND }
  162. LABT_ReturnKey = TAG_USER+34;
  163. LABT_DefaultButton = TAG_USER+34;
  164. LABT_EscKey = TAG_USER+56;
  165. LABT_ExtraFat = TAG_USER+29;
  166. LABT_Lines = TAG_USER+140;
  167. LABT_FirstLine = TAG_USER+44;
  168. LABT_LastLine = TAG_USER+45;
  169. LABT_DefaultCorrection = TAG_USER+145;
  170. LABT_Smaller = TAG_USER+147;
  171. { CYCLE_KIND }
  172. LACY_FirstLabel = TAG_USER+44;
  173. LACY_LastLabel = TAG_USER+45;
  174. LACY_LabelTable = TAG_USER+98;
  175. LACY_AutoPageID = TAG_USER+103;
  176. LACY_TabKey = TAG_USER+118;
  177. { FRACTION_KIND }
  178. LAFR_IncrementerHook = TAG_USER+85;
  179. { FRAME_KIND }
  180. LAFR_InnerWidth = TAG_USER+9;
  181. LAFR_InnerHeight = TAG_USER+10;
  182. LAFR_DrawBox = TAG_USER+11;
  183. LAFR_RefreshHook = TAG_USER+117;
  184. LAFR_GenerateEvents = TAG_USER+155;
  185. LAFR_ResizeX = TAG_USER+109;
  186. LAFR_ResizeY = TAG_USER+110;
  187. { GAUGE_KIND }
  188. LAGA_Percent = TAG_USER+36;
  189. LAGA_InfoLength = TAG_USER+70;
  190. LAGA_InfoText = TAG_USER+71;
  191. LAGA_NoTicks = TAG_USER+143;
  192. LAGA_Discrete = TAG_USER+144;
  193. LAGA_Tenth = TAG_USER+144;
  194. { IMAGE_KIND }
  195. LAIM_Image = TAG_USER+181;
  196. LAIM_BitMap = TAG_USER+182;
  197. LAIM_BitMapLeft = TAG_USER+183;
  198. LAIM_BitMapTop = TAG_USER+184;
  199. LAIM_BitMapWidth = TAG_USER+185;
  200. LAIM_BitMapHeight = TAG_USER+186;
  201. LAIM_BitMapMask = TAG_USER+187;
  202. { INTEGER_KIND }
  203. LAIN_LastGadget = TAG_USER+28;
  204. LAIN_Min = TAG_USER+23;
  205. LAIN_Max = TAG_USER+24;
  206. LAIN_UseIncrementers = TAG_USER+57;
  207. LAIN_Incrementers = TAG_USER+57;
  208. LAIN_HistoryLines = TAG_USER+59;
  209. LAIN_HistoryHook = TAG_USER+80;
  210. LAIN_IncrementerHook = TAG_USER+85;
  211. LAIN_Activate = TAG_USER+148;
  212. { LISTVIEW_KIND }
  213. LALV_ExtraLabels = TAG_USER+26;
  214. LALV_Labels = TAG_USER+33;
  215. LALV_CursorKey = TAG_USER+35;
  216. LALV_Columns = TAG_USER+2;
  217. LALV_Lines = TAG_USER+1;
  218. LALV_Link = TAG_USER+7;
  219. LALV_FirstLabel = TAG_USER+44;
  220. LALV_LastLabel = TAG_USER+45;
  221. LALV_MaxGrowX = TAG_USER+77;
  222. LALV_MaxGrowY = TAG_USER+78;
  223. LALV_LabelTable = TAG_USER+98;
  224. LALV_LockSize = TAG_USER+106;
  225. LALV_ResizeX = TAG_USER+109;
  226. LALV_ResizeY = TAG_USER+110;
  227. LALV_MinChars = TAG_USER+111;
  228. LALV_MinLines = TAG_USER+112;
  229. LALV_FlushLabelLeft = TAG_USER+113;
  230. LALV_TextAttr = TAG_USER+138;
  231. LALV_AutoPageID = TAG_USER+103;
  232. LALV_Selected = TAG_USER+167;
  233. LALV_AdjustForString = TAG_USER+174;
  234. { LEVEL_KIND }
  235. LAVL_Min = GTSL_Min;
  236. LAVL_Max = GTSL_Max;
  237. LAVL_Level = GTSL_Level;
  238. LAVL_LevelFormat = GTSL_LevelFormat;
  239. LAVL_LevelPlace = GTSL_LevelPlace;
  240. LAVL_DispFunc = GTSL_DispFunc;
  241. LAVL_FullCheck = TAG_USER+22;
  242. LAVL_Freedom = TAG_USER+177 { (I) New in V41 };
  243. LAVL_Ticks = TAG_USER+178 { (I) New in V41 };
  244. LAVL_NumTicks = TAG_USER+179 { (IS) New in V41 };
  245. LAVL_Lines = TAG_USER+1;
  246. { MX_KIND }
  247. LAMX_FirstLabel = TAG_USER+44;
  248. LAMX_LastLabel = TAG_USER+45;
  249. LAMX_LabelTable = TAG_USER+98;
  250. LAMX_TabKey = TAG_USER+118;
  251. LAMX_AutoPageID = TAG_USER+103;
  252. { PALETTE_KIND }
  253. LAPA_SmallPalette = TAG_USER+32;
  254. LAPA_Lines = TAG_USER+1;
  255. LAPA_UsePicker = TAG_USER+137;
  256. LAPA_Picker = TAG_USER+137;
  257. { PASSWORD_KIND }
  258. LAPW_String = GTST_String;
  259. LAPW_LastGadget = TAG_USER+28;
  260. LAPW_HistoryLines = TAG_USER+59;
  261. LAPW_HistoryHook = TAG_USER+80;
  262. LAPW_Activate = TAG_USER+148;
  263. LAPW_MaxChars = GTST_MaxChars;
  264. { POPUP_KIND }
  265. LAPU_FirstLabel = TAG_USER+44;
  266. LAPU_LastLabel = TAG_USER+45;
  267. LAPU_LabelTable = TAG_USER+98;
  268. LAPU_AutoPageID = TAG_USER+103;
  269. LAPU_TabKey = TAG_USER+118;
  270. LAPU_Labels = GTCY_Labels;
  271. LAPU_Active = GTCY_Active;
  272. LAPU_CentreActive = TAG_USER+163;
  273. { SLIDER_KIND }
  274. LASL_FullCheck = TAG_USER+22;
  275. { SCROLLER_KIND }
  276. LASC_Thin = TAG_USER+62;
  277. LASC_FullSize = TAG_USER+188;
  278. { STRING_KIND }
  279. LAST_LastGadget = TAG_USER+28;
  280. LAST_Link = TAG_USER+7;
  281. LAST_Picker = TAG_USER+5;
  282. LAST_UsePicker = TAG_USER+5;
  283. LAST_HistoryLines = TAG_USER+59;
  284. LAST_HistoryHook = TAG_USER+80;
  285. LAST_CursorPosition = TAG_USER+105;
  286. LAST_Activate = TAG_USER+148;
  287. LAST_ValidateHook = TAG_USER+165;
  288. { TAB_KIND }
  289. LATB_FirstLabel = TAG_USER+44;
  290. LATB_LastLabel = TAG_USER+45;
  291. LATB_LabelTable = TAG_USER+98;
  292. LATB_AutoPageID = TAG_USER+103;
  293. LATB_TabKey = TAG_USER+118;
  294. LATB_Labels = GTCY_Labels;
  295. LATB_Active = GTCY_Active;
  296. LATB_FullWidth = TAG_USER+149;
  297. LATB_FullSize = TAG_USER+149;
  298. { TAPEDECK_KIND }
  299. LATD_ButtonType = TAG_USER+86;
  300. LATD_Toggle = TAG_USER+87;
  301. LATD_Pressed = TAG_USER+88;
  302. LATD_Smaller = TAG_USER+89;
  303. LATD_Tick = TAG_USER+139;
  304. { TEXT_KIND }
  305. LATX_Picker = TAG_USER+5;
  306. LATX_UsePicker = TAG_USER+5;
  307. LATX_LockSize = TAG_USER+106;
  308. { VERTICAL_KIND and HORIZONTAL_KIND }
  309. LAGR_Spread = TAG_USER+6;
  310. LAGR_SameSize = TAG_USER+8;
  311. LAGR_LastAttributes = TAG_USER+46;
  312. LAGR_ActivePage = TAG_USER+58;
  313. LAGR_Frame = TAG_USER+104;
  314. LAGR_IndentX = TAG_USER+130;
  315. LAGR_IndentY = TAG_USER+134;
  316. LAGR_NoIndent = TAG_USER+146;
  317. LAGR_SameWidth = TAG_USER+150;
  318. LAGR_SameHeight = TAG_USER+151;
  319. LAGR_FrameGroup = TAG_USER+168;
  320. LAGR_AlignRight = TAG_USER+171;
  321. { XBAR_KIND }
  322. LAXB_FullSize = TAG_USER+50;
  323. LAXB_FullWidth = TAG_USER+50;
  324. { Applicable for layout handle only }
  325. LAHN_TextAttr = TAG_USER+41;
  326. LAHN_AutoActivate = TAG_USER+42;
  327. LAHN_LocaleHook = TAG_USER+4;
  328. LAHN_CloningPermitted = TAG_USER+61;
  329. LAHN_EditHook = TAG_USER+74;
  330. LAHN_ExactClone = TAG_USER+75;
  331. LAHN_MenuGlyphs = TAG_USER+76;
  332. LAHN_Parent = TAG_USER+83;
  333. LAHN_BlockParent = TAG_USER+84;
  334. LAHN_SimpleClone = TAG_USER+90;
  335. LAHN_ExitFlush = TAG_USER+108;
  336. LAHN_UserData = TAG_USER+116;
  337. LAHN_RawKeyFilter = TAG_USER+142;
  338. LAHN_DontPickShortcuts = TAG_USER+154;
  339. LAHN_NoKeys = TAG_USER+154;
  340. LAHN_PubScreen = TAG_USER+157;
  341. LAHN_PubScreenName = TAG_USER+158;
  342. LAHN_PubScreenFallBack = TAG_USER+159;
  343. LAHN_CloneScreenTitle = TAG_USER+175;
  344. LAHN_CloneScreenTitleID = TAG_USER+176;
  345. LAHN_TopGroupType = TAG_USER+190;
  346. { Applicable for menus only. }
  347. LAMN_FirstLabel = LABX_FirstLabel;
  348. LAMN_LastLabel = LABX_LastLabel;
  349. LAMN_LabelTable = TAG_USER+98;
  350. LAMN_TitleText = TAG_USER+17000;
  351. LAMN_TitleID = TAG_USER+17001;
  352. LAMN_ItemText = TAG_USER+17002;
  353. LAMN_ItemID = TAG_USER+17003;
  354. LAMN_SubText = TAG_USER+17004;
  355. LAMN_SubID = TAG_USER+17005;
  356. LAMN_KeyText = TAG_USER+17006;
  357. LAMN_KeyID = TAG_USER+17007;
  358. LAMN_CommandText = TAG_USER+17008;
  359. LAMN_CommandID = TAG_USER+17009;
  360. LAMN_MutualExclude = TAG_USER+17010;
  361. LAMN_UserData = TAG_USER+17011;
  362. LAMN_Disabled = TAG_USER+17012;
  363. LAMN_CheckIt = TAG_USER+17013;
  364. LAMN_Checked = TAG_USER+17014;
  365. LAMN_Toggle = TAG_USER+17015;
  366. LAMN_Code = TAG_USER+17016;
  367. LAMN_Qualifier = TAG_USER+17017;
  368. LAMN_Char = TAG_USER+17018;
  369. LAMN_ID = TAG_USER+17019;
  370. LAMN_AmigaGlyph = TAG_USER+17020;
  371. LAMN_CheckmarkGlyph = TAG_USER+17021;
  372. LAMN_Error = TAG_USER+17022;
  373. LAMN_Screen = TAG_USER+17023;
  374. LAMN_TextAttr = TAG_USER+17024;
  375. LAMN_LayoutHandle = TAG_USER+17025;
  376. LAMN_Handle = TAG_USER+17025;
  377. LAMN_ExtraSpace = TAG_USER+17026;
  378. LAMN_FullMenuNum = TAG_USER+160;
  379. { Applicable for window only }
  380. LAWN_Menu = TAG_USER+25;
  381. LAWN_UserPort = TAG_USER+47;
  382. LAWN_Left = TAG_USER+48;
  383. LAWN_Top = TAG_USER+49;
  384. LAWN_Zoom = TAG_USER+50;
  385. LAWN_MaxPen = TAG_USER+52;
  386. LAWN_BelowMouse = TAG_USER+53;
  387. LAWN_MoveToWindow = TAG_USER+54;
  388. LAWN_AutoRefresh = TAG_USER+55;
  389. LAWN_HelpHook = TAG_USER+73;
  390. LAWN_Parent = TAG_USER+81;
  391. LAWN_BlockParent = TAG_USER+82;
  392. LAWN_SmartZoom = TAG_USER+91;
  393. LAWN_Title = TAG_USER+92;
  394. LAWN_TitleText = TAG_USER+92;
  395. LAWN_Bounds = TAG_USER+93;
  396. LAWN_ExtraWidth = TAG_USER+94;
  397. LAWN_ExtraHeight = TAG_USER+95;
  398. LAWN_IDCMP = TAG_USER+96;
  399. LAWN_AlignWindow = TAG_USER+97;
  400. LAWN_TitleID = TAG_USER+99;
  401. LAWN_FlushLeft = TAG_USER+14000 { NOTEZ-BIEN: = TAG_USER+99 = WA_Dummy and can clash };
  402. LAWN_FlushTop = TAG_USER+14001 { with Intuition! };
  403. LAWN_Show = TAG_USER+14002;
  404. LAWN_MenuTemplate = TAG_USER+14003;
  405. LAWN_MenuTags = TAG_USER+14004;
  406. LAWN_NoInitialRefresh = TAG_USER+164;
  407. LAWN_LimitWidth = TAG_USER+165;
  408. LAWN_LimitHeight = TAG_USER+166;
  409. LAWN_UserData = TAG_USER+169;
  410. { Private tags; do not use, or you'll run into trouble! }
  411. LA_Private1 = TAG_USER+100;
  412. LA_Private2 = TAG_USER+101;
  413. { Last tag item value used }
  414. LAST_TAG = TAG_USER+190;
  415. { Identifies the absence of a link for a listview or a string gadget }
  416. NIL_LINK = -(2);
  417. { }
  418. { String gadget type history hook support: you will either get
  419. the following value passed as the message parameter to your
  420. hook function, or a pointer to a null-terminated string you should
  421. copy and create a Node from, which you should then add to the tail
  422. of your history list. Place a pointer to your history list in the
  423. Hook.h_Data entry.
  424. }
  425. HISTORYHOOK_DiscardOldest = 0;
  426. { }
  427. { Refresh hook support: you will get the following structure
  428. passed as the message and a pointer to the LayoutHandle as
  429. the object.
  430. }
  431. type
  432. tRefreshMsg = record
  433. ID : LONG;
  434. Left : WORD;
  435. Top : WORD;
  436. Width : WORD;
  437. Height : WORD;
  438. end;
  439. pRefreshMsg = ^tRefreshMsg;
  440. { }
  441. { Incrementer hook support: you will get the current value
  442. passed as the object and one of the following values as
  443. the message. Return the number to be used.
  444. }
  445. const
  446. INCREMENTERMSG_Decrement = -1; { Decrement value }
  447. INCREMENTERMSG_Initial = 0; { Initial value passed upon gadget creation }
  448. INCREMENTERMSG_Increment = 1; { Increment value }
  449. const
  450. TICKS_None = 0; {/* No ticks please */}
  451. TICKS_Left = 1; {/* Place ticks left of the slider (FREEVERT only) */}
  452. TICKS_Both = 2; {/* Place ticks on both sides of the slider */}
  453. TICKS_Above = TICKS_Left;
  454. { }
  455. { The central data structure of the layout process. }
  456. { Requires gtlayout.library V9 }
  457. { Requires gtlayout.library V13 }
  458. { Hands off, private fields follow.... }
  459. type
  460. tLayoutHandle = record
  461. Screen : PScreen;
  462. DrawInfo : PDrawInfo;
  463. Window : PWindow;
  464. VisualInfo : Pointer;
  465. AmigaGlyph : PImage;
  466. CheckGlyph : PImage;
  467. UserData : Pointer;
  468. Menu : PMenu;
  469. end;
  470. pLayoutHandle = ^tLayoutHandle;
  471. { Help key hook support: the hook will be called with a "struct IBox "
  472. as the object and a "struct HelpMsg ". The IBox describes the object
  473. the mouse was positioned over, such as a button, a listview, etc.
  474. The "ObjectID" will indicate the ID of the object the mouse was
  475. positioned over. The ID will be -1 if no object was to be found.
  476. }
  477. { Window layout handle }
  478. { ID of the object, -1 for full window }
  479. tHelpMsg = record
  480. Handle : PLayoutHandle;
  481. ObjectID : LONG;
  482. end;
  483. pHelpMsg = ^tHelpMsg;
  484. { pUWord = ^UWord; }
  485. ppGadget = ^pGadget;
  486. pUWORD = ^UWORD;
  487. PROCEDURE LT_LevelWidth(par1 : pLayoutHandle; par2 : pCHAR; par3 : POINTER; par4 : LONGINT; par5 : LONGINT; par6 : pLONGINT; par7 : pLONGINT; last : LONGINT);
  488. PROCEDURE LT_DeleteHandle(last : pLayoutHandle);
  489. FUNCTION LT_CreateHandle(par1 : pScreen; last : pTextAttr) : pLayoutHandle;
  490. FUNCTION LT_CreateHandleTagList(par1 : pScreen; tags : pTagItem) : pLayoutHandle;
  491. FUNCTION LT_Rebuild(par1 : pLayoutHandle; par2 : pIBox; par3 : LONGINT; par4 : LONGINT; last : LONGINT) : BOOLEAN;
  492. PROCEDURE LT_HandleInput(par1 : pLayoutHandle; par2 : ulong; par3 : pulong; par4 : pUWORD; last :ppGadget);
  493. PROCEDURE LT_BeginRefresh(last : pLayoutHandle);
  494. PROCEDURE LT_EndRefresh(par1 : pLayoutHandle; last : LONGINT);
  495. FUNCTION LT_GetAttributesA(par1 : pLayoutHandle; par2 : LONGINT; tags : pTagItem) : LONGINT;
  496. PROCEDURE LT_SetAttributesA(par1 : pLayoutHandle; par2 : LONGINT; tags : pTagItem);
  497. PROCEDURE LT_AddA(par1 : pLayoutHandle; par2 : LONGINT; par3 : pCHAR; par4 : LONGINT; tags : pTagItem);
  498. PROCEDURE LT_NewA(par1 : pLayoutHandle; tags : pTagItem);
  499. PROCEDURE LT_EndGroup(last : pLayoutHandle);
  500. FUNCTION LT_LayoutA(par1 : pLayoutHandle; par2 : pCHAR; par3 : pIBox; par4 : LONGINT; par5 : LONGINT; par6 : ulong; par7 : LONGINT; tags : pTagItem) : pWindow;
  501. FUNCTION LT_LayoutMenusA(par1 : pLayoutHandle; par2 : pNewMenu; tags : pTagItem) : pMenu;
  502. FUNCTION LT_LabelWidth(par1 : pLayoutHandle; last : pCHAR) : LONGINT;
  503. FUNCTION LT_LabelChars(par1 : pLayoutHandle; last : pCHAR) : LONGINT;
  504. PROCEDURE LT_LockWindow(last : pWindow);
  505. PROCEDURE LT_UnlockWindow(last : pWindow);
  506. PROCEDURE LT_DeleteWindowLock(last : pWindow);
  507. PROCEDURE LT_ShowWindow(par1 : pLayoutHandle; last : LONGINT);
  508. PROCEDURE LT_Activate(par1 : pLayoutHandle; last : LONGINT);
  509. FUNCTION LT_PressButton(par1 : pLayoutHandle; last : LONGINT) : BOOLEAN;
  510. FUNCTION LT_GetCode(par1 : ulong; par2 : ulong; par3 : ulong; last : pGadget) : LONGINT;
  511. FUNCTION LT_GetIMsg(last : pLayoutHandle) : pIntuiMessage;
  512. PROCEDURE LT_ReplyIMsg(last : pIntuiMessage);
  513. FUNCTION LT_BuildA(par1 : pLayoutHandle; tags : pTagItem) : pWindow;
  514. FUNCTION LT_RebuildTagList(par1 : pLayoutHandle; par2 : LONGINT; tags : pTagItem) : BOOLEAN;
  515. PROCEDURE LT_UpdateStrings(last : pLayoutHandle);
  516. PROCEDURE LT_DisposeMenu(last : pMenu);
  517. FUNCTION LT_NewMenuTemplate(par1 : pScreen; par2 : pTextAttr; par3 : pImage; par4 : pImage; par5 : pLONGINT; last : pNewMenu) : pMenu;
  518. FUNCTION LT_NewMenuTagList(tags : pTagItem) : pMenu;
  519. PROCEDURE LT_MenuControlTagList(par1 : pWindow; par2 : pMenu; tags : pTagItem);
  520. FUNCTION LT_GetMenuItem(par1 : pMenu; last : ulong) : pMenuItem;
  521. FUNCTION LT_FindMenuCommand(par1 : pMenu; par2 : ulong; par3 : ulong; last : pGadget) : pMenuItem;
  522. PROCEDURE LT_NewLevelWidth(par1 : pLayoutHandle; par2 : pCHAR; par3 : POINTER; par4 : LONGINT; par5 : LONGINT; par6 : pLONGINT; par7 : pLONGINT; last : LONGINT);
  523. PROCEDURE LT_Refresh(last : pLayoutHandle);
  524. PROCEDURE LT_CatchUpRefresh(last : pLayoutHandle);
  525. FUNCTION LT_GetWindowUserData(par1 : pWindow; last : POINTER) : POINTER;
  526. {
  527. This is functions and procedures with array of const.
  528. For use with fpc 1.0.7 and above.
  529. }
  530. FUNCTION LT_CreateHandleTags(screen : pScreen; const tagList : Array Of Const) : pLayoutHandle;
  531. FUNCTION LT_GetAttributes(handle : pLayoutHandle; id : LONGINT; const tagList : Array Of Const) : LONGINT;
  532. PROCEDURE LT_SetAttributes(handle : pLayoutHandle; id : LONGINT; const tagList : Array Of Const);
  533. PROCEDURE LT_Add(handle : pLayoutHandle; _type : LONGINT; _label : pCHAR; id : LONGINT; const tagList : Array Of Const);
  534. PROCEDURE LT_New(handle : pLayoutHandle; const tagList : Array Of Const);
  535. FUNCTION LT_Layout(handle : pLayoutHandle; title : pCHAR; bounds : pIBox; extraWidth : LONGINT; extraHeight : LONGINT; idcmp : longword; align : LONGINT; const tagParams : Array Of Const) : pWindow;
  536. FUNCTION LT_LayoutMenus(handle : pLayoutHandle; menuTemplate : pNewMenu; const tagParams : Array Of Const) : pMenu;
  537. FUNCTION LT_Build(handle : pLayoutHandle; const tagParams : Array Of Const) : pWindow;
  538. FUNCTION LT_RebuildTags(handle : pLayoutHandle; clear : LONGINT; const tags : Array Of Const) : BOOLEAN;
  539. FUNCTION LT_NewMenuTags(const tagList : Array Of Const) : pMenu;
  540. PROCEDURE LT_MenuControlTags(window : pWindow; intuitionMenu : pMenu; const tags : Array Of Const);
  541. VAR GTLayoutBase : pLibrary;
  542. {You can remove this include and use a define instead}
  543. {$I useautoopenlib.inc}
  544. {$ifdef use_init_openlib}
  545. procedure InitGTLAYOUTLibrary;
  546. {$endif use_init_openlib}
  547. {This is a variable that knows how the unit is compiled}
  548. var
  549. GTLAYOUTIsCompiledHow : longint;
  550. IMPLEMENTATION
  551. uses
  552. {$ifndef dont_use_openlib}
  553. msgbox,
  554. {$endif dont_use_openlib}
  555. tagsarray;
  556. PROCEDURE LT_LevelWidth(par1 : pLayoutHandle; par2 : pCHAR; par3 : POINTER; par4 : LONGINT; par5 : LONGINT; par6 : pLONGINT; par7 : pLONGINT; last : LONGINT);
  557. BEGIN
  558. ASM
  559. MOVE.L A6,-(A7)
  560. MOVEA.L par1,A0
  561. MOVEA.L par2,A1
  562. MOVEA.L par3,A2
  563. MOVE.L par4,D0
  564. MOVE.L par5,D1
  565. MOVEA.L par6,A3
  566. MOVEA.L par7,A5
  567. MOVE.L last,D2
  568. MOVEA.L GTLayoutBase,A6
  569. JSR -030(A6)
  570. MOVEA.L (A7)+,A6
  571. END;
  572. END;
  573. PROCEDURE LT_DeleteHandle(last : pLayoutHandle);
  574. BEGIN
  575. ASM
  576. MOVE.L A6,-(A7)
  577. MOVEA.L last,A0
  578. MOVEA.L GTLayoutBase,A6
  579. JSR -036(A6)
  580. MOVEA.L (A7)+,A6
  581. END;
  582. END;
  583. FUNCTION LT_CreateHandle(par1 : pScreen; last : pTextAttr) : pLayoutHandle;
  584. BEGIN
  585. ASM
  586. MOVE.L A6,-(A7)
  587. MOVEA.L par1,A0
  588. MOVEA.L last,A1
  589. MOVEA.L GTLayoutBase,A6
  590. JSR -042(A6)
  591. MOVEA.L (A7)+,A6
  592. MOVE.L D0,@RESULT
  593. END;
  594. END;
  595. FUNCTION LT_CreateHandleTagList(par1 : pScreen; tags : pTagItem) : pLayoutHandle;
  596. BEGIN
  597. ASM
  598. MOVE.L A6,-(A7)
  599. MOVEA.L par1,A0
  600. MOVEA.L tags,A1
  601. MOVEA.L GTLayoutBase,A6
  602. JSR -048(A6)
  603. MOVEA.L (A7)+,A6
  604. MOVE.L D0,@RESULT
  605. END;
  606. END;
  607. FUNCTION LT_Rebuild(par1 : pLayoutHandle; par2 : pIBox; par3 : LONGINT; par4 : LONGINT; last : LONGINT) : BOOLEAN;
  608. BEGIN
  609. ASM
  610. MOVE.L A6,-(A7)
  611. MOVEA.L par1,A0
  612. MOVEA.L par2,A1
  613. MOVEA.L par3,A2
  614. MOVE.L par4,D0
  615. MOVE.L last,D1
  616. MOVEA.L GTLayoutBase,A6
  617. JSR -054(A6)
  618. MOVEA.L (A7)+,A6
  619. TST.W D0
  620. BEQ.B @end
  621. MOVEQ #1,D0
  622. @end: MOVE.B D0,@RESULT
  623. END;
  624. END;
  625. PROCEDURE LT_HandleInput(par1 : pLayoutHandle; par2 : ulong; par3 : pulong;par4 : pUWORD; last : ppGadget);
  626. BEGIN
  627. ASM
  628. MOVE.L A6,-(A7)
  629. MOVEA.L par1,A0
  630. MOVE.L par2,D0
  631. MOVEA.L par3,A1
  632. MOVEA.L par4,A2
  633. MOVEA.L last,A3
  634. MOVEA.L GTLayoutBase,A6
  635. JSR -060(A6)
  636. MOVEA.L (A7)+,A6
  637. END;
  638. END;
  639. PROCEDURE LT_BeginRefresh(last : pLayoutHandle);
  640. BEGIN
  641. ASM
  642. MOVE.L A6,-(A7)
  643. MOVEA.L last,A0
  644. MOVEA.L GTLayoutBase,A6
  645. JSR -066(A6)
  646. MOVEA.L (A7)+,A6
  647. END;
  648. END;
  649. PROCEDURE LT_EndRefresh(par1 : pLayoutHandle; last : LONGINT);
  650. BEGIN
  651. ASM
  652. MOVE.L A6,-(A7)
  653. MOVEA.L par1,A0
  654. MOVE.L last,D0
  655. MOVEA.L GTLayoutBase,A6
  656. JSR -072(A6)
  657. MOVEA.L (A7)+,A6
  658. END;
  659. END;
  660. FUNCTION LT_GetAttributesA(par1 : pLayoutHandle; par2 : LONGINT; tags : pTagItem) : LONGINT;
  661. BEGIN
  662. ASM
  663. MOVE.L A6,-(A7)
  664. MOVEA.L par1,A0
  665. MOVE.L par2,D0
  666. MOVEA.L tags,A1
  667. MOVEA.L GTLayoutBase,A6
  668. JSR -078(A6)
  669. MOVEA.L (A7)+,A6
  670. MOVE.L D0,@RESULT
  671. END;
  672. END;
  673. PROCEDURE LT_SetAttributesA(par1 : pLayoutHandle; par2 : LONGINT; tags : pTagItem);
  674. BEGIN
  675. ASM
  676. MOVE.L A6,-(A7)
  677. MOVEA.L par1,A0
  678. MOVE.L par2,D0
  679. MOVEA.L tags,A1
  680. MOVEA.L GTLayoutBase,A6
  681. JSR -084(A6)
  682. MOVEA.L (A7)+,A6
  683. END;
  684. END;
  685. PROCEDURE LT_AddA(par1 : pLayoutHandle; par2 : LONGINT; par3 : pCHAR; par4 : LONGINT; tags : pTagItem);
  686. BEGIN
  687. ASM
  688. MOVE.L A6,-(A7)
  689. MOVEA.L par1,A0
  690. MOVE.L par2,D0
  691. MOVE.L par3,D1
  692. MOVE.L par4,D2
  693. MOVEA.L tags,A1
  694. MOVEA.L GTLayoutBase,A6
  695. JSR -090(A6)
  696. MOVEA.L (A7)+,A6
  697. END;
  698. END;
  699. PROCEDURE LT_NewA(par1 : pLayoutHandle; tags : pTagItem);
  700. BEGIN
  701. ASM
  702. MOVE.L A6,-(A7)
  703. MOVEA.L par1,A0
  704. MOVEA.L tags,A1
  705. MOVEA.L GTLayoutBase,A6
  706. JSR -096(A6)
  707. MOVEA.L (A7)+,A6
  708. END;
  709. END;
  710. PROCEDURE LT_EndGroup(last : pLayoutHandle);
  711. BEGIN
  712. ASM
  713. MOVE.L A6,-(A7)
  714. MOVEA.L last,A0
  715. MOVEA.L GTLayoutBase,A6
  716. JSR -102(A6)
  717. MOVEA.L (A7)+,A6
  718. END;
  719. END;
  720. FUNCTION LT_LayoutA(par1 : pLayoutHandle; par2 : pCHAR; par3 : pIBox; par4 : LONGINT; par5 : LONGINT; par6 : ulong; par7 : LONGINT; tags : pTagItem) : pWindow;
  721. BEGIN
  722. ASM
  723. MOVE.L A6,-(A7)
  724. MOVEA.L par1,A0
  725. MOVEA.L par2,A1
  726. MOVEA.L par3,A2
  727. MOVE.L par4,D0
  728. MOVE.L par5,D1
  729. MOVE.L par6,D2
  730. MOVE.L par7,D3
  731. MOVEA.L tags,A3
  732. MOVEA.L GTLayoutBase,A6
  733. JSR -108(A6)
  734. MOVEA.L (A7)+,A6
  735. MOVE.L D0,@RESULT
  736. END;
  737. END;
  738. FUNCTION LT_LayoutMenusA(par1 : pLayoutHandle; par2 : pNewMenu; tags : pTagItem) : pMenu;
  739. BEGIN
  740. ASM
  741. MOVE.L A6,-(A7)
  742. MOVEA.L par1,A0
  743. MOVEA.L par2,A1
  744. MOVEA.L tags,A2
  745. MOVEA.L GTLayoutBase,A6
  746. JSR -114(A6)
  747. MOVEA.L (A7)+,A6
  748. MOVE.L D0,@RESULT
  749. END;
  750. END;
  751. FUNCTION LT_LabelWidth(par1 : pLayoutHandle; last : pCHAR) : LONGINT;
  752. BEGIN
  753. ASM
  754. MOVE.L A6,-(A7)
  755. MOVEA.L par1,A0
  756. MOVEA.L last,A1
  757. MOVEA.L GTLayoutBase,A6
  758. JSR -138(A6)
  759. MOVEA.L (A7)+,A6
  760. MOVE.L D0,@RESULT
  761. END;
  762. END;
  763. FUNCTION LT_LabelChars(par1 : pLayoutHandle; last : pCHAR) : LONGINT;
  764. BEGIN
  765. ASM
  766. MOVE.L A6,-(A7)
  767. MOVEA.L par1,A0
  768. MOVEA.L last,A1
  769. MOVEA.L GTLayoutBase,A6
  770. JSR -144(A6)
  771. MOVEA.L (A7)+,A6
  772. MOVE.L D0,@RESULT
  773. END;
  774. END;
  775. PROCEDURE LT_LockWindow(last : pWindow);
  776. BEGIN
  777. ASM
  778. MOVE.L A6,-(A7)
  779. MOVEA.L last,A0
  780. MOVEA.L GTLayoutBase,A6
  781. JSR -150(A6)
  782. MOVEA.L (A7)+,A6
  783. END;
  784. END;
  785. PROCEDURE LT_UnlockWindow(last : pWindow);
  786. BEGIN
  787. ASM
  788. MOVE.L A6,-(A7)
  789. MOVEA.L last,A0
  790. MOVEA.L GTLayoutBase,A6
  791. JSR -156(A6)
  792. MOVEA.L (A7)+,A6
  793. END;
  794. END;
  795. PROCEDURE LT_DeleteWindowLock(last : pWindow);
  796. BEGIN
  797. ASM
  798. MOVE.L A6,-(A7)
  799. MOVEA.L last,A0
  800. MOVEA.L GTLayoutBase,A6
  801. JSR -162(A6)
  802. MOVEA.L (A7)+,A6
  803. END;
  804. END;
  805. PROCEDURE LT_ShowWindow(par1 : pLayoutHandle; last : LONGINT);
  806. BEGIN
  807. ASM
  808. MOVE.L A6,-(A7)
  809. MOVEA.L par1,A0
  810. MOVEA.L last,A1
  811. MOVEA.L GTLayoutBase,A6
  812. JSR -168(A6)
  813. MOVEA.L (A7)+,A6
  814. END;
  815. END;
  816. PROCEDURE LT_Activate(par1 : pLayoutHandle; last : LONGINT);
  817. BEGIN
  818. ASM
  819. MOVE.L A6,-(A7)
  820. MOVEA.L par1,A0
  821. MOVE.L last,D0
  822. MOVEA.L GTLayoutBase,A6
  823. JSR -174(A6)
  824. MOVEA.L (A7)+,A6
  825. END;
  826. END;
  827. FUNCTION LT_PressButton(par1 : pLayoutHandle; last : LONGINT) : BOOLEAN;
  828. BEGIN
  829. ASM
  830. MOVE.L A6,-(A7)
  831. MOVEA.L par1,A0
  832. MOVE.L last,D0
  833. MOVEA.L GTLayoutBase,A6
  834. JSR -180(A6)
  835. MOVEA.L (A7)+,A6
  836. TST.W D0
  837. BEQ.B @end
  838. MOVEQ #1,D0
  839. @end: MOVE.B D0,@RESULT
  840. END;
  841. END;
  842. FUNCTION LT_GetCode(par1 : ulong; par2 : ulong; par3 : ulong; last : pGadget) : LONGINT;
  843. BEGIN
  844. ASM
  845. MOVE.L A6,-(A7)
  846. MOVE.L par1,D0
  847. MOVE.L par2,D1
  848. MOVE.L par3,D2
  849. MOVEA.L last,A0
  850. MOVEA.L GTLayoutBase,A6
  851. JSR -186(A6)
  852. MOVEA.L (A7)+,A6
  853. MOVE.L D0,@RESULT
  854. END;
  855. END;
  856. FUNCTION LT_GetIMsg(last : pLayoutHandle) : pIntuiMessage;
  857. BEGIN
  858. ASM
  859. MOVE.L A6,-(A7)
  860. MOVEA.L last,A0
  861. MOVEA.L GTLayoutBase,A6
  862. JSR -192(A6)
  863. MOVEA.L (A7)+,A6
  864. MOVE.L D0,@RESULT
  865. END;
  866. END;
  867. PROCEDURE LT_ReplyIMsg(last : pIntuiMessage);
  868. BEGIN
  869. ASM
  870. MOVE.L A6,-(A7)
  871. MOVEA.L last,A0
  872. MOVEA.L GTLayoutBase,A6
  873. JSR -198(A6)
  874. MOVEA.L (A7)+,A6
  875. END;
  876. END;
  877. FUNCTION LT_BuildA(par1 : pLayoutHandle; tags : pTagItem) : pWindow;
  878. BEGIN
  879. ASM
  880. MOVE.L A6,-(A7)
  881. MOVEA.L par1,A0
  882. MOVEA.L tags,A1
  883. MOVEA.L GTLayoutBase,A6
  884. JSR -204(A6)
  885. MOVEA.L (A7)+,A6
  886. MOVE.L D0,@RESULT
  887. END;
  888. END;
  889. FUNCTION LT_RebuildTagList(par1 : pLayoutHandle; par2 : LONGINT; tags : pTagItem) : BOOLEAN;
  890. BEGIN
  891. ASM
  892. MOVE.L A6,-(A7)
  893. MOVEA.L par1,A0
  894. MOVE.L par2,D0
  895. MOVEA.L tags,A1
  896. MOVEA.L GTLayoutBase,A6
  897. JSR -210(A6)
  898. MOVEA.L (A7)+,A6
  899. TST.W D0
  900. BEQ.B @end
  901. MOVEQ #1,D0
  902. @end: MOVE.B D0,@RESULT
  903. END;
  904. END;
  905. PROCEDURE LT_UpdateStrings(last : pLayoutHandle);
  906. BEGIN
  907. ASM
  908. MOVE.L A6,-(A7)
  909. MOVEA.L last,A0
  910. MOVEA.L GTLayoutBase,A6
  911. JSR -216(A6)
  912. MOVEA.L (A7)+,A6
  913. END;
  914. END;
  915. PROCEDURE LT_DisposeMenu(last : pMenu);
  916. BEGIN
  917. ASM
  918. MOVE.L A6,-(A7)
  919. MOVEA.L last,A0
  920. MOVEA.L GTLayoutBase,A6
  921. JSR -222(A6)
  922. MOVEA.L (A7)+,A6
  923. END;
  924. END;
  925. FUNCTION LT_NewMenuTemplate(par1 : pScreen; par2 : pTextAttr; par3 : pImage; par4 : pImage; par5 : pLONGINT; last : pNewMenu) : pMenu;
  926. BEGIN
  927. ASM
  928. MOVE.L A6,-(A7)
  929. MOVEA.L par1,A0
  930. MOVEA.L par2,A1
  931. MOVEA.L par3,A2
  932. MOVEA.L par4,A3
  933. MOVE.L par5,D0
  934. MOVE.L last,D1
  935. MOVEA.L GTLayoutBase,A6
  936. JSR -228(A6)
  937. MOVEA.L (A7)+,A6
  938. MOVE.L D0,@RESULT
  939. END;
  940. END;
  941. FUNCTION LT_NewMenuTagList(tags : pTagItem) : pMenu;
  942. BEGIN
  943. ASM
  944. MOVE.L A6,-(A7)
  945. MOVEA.L tags,A0
  946. MOVEA.L GTLayoutBase,A6
  947. JSR -234(A6)
  948. MOVEA.L (A7)+,A6
  949. MOVE.L D0,@RESULT
  950. END;
  951. END;
  952. PROCEDURE LT_MenuControlTagList(par1 : pWindow; par2 : pMenu; tags : pTagItem);
  953. BEGIN
  954. ASM
  955. MOVE.L A6,-(A7)
  956. MOVEA.L par1,A0
  957. MOVEA.L par2,A1
  958. MOVEA.L tags,A2
  959. MOVEA.L GTLayoutBase,A6
  960. JSR -240(A6)
  961. MOVEA.L (A7)+,A6
  962. END;
  963. END;
  964. FUNCTION LT_GetMenuItem(par1 : pMenu; last : ulong) : pMenuItem;
  965. BEGIN
  966. ASM
  967. MOVE.L A6,-(A7)
  968. MOVEA.L par1,A0
  969. MOVE.L last,D0
  970. MOVEA.L GTLayoutBase,A6
  971. JSR -246(A6)
  972. MOVEA.L (A7)+,A6
  973. MOVE.L D0,@RESULT
  974. END;
  975. END;
  976. FUNCTION LT_FindMenuCommand(par1 : pMenu; par2 : ulong; par3 : ulong; last : pGadget) : pMenuItem;
  977. BEGIN
  978. ASM
  979. MOVE.L A6,-(A7)
  980. MOVEA.L par1,A0
  981. MOVE.L par2,D0
  982. MOVE.L par3,D1
  983. MOVEA.L last,A1
  984. MOVEA.L GTLayoutBase,A6
  985. JSR -252(A6)
  986. MOVEA.L (A7)+,A6
  987. MOVE.L D0,@RESULT
  988. END;
  989. END;
  990. PROCEDURE LT_NewLevelWidth(par1 : pLayoutHandle; par2 : pCHAR; par3 : POINTER; par4 : LONGINT; par5 : LONGINT; par6 : pLONGINT; par7 : pLONGINT; last : LONGINT);
  991. BEGIN
  992. ASM
  993. MOVE.L A6,-(A7)
  994. MOVEA.L par1,A0
  995. MOVEA.L par2,A1
  996. MOVEA.L par3,A2
  997. MOVE.L par4,D0
  998. MOVE.L par5,D1
  999. MOVEA.L par6,A3
  1000. MOVE.L par7,D3
  1001. MOVE.L last,D2
  1002. MOVEA.L GTLayoutBase,A6
  1003. JSR -258(A6)
  1004. MOVEA.L (A7)+,A6
  1005. END;
  1006. END;
  1007. PROCEDURE LT_Refresh(last : pLayoutHandle);
  1008. BEGIN
  1009. ASM
  1010. MOVE.L A6,-(A7)
  1011. MOVEA.L last,A0
  1012. MOVEA.L GTLayoutBase,A6
  1013. JSR -264(A6)
  1014. MOVEA.L (A7)+,A6
  1015. END;
  1016. END;
  1017. PROCEDURE LT_CatchUpRefresh(last : pLayoutHandle);
  1018. BEGIN
  1019. ASM
  1020. MOVE.L A6,-(A7)
  1021. MOVEA.L last,A0
  1022. MOVEA.L GTLayoutBase,A6
  1023. JSR -270(A6)
  1024. MOVEA.L (A7)+,A6
  1025. END;
  1026. END;
  1027. FUNCTION LT_GetWindowUserData(par1 : pWindow; last : POINTER) : POINTER;
  1028. BEGIN
  1029. ASM
  1030. MOVE.L A6,-(A7)
  1031. MOVEA.L par1,A0
  1032. MOVEA.L last,A1
  1033. MOVEA.L GTLayoutBase,A6
  1034. JSR -276(A6)
  1035. MOVEA.L (A7)+,A6
  1036. MOVE.L D0,@RESULT
  1037. END;
  1038. END;
  1039. {
  1040. Functions and procedures with array of const go here
  1041. }
  1042. FUNCTION LT_CreateHandleTags(screen : pScreen; const tagList : Array Of Const) : pLayoutHandle;
  1043. begin
  1044. LT_CreateHandleTags := LT_CreateHandleTagList(screen , readintags(tagList));
  1045. end;
  1046. FUNCTION LT_GetAttributes(handle : pLayoutHandle; id : LONGINT; const tagList : Array Of Const) : LONGINT;
  1047. begin
  1048. LT_GetAttributes := LT_GetAttributesA(handle , id , readintags(tagList));
  1049. end;
  1050. PROCEDURE LT_SetAttributes(handle : pLayoutHandle; id : LONGINT; const tagList : Array Of Const);
  1051. begin
  1052. LT_SetAttributesA(handle , id , readintags(tagList));
  1053. end;
  1054. PROCEDURE LT_Add(handle : pLayoutHandle; _type : LONGINT; _label : pCHAR; id : LONGINT; const tagList : Array Of Const);
  1055. begin
  1056. LT_AddA(handle , _type , _label , id , readintags(tagList));
  1057. end;
  1058. PROCEDURE LT_New(handle : pLayoutHandle; const tagList : Array Of Const);
  1059. begin
  1060. LT_NewA(handle , readintags(tagList));
  1061. end;
  1062. FUNCTION LT_Layout(handle : pLayoutHandle; title : pCHAR; bounds : pIBox; extraWidth : LONGINT; extraHeight : LONGINT; idcmp : longword; align : LONGINT; const tagParams : Array Of Const) : pWindow;
  1063. begin
  1064. LT_Layout := LT_LayoutA(handle , title , bounds , extraWidth , extraHeight , idcmp , align , readintags(tagParams));
  1065. end;
  1066. FUNCTION LT_LayoutMenus(handle : pLayoutHandle; menuTemplate : pNewMenu; const tagParams : Array Of Const) : pMenu;
  1067. begin
  1068. LT_LayoutMenus := LT_LayoutMenusA(handle , menuTemplate , readintags(tagParams));
  1069. end;
  1070. FUNCTION LT_Build(handle : pLayoutHandle; const tagParams : Array Of Const) : pWindow;
  1071. begin
  1072. LT_Build := LT_BuildA(handle , readintags(tagParams));
  1073. end;
  1074. FUNCTION LT_RebuildTags(handle : pLayoutHandle; clear : LONGINT; const tags : Array Of Const) : BOOLEAN;
  1075. begin
  1076. LT_RebuildTags := LT_RebuildTagList(handle , clear , readintags(tags));
  1077. end;
  1078. FUNCTION LT_NewMenuTags(const tagList : Array Of Const) : pMenu;
  1079. begin
  1080. LT_NewMenuTags := LT_NewMenuTagList(readintags(tagList));
  1081. end;
  1082. PROCEDURE LT_MenuControlTags(window : pWindow; intuitionMenu : pMenu; const tags : Array Of Const);
  1083. begin
  1084. LT_MenuControlTagList(window , intuitionMenu , readintags(tags));
  1085. end;
  1086. const
  1087. { Change VERSION and LIBVERSION to proper values }
  1088. VERSION : string[2] = '0';
  1089. LIBVERSION : Cardinal = 0;
  1090. {$ifdef use_init_openlib}
  1091. {$Info Compiling initopening of gtlayout.library}
  1092. {$Info don't forget to use InitGTLAYOUTLibrary in the beginning of your program}
  1093. var
  1094. gtlayout_exit : Pointer;
  1095. procedure ClosegtlayoutLibrary;
  1096. begin
  1097. ExitProc := gtlayout_exit;
  1098. if GTLayoutBase <> nil then begin
  1099. CloseLibrary(GTLayoutBase);
  1100. GTLayoutBase := nil;
  1101. end;
  1102. end;
  1103. procedure InitGTLAYOUTLibrary;
  1104. begin
  1105. GTLayoutBase := nil;
  1106. GTLayoutBase := OpenLibrary(GTLAYOUTNAME,LIBVERSION);
  1107. if GTLayoutBase <> nil then begin
  1108. gtlayout_exit := ExitProc;
  1109. ExitProc := @ClosegtlayoutLibrary;
  1110. end else begin
  1111. MessageBox('FPC Pascal Error',
  1112. 'Can''t open gtlayout.library version ' + VERSION + #10 +
  1113. 'Deallocating resources and closing down',
  1114. 'Oops');
  1115. halt(20);
  1116. end;
  1117. end;
  1118. begin
  1119. GTLAYOUTIsCompiledHow := 2;
  1120. {$endif use_init_openlib}
  1121. {$ifdef use_auto_openlib}
  1122. {$Info Compiling autoopening of gtlayout.library}
  1123. var
  1124. gtlayout_exit : Pointer;
  1125. procedure ClosegtlayoutLibrary;
  1126. begin
  1127. ExitProc := gtlayout_exit;
  1128. if GTLayoutBase <> nil then begin
  1129. CloseLibrary(GTLayoutBase);
  1130. GTLayoutBase := nil;
  1131. end;
  1132. end;
  1133. begin
  1134. GTLayoutBase := nil;
  1135. GTLayoutBase := OpenLibrary(GTLAYOUTNAME,LIBVERSION);
  1136. if GTLayoutBase <> nil then begin
  1137. gtlayout_exit := ExitProc;
  1138. ExitProc := @ClosegtlayoutLibrary;
  1139. GTLAYOUTIsCompiledHow := 1;
  1140. end else begin
  1141. MessageBox('FPC Pascal Error',
  1142. 'Can''t open gtlayout.library version ' + VERSION + #10 +
  1143. 'Deallocating resources and closing down',
  1144. 'Oops');
  1145. halt(20);
  1146. end;
  1147. {$endif use_auto_openlib}
  1148. {$ifdef dont_use_openlib}
  1149. begin
  1150. GTLAYOUTIsCompiledHow := 3;
  1151. {$Warning No autoopening of gtlayout.library compiled}
  1152. {$Warning Make sure you open gtlayout.library yourself}
  1153. {$endif dont_use_openlib}
  1154. END. (* UNIT GTLAYOUT *)
  1155. {
  1156. $Log
  1157. }