demo.pas 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150
  1. PROGRAM Main;
  2. (*
  3. * OpenTriton -- A free release of the triton.library source code
  4. * Copyright (C) 1993-1998 Stefan Zeiger
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program; if not, write to the Free Software
  18. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  19. * MA 02110-1301, USA.
  20. *
  21. * demo.c - Triton demo program
  22. *
  23. *)
  24. uses exec, triton, tritonmacros, utility, amigalib, amigados,workbench;
  25. {
  26. A demo in FPC Pascal using triton.library
  27. This is the main demo for triton.
  28. Updated for fpc 1.0.7.
  29. Added const NULL. Instead of typing longint(nil) just type null.
  30. After changes to tritonmacros (more overlays with SetTRTag)
  31. I could remove all longstr and other casts to longint.
  32. 09 Jan 2003.
  33. [email protected]
  34. }
  35. VAR
  36. App : pTR_App;
  37. Main_Project : pTR_Project;
  38. const
  39. NULL : longint = longint(nil);
  40. Function IntToStr (I : Longint) : String;
  41. Var S : String;
  42. begin
  43. Str (I,S);
  44. IntToStr:=S;
  45. end;
  46. PROCEDURE do_text;
  47. VAR
  48. close_me : BOOLEAN;
  49. trmsg : pTR_Message;
  50. text_project : pTR_Project;
  51. BEGIN
  52. ProjectStart;
  53. WindowID(5); WindowTitle('Text'); WindowPosition(TRWP_CENTERDISPLAY);
  54. VertGroupA;
  55. Space; CenteredText('Normal text');
  56. Space; CenteredTextH('Highlighted text');
  57. Space; CenteredText3('3-dimensional text');
  58. Space; CenteredTextB('Bold text');
  59. Space; CenteredText('A _shortcut');
  60. Space; CenteredInteger(42);
  61. Space; HorizGroupAC;
  62. Space;
  63. ClippedText('This is a very long text which is truncated to fit with TRTX_CLIPPED.');
  64. Space; EndGroup;
  65. Space; EndGroup; EndProject;
  66. text_project := TR_OpenProject(App,@tritontags);
  67. IF text_project <> NIL THEN BEGIN
  68. TR_LockProject(Main_Project);
  69. close_me := FALSE;
  70. WHILE NOT close_me DO BEGIN
  71. TR_Wait(app,0);
  72. REPEAT
  73. trmsg := TR_GetMsg(app);
  74. IF trmsg <> NIL THEN BEGIN
  75. IF (trmsg^.trm_Project = text_project) THEN BEGIN
  76. CASE trmsg^.trm_Class OF
  77. TRMS_CLOSEWINDOW : close_me := True;
  78. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  79. ELSE
  80. END;
  81. END;
  82. TR_ReplyMsg(trmsg);
  83. END;
  84. UNTIL close_me OR (trmsg = NIL);
  85. END;
  86. TR_UnlockProject(Main_Project);
  87. TR_CloseProject(text_project);
  88. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  89. END;
  90. PROCEDURE do_groups;
  91. VAR
  92. close_me : BOOLEAN;
  93. trmsg : pTR_Message;
  94. groups_project : pTR_Project;
  95. BEGIN
  96. ProjectStart;
  97. WindowTitle('Groups'); WindowPosition(TRWP_CENTERDISPLAY); WindowUnderscore('~'); WindowID(1);
  98. HorizGroupA; Space; VertGroupA;
  99. Space;
  100. NamedFrameBox('TRGR_PROPSHARE (default)'); ObjectBackfillWin; VertGroupA; Space; HorizGroupC;
  101. Space;
  102. Button('Short',1);
  103. Space;
  104. Button('And much, much longer...',2);
  105. Space;
  106. EndGroup; Space; EndGroup;
  107. Space;
  108. NamedFrameBox('TRGR_EQUALSHARE'); ObjectBackfillWin; VertGroupA; Space; HorizGroupEC;
  109. Space;
  110. Button('Short',3);
  111. Space;
  112. Button('And much, much longer...',4);
  113. Space;
  114. EndGroup; Space; EndGroup;
  115. Space;
  116. NamedFrameBox('TRGR_PROPSPACES'); ObjectBackfillWin; VertGroupA; Space; HorizGroupSC;
  117. Space;
  118. Button('Short',5);
  119. Space;
  120. Button('And much, much longer...',6);
  121. Space;
  122. EndGroup; Space; EndGroup;
  123. Space;
  124. NamedFrameBox('TRGR_ARRAY'); ObjectBackfillWin; VertGroupA; Space; LineArray;
  125. BeginLine;
  126. Space;
  127. Button('Short',7);
  128. Space;
  129. Button('And much, much longer...',8);
  130. Space;
  131. EndLine;
  132. Space;
  133. BeginLine;
  134. Space;
  135. Button('Not so short',9);
  136. Space;
  137. Button('And a bit longer...',10);
  138. Space;
  139. EndLine;
  140. Space;
  141. BeginLineI;
  142. NamedSeparator('An independent line');
  143. EndLine;
  144. Space;
  145. BeginLine;
  146. Space;
  147. Button('foo bar',12);
  148. Space;
  149. Button('42',13);
  150. Space;
  151. EndLine;
  152. EndArray; Space; EndGroup;
  153. Space;
  154. EndGroup; Space; EndGroup;
  155. EndProject;
  156. groups_project := TR_OpenProject(App,@tritontags);
  157. IF groups_project <> NIL THEN BEGIN
  158. TR_LockProject(Main_Project);
  159. close_me := FALSE;
  160. WHILE NOT close_me DO BEGIN
  161. TR_Wait(app,0);
  162. REPEAT
  163. trmsg := TR_GetMsg(app);
  164. IF trmsg <> NIL THEN BEGIN
  165. IF (trmsg^.trm_Project = groups_project) THEN BEGIN
  166. CASE trmsg^.trm_Class OF
  167. TRMS_CLOSEWINDOW : close_me := True;
  168. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  169. ELSE
  170. END;
  171. END;
  172. TR_ReplyMsg(trmsg);
  173. END;
  174. UNTIL close_me OR (trmsg = NIL);
  175. END;
  176. TR_UnlockProject(Main_Project);
  177. TR_CloseProject(groups_project);
  178. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  179. END;
  180. PROCEDURE do_menus;
  181. VAR
  182. close_me : BOOLEAN;
  183. trmsg : pTR_Message;
  184. menus_project : pTR_Project;
  185. BEGIN
  186. ProjectStart;
  187. SetTRTag(TRWI_ID, 2);
  188. SetTRTag(TRWI_Title, 'Menus');
  189. SetTRTag(TRMN_Title, 'A menu');
  190. SetTRTag(TRMN_Item, 'A simple item'); SetTRTag(TRAT_ID, 1);
  191. SetTRTag(TRMN_Item, 'Another item'); SetTRTag(TRAT_ID, 2);
  192. SetTRTag(TRMN_Item, 'And now... a barlabel'); SetTRTag(TRAT_ID, 3);
  193. SetTRTag(TRMN_Item, TRMN_BARLABEL);
  194. SetTRTag(TRMN_Item, '1_An item with a shortcut'); SetTRTag(TRAT_ID, 4);
  195. SetTRTag(TRMN_Item, '2_Another one'); SetTRTag(TRAT_ID, 5);
  196. SetTRTag(TRMN_Item, '3_And number 3'); SetTRTag(TRAT_ID, 6);
  197. SetTRTag(TRMN_Item, TRMN_BARLABEL);
  198. SetTRTag(TRMN_Item, '_F1_And under OS3.0: Extended command keys'); SetTRTag(TRAT_ID, 6);
  199. SetTRTag(TRMN_Item, '_F2_Another one'); SetTRTag(TRAT_ID, 7);
  200. SetTRTag(TRMN_Item, TRMN_BARLABEL);
  201. SetTRTag(TRMN_Item, 'How do you like submenus?');
  202. SetTRTag(TRMN_Sub, 'G_Great!'); SetTRTag(TRAT_ID, 8);
  203. SetTRTag(TRMN_Sub, 'F_Fine'); SetTRTag(TRAT_ID, 9);
  204. SetTRTag(TRMN_Sub, 'D_Don''t know'); SetTRTag(TRAT_ID, 10);
  205. SetTRTag(TRMN_Sub, 'N_Not so fine'); SetTRTag(TRAT_ID, 11);
  206. SetTRTag(TRMN_Sub, 'P_Puke!'); SetTRTag(TRAT_ID, 12);
  207. SetTRTag(TRMN_Title, 'Another menu');
  208. SetTRTag(TRMN_Item, 'This item is ghosted'); SetTRTag(TRMN_Flags, TRMF_DISABLED); SetTRTag(TRAT_ID, 100);
  209. SetTRTag(TRMN_Item, TRMN_BARLABEL);
  210. SetTRTag(TRMN_Item, 'Item 1 is checked'); SetTRTag(TRMN_Flags, TRMF_CHECKED); SetTRTag(TRAT_ID, 13);
  211. SetTRTag(TRMN_Item, 'Item 2 can be checked, too'); SetTRTag(TRMN_Flags, TRMF_CHECKIT); SetTRTag(TRAT_ID, 14);
  212. SetTRTag(TRMN_Title, 'Ghosted menu');
  213. SetTRTag(TRMN_Flags, TRMF_DISABLED);
  214. SetTRTag(TRMN_Item, 'Item 1'); SetTRTag(TRAT_ID, 101);
  215. SetTRTag(TRMN_Item, 'Item 2'); SetTRTag(TRAT_ID, 102);
  216. EndProject;
  217. menus_project := TR_OpenProject(App,@tritontags);
  218. IF menus_project <> NIL THEN BEGIN
  219. TR_LockProject(Main_Project);
  220. close_me := FALSE;
  221. WHILE NOT close_me DO BEGIN
  222. TR_Wait(app,0);
  223. REPEAT
  224. trmsg := TR_GetMsg(app);
  225. IF trmsg <> NIL THEN BEGIN
  226. IF (trmsg^.trm_Project = menus_project) THEN BEGIN
  227. CASE trmsg^.trm_Class OF
  228. TRMS_CLOSEWINDOW : close_me := True;
  229. TRMS_ERROR : WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  230. TRMS_NEWVALUE : writeln('The new value of object ',trmsg^.trm_ID,' is ',trmsg^.trm_Data);
  231. TRMS_ACTION : writeln('Object ',trmsg^.trm_ID,' has triggered an action.');
  232. ELSE
  233. END;
  234. END;
  235. TR_ReplyMsg(trmsg);
  236. END;
  237. UNTIL close_me OR (trmsg = NIL);
  238. END;
  239. TR_UnlockProject(Main_Project);
  240. TR_CloseProject(menus_project);
  241. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  242. END;
  243. PROCEDURE do_gadgets;
  244. CONST
  245. cycle_entries : ARRAY [0..10] OF PChar = (
  246. 'Entry 0',
  247. '1',
  248. '2',
  249. '3',
  250. '4',
  251. '5',
  252. '6',
  253. '7',
  254. '8',
  255. '9',
  256. NIL);
  257. mx_entries : ARRAY [0..3] OF PChar = (
  258. 'Choice 0',
  259. 'Choice 1',
  260. 'Choice 2',
  261. NIL);
  262. VAR
  263. close_me : BOOLEAN;
  264. trmsg : pTR_Message;
  265. gadgets_project : pTR_Project;
  266. BEGIN
  267. ProjectStart;
  268. SetTRTag(TRWI_ID, 3);
  269. SetTRTag(TRWI_Title,'Gadgets');
  270. SetTRTag(TRWI_Position,TRWP_CENTERDISPLAY);
  271. SetTRTag(TRGR_Vert, TRGR_PROPSHARE OR TRGR_ALIGN);
  272. SetTRTag(TROB_Space, NULL);
  273. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_CENTER);
  274. SetTRTag(TROB_Space, NULL);
  275. SetTRTag(TROB_Line, TROF_HORIZ);
  276. SetTRTag(TROB_Space, NULL);
  277. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, 'GadTools'); SetTRTag(TRAT_Flags, TRTX_TITLE);
  278. SetTRTag(TROB_Space, NULL);
  279. SetTRTag(TROB_Line, TROF_HORIZ);
  280. SetTRTag(TROB_Space, NULL);
  281. SetTRTag(TRGR_End, NULL);
  282. SetTRTag(TROB_Space, NULL);
  283. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  284. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  285. SetTRTag(TROB_Space, NULL);
  286. SetTRTag(TROB_CheckBox, NULL);
  287. SetTRTag(TRAT_ID, 1);
  288. SetTRTag(TRAT_Value, true);
  289. SetTRTag(TRGR_End, NULL);
  290. SetTRTag(TROB_Space, NULL);
  291. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  292. SetTRTag(TROB_Text, NULL);
  293. SetTRTag(TRAT_Text, '_Checkbox');
  294. SetTRTag(TRAT_ID, 1);
  295. SetTRTag(TROB_Space, NULL);
  296. SetTRTag(TRGR_End, NULL);
  297. SetTRTag(TRGR_End, NULL);
  298. SetTRTag(TROB_Space, NULL);
  299. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  300. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  301. SetTRTag(TROB_Space, NULL);
  302. SetTRTag(TROB_Slider, NULL);
  303. SetTRTag(TRAT_ID, 4);
  304. SetTRTag(TRSL_Min, 1);
  305. SetTRTag(TRSL_Max, 3);
  306. SetTRTag(TRAT_Value, 1);
  307. SetTRTag(TRGR_End, NULL);
  308. SetTRTag(TROB_Space, NULL);
  309. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  310. SetTRTag(TROB_Text, NULL);
  311. SetTRTag(TRAT_Text, '_Slider: ');
  312. SetTRTag(TRAT_ID, 4);
  313. SetTRTag(TROB_Text, NULL);
  314. SetTRTag(TRAT_Value, 1);
  315. SetTRTag(TRAT_ID, 4);
  316. SetTRTag(TRAT_MinWidth, 3);
  317. SetTRTag(TROB_Space, NULL);
  318. SetTRTag(TRGR_End, NULL);
  319. SetTRTag(TRGR_End, NULL);
  320. SetTRTag(TROB_Space, NULL);
  321. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  322. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  323. SetTRTag(TROB_Space, NULL);
  324. SetTRTag(TROB_Scroller, NULL);
  325. SetTRTag(TRAT_ID, 5);
  326. SetTRTag(TRAT_Value, 2);
  327. SetTRTag(TRSC_Total, 7);
  328. SetTRTag(TRSC_Visible, 3);
  329. SetTRTag(TRGR_End, NULL);
  330. SetTRTag(TROB_Space, NULL);
  331. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  332. SetTRTag(TROB_Text, NULL);
  333. SetTRTag(TRAT_Text, 'Sc_roller: ');
  334. SetTRTag(TRAT_ID, 5);
  335. SetTRTag(TROB_Text, NULL);
  336. SetTRTag(TRAT_Value, 2);
  337. SetTRTag(TRAT_ID, 5);
  338. SetTRTag(TRAT_MinWidth, 3);
  339. SetTRTag(TROB_Space, NULL);
  340. SetTRTag(TRGR_End, NULL);
  341. SetTRTag(TRGR_End, NULL);
  342. SetTRTag(TROB_Space, NULL);
  343. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  344. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  345. SetTRTag(TROB_Space, NULL);
  346. SetTRTag(TROB_Palette, NULL);
  347. SetTRTag(TRAT_ID, 3);
  348. SetTRTag(TRAT_Value, 1);
  349. SetTRTag(TRGR_End, NULL);
  350. SetTRTag(TROB_Space, NULL);
  351. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  352. SetTRTag(TROB_Text, NULL);
  353. SetTRTag(TRAT_Text, '_Palette: ');
  354. SetTRTag(TRAT_ID, 3);
  355. SetTRTag(TROB_Text, NULL);
  356. SetTRTag(TRAT_Value, 1);
  357. SetTRTag(TRAT_ID, 3);
  358. SetTRTag(TRAT_MinWidth, 3);
  359. SetTRTag(TROB_Space, NULL);
  360. SetTRTag(TRGR_End, NULL);
  361. SetTRTag(TRGR_End, NULL);
  362. SetTRTag(TROB_Space, NULL);
  363. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  364. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  365. SetTRTag(TROB_Space, NULL);
  366. SetTRTag(TROB_Cycle, @cycle_entries);
  367. SetTRTag(TRAT_ID, 6);
  368. SetTRTag(TRAT_Value, 4);
  369. SetTRTag(TRGR_End, NULL);
  370. SetTRTag(TROB_Space, NULL);
  371. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  372. SetTRTag(TROB_Text, NULL);
  373. SetTRTag(TRAT_Text, 'C_ycle: ');
  374. SetTRTag(TRAT_ID, 6);
  375. SetTRTag(TROB_Text, NULL);
  376. SetTRTag(TRAT_Value, 4);
  377. SetTRTag(TRAT_ID, 6);
  378. SetTRTag(TRAT_MinWidth, 3);
  379. SetTRTag(TROB_Space, NULL);
  380. SetTRTag(TRGR_End, NULL);
  381. SetTRTag(TRGR_End, NULL);
  382. SetTRTag(TROB_Space, NULL);
  383. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  384. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  385. SetTRTag(TROB_Space, NULL);
  386. SetTRTag(TROB_Cycle, @mx_entries);
  387. SetTRTag(TRAT_ID, 13);
  388. SetTRTag(TRAT_Value, 1);
  389. SetTRTag(TRAT_Flags, TRCY_MX);
  390. SetTRTag(TRGR_End, NULL);
  391. SetTRTag(TROB_Space, NULL);
  392. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  393. SetTRTag(TROB_Text, NULL);
  394. SetTRTag(TRAT_Text, '_MX: ');
  395. SetTRTag(TRAT_ID, 13);
  396. SetTRTag(TROB_Text, NULL);
  397. SetTRTag(TRAT_Value, 1);
  398. SetTRTag(TRAT_ID, 13);
  399. SetTRTag(TRAT_MinWidth, 3);
  400. SetTRTag(TROB_Space, NULL);
  401. SetTRTag(TRGR_End, NULL);
  402. SetTRTag(TRGR_End, NULL);
  403. SetTRTag(TROB_Space, NULL);
  404. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  405. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  406. SetTRTag(TROB_Space, NULL);
  407. SetTRTag(TROB_String, 'foo bar');
  408. SetTRTag(TRAT_ID, 7);
  409. SetTRTag(TRGR_End, NULL);
  410. SetTRTag(TROB_Space, NULL);
  411. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  412. SetTRTag(TROB_Text, NULL);
  413. SetTRTag(TRAT_Text, 'S_tring');
  414. SetTRTag(TRAT_ID, 7);
  415. SetTRTag(TROB_Space, NULL);
  416. SetTRTag(TRGR_End, NULL);
  417. SetTRTag(TRGR_End, NULL);
  418. SetTRTag(TROB_Space, NULL);
  419. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  420. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  421. SetTRTag(TROB_Space, NULL);
  422. SetTRTag(TROB_String, '');
  423. SetTRTag(TRAT_Flags, TRST_INVISIBLE);
  424. SetTRTag(TRAT_ID, 15);
  425. SetTRTag(TRGR_End, NULL);
  426. SetTRTag(TROB_Space, NULL);
  427. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  428. SetTRTag(TROB_Text, NULL);
  429. SetTRTag(TRAT_Text, 'Pass_word');
  430. SetTRTag(TRAT_ID, 15);
  431. SetTRTag(TROB_Space, NULL);
  432. SetTRTag(TRGR_End, NULL);
  433. SetTRTag(TRGR_End, NULL);
  434. SetTRTag(TROB_Space, NULL);
  435. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  436. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  437. SetTRTag(TROB_Space, NULL);
  438. SetTRTag(TROB_String, '0.42');
  439. SetTRTag(TRAT_Flags, TRST_FLOAT);
  440. SetTRTag(TRST_Filter, '01234567.,');
  441. SetTRTag(TRAT_ID, 16);
  442. SetTRTag(TRGR_End, NULL);
  443. SetTRTag(TROB_Space, NULL);
  444. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  445. SetTRTag(TROB_Text, NULL);
  446. SetTRTag(TRAT_Text, '_Octal float');
  447. SetTRTag(TRAT_ID, 16);
  448. SetTRTag(TROB_Space, NULL);
  449. SetTRTag(TRGR_End, NULL);
  450. SetTRTag(TRGR_End, NULL);
  451. SetTRTag(TROB_Space, NULL);
  452. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_CENTER);
  453. SetTRTag(TROB_Space, NULL);
  454. SetTRTag(TROB_Line, TROF_HORIZ);
  455. SetTRTag(TROB_Space, NULL);
  456. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, 'BOOPSI'); SetTRTag(TRAT_Flags, TRTX_TITLE);
  457. SetTRTag(TROB_Space, NULL);
  458. SetTRTag(TROB_Line, TROF_HORIZ);
  459. SetTRTag(TROB_Space, NULL);
  460. SetTRTag(TRGR_End, NULL);
  461. SetTRTag(TROB_Space, NULL);
  462. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  463. SetTRTag(TROB_Space, NULL);
  464. SetTRTag(TROB_Button, NULL); SetTRTag(TRAT_ID, 2); SetTRTag(TRAT_Text, '_Button');
  465. SetTRTag(TROB_Space, NULL);
  466. SetTRTag(TRGR_End, NULL);
  467. SetTRTag(TROB_Space, NULL);
  468. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  469. SetTRTag(TROB_Space, NULL);
  470. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, '_File:'); SetTRTag(TRAT_ID, 10);
  471. SetTRTag(TROB_Space, NULL);
  472. SetTRTag(TROB_Button, TRBT_GETFILE); SetTRTag(TRAT_ID, 10); SetTRTag(TRAT_Text, '');
  473. SetTRTag(TROB_Space, NULL);
  474. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, '_Drawer:'); SetTRTag(TRAT_ID, 11);
  475. SetTRTag(TROB_Space, NULL);
  476. SetTRTag(TROB_Button, TRBT_GETDRAWER); SetTRTag(TRAT_ID, 11); SetTRTag(TRAT_Text, '');
  477. SetTRTag(TROB_Space, NULL);
  478. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, '_Entry:'); SetTRTag(TRAT_ID, 12);
  479. SetTRTag(TROB_Space, NULL);
  480. SetTRTag(TROB_Button, TRBT_GETENTRY); SetTRTag(TRAT_ID, 12); SetTRTag(TRAT_Text, '');
  481. SetTRTag(TROB_Space, NULL);
  482. SetTRTag(TRGR_End, NULL);
  483. SetTRTag(TROB_Space, NULL);
  484. SetTRTag(TRGR_End, NULL);
  485. EndProject;
  486. gadgets_project := TR_OpenProject(App,@tritontags);
  487. IF gadgets_project <> NIL THEN BEGIN
  488. TR_LockProject(Main_Project);
  489. close_me := FALSE;
  490. WHILE NOT close_me DO BEGIN
  491. TR_Wait(app,0);
  492. REPEAT
  493. trmsg := TR_GetMsg(app);
  494. IF trmsg <> NIL THEN BEGIN
  495. IF (trmsg^.trm_Project = gadgets_project) THEN BEGIN
  496. CASE trmsg^.trm_Class OF
  497. TRMS_CLOSEWINDOW : close_me := True;
  498. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  499. ELSE
  500. END;
  501. END;
  502. TR_ReplyMsg(trmsg);
  503. END;
  504. UNTIL close_me OR (trmsg = NIL);
  505. END;
  506. TR_UnlockProject(Main_Project);
  507. TR_CloseProject(gadgets_project);
  508. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  509. END;
  510. PROCEDURE do_backfill;
  511. VAR
  512. close_me : BOOLEAN;
  513. trmsg : pTR_Message;
  514. backfill_project : pTR_Project;
  515. BEGIN
  516. ProjectStart;
  517. WindowID(7); WindowTitle('Backfill'); WindowPosition(TRWP_CENTERDISPLAY);
  518. VertGroupA;
  519. Space; CenteredText('Each window and');
  520. SpaceS; CenteredText('FrameBox can have');
  521. SpaceS; CenteredText('one of the following');
  522. SpaceS; CenteredText('backfill patterns');
  523. Space; HorizGroupA;
  524. Space; GroupBox; ObjectBackfillS; SpaceB;
  525. Space; GroupBox; ObjectBackfillSA; SpaceB;
  526. Space; GroupBox; ObjectBackfillSF; SpaceB;
  527. Space; EndGroup;
  528. Space; HorizGroupA;
  529. Space; GroupBox; ObjectBackfillSB; SpaceB;
  530. Space; GroupBox; ObjectBackfillA; SpaceB;
  531. Space; GroupBox; ObjectBackfillAF; SpaceB;
  532. Space; EndGroup;
  533. Space; HorizGroupA;
  534. Space; GroupBox; ObjectBackfillAB; SpaceB;
  535. Space; GroupBox; ObjectBackfillF; SpaceB;
  536. Space; GroupBox; ObjectBackfillFB; SpaceB;
  537. Space; EndGroup;
  538. Space; EndGroup; EndProject;
  539. backfill_project := TR_OpenProject(App,@tritontags);
  540. IF backfill_project <> NIL THEN BEGIN
  541. TR_LockProject(Main_Project);
  542. close_me := FALSE;
  543. WHILE NOT close_me DO BEGIN
  544. TR_Wait(app,0);
  545. REPEAT
  546. trmsg := TR_GetMsg(app);
  547. IF trmsg <> NIL THEN BEGIN
  548. IF (trmsg^.trm_Project = backfill_project) THEN BEGIN
  549. CASE trmsg^.trm_Class OF
  550. TRMS_CLOSEWINDOW : close_me := True;
  551. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  552. ELSE
  553. END;
  554. END;
  555. TR_ReplyMsg(trmsg);
  556. END;
  557. UNTIL close_me OR (trmsg = NIL);
  558. END;
  559. TR_UnlockProject(Main_Project);
  560. TR_CloseProject(backfill_project);
  561. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  562. END;
  563. PROCEDURE do_disabling;
  564. VAR
  565. close_me : BOOLEAN;
  566. trmsg : pTR_Message;
  567. disabling_project : pTR_Project;
  568. BEGIN
  569. ProjectStart;
  570. SetTRTag(TRWI_ID,4); SetTRTag(TRWI_Title,'Disabling'); SetTRTag(TRWI_Position,TRWP_CENTERDISPLAY);
  571. SetTRTag(TRGR_Vert, TRGR_PROPSHARE OR TRGR_ALIGN);
  572. SetTRTag(TROB_Space, NULL);
  573. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  574. SetTRTag(TROB_Space, NULL);
  575. SetTRTag(TROB_CheckBox, NULL); SetTRTag(TRAT_ID, 1); SetTRTag(TRAT_Value, true);
  576. SetTRTag(TROB_Space, NULL);
  577. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, '_Disabled'); SetTRTag(TRAT_ID, 1);
  578. SetTRTag(TRGR_Horiz, TRGR_PROPSPACES);
  579. SetTRTag(TROB_Space, NULL);
  580. SetTRTag(TRGR_End, NULL);
  581. SetTRTag(TRGR_End, NULL);
  582. SetTRTag(TROB_Space, NULL);
  583. SetTRTag(TRGR_Horiz, TRGR_EQUALSHARE OR TRGR_CENTER);
  584. SetTRTag(TROB_Space, NULL);
  585. SetTRTag(TROB_Line, TROF_HORIZ);
  586. SetTRTag(TROB_Space, NULL);
  587. SetTRTag(TRGR_End, NULL);
  588. SetTRTag(TROB_Space, NULL);
  589. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  590. SetTRTag(TROB_Space, NULL);
  591. SetTRTag(TROB_CheckBox, NULL); SetTRTag(TRAT_Value, true); SetTRTag(TRAT_ID, 2); SetTRTag(TRAT_Disabled, true);
  592. SetTRTag(TROB_Space, NULL);
  593. SetTRTag(TROB_Text, NULL); SetTRTag(TRAT_Text, '_Checkbox'); SetTRTag(TRAT_ID, 2);
  594. SetTRTag(TROB_Space, NULL);
  595. SetTRTag(TRGR_End, NULL);
  596. SetTRTag(TROB_Space, NULL);
  597. SetTRTag(TRGR_Horiz, TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  598. SetTRTag(TROB_Space, NULL);
  599. SetTRTag(TROB_Button, NULL); SetTRTag(TRAT_Text, '_Button'); SetTRTag(TRAT_ID, 3); SetTRTag(TRAT_Disabled, true);
  600. SetTRTag(TROB_Space, NULL);
  601. SetTRTag(TRGR_End, NULL);
  602. SetTRTag(TROB_Space, NULL);
  603. SetTRTag(TRGR_End, NULL);
  604. EndProject;
  605. disabling_project := TR_OpenProject(App,@tritontags);
  606. IF disabling_project <> NIL THEN BEGIN
  607. TR_LockProject(Main_Project);
  608. close_me := FALSE;
  609. WHILE NOT close_me DO BEGIN
  610. TR_Wait(app,0);
  611. REPEAT
  612. trmsg := TR_GetMsg(app);
  613. IF trmsg <> NIL THEN BEGIN
  614. IF (trmsg^.trm_Project = disabling_project) THEN BEGIN
  615. CASE trmsg^.trm_Class OF
  616. TRMS_CLOSEWINDOW : close_me := True;
  617. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  618. TRMS_NEWVALUE: BEGIN
  619. IF trmsg^.trm_ID =1 THEN BEGIN
  620. TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg^.trm_Data);
  621. TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg^.trm_Data);
  622. END;
  623. END;
  624. ELSE
  625. END;
  626. END;
  627. TR_ReplyMsg(trmsg);
  628. END;
  629. UNTIL close_me OR (trmsg = NIL);
  630. END;
  631. TR_UnlockProject(Main_Project);
  632. TR_CloseProject(disabling_project);
  633. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  634. END;
  635. PROCEDURE do_notification;
  636. VAR
  637. close_me : BOOLEAN;
  638. trmsg : pTR_Message;
  639. notification_project : pTR_Project;
  640. BEGIN
  641. ProjectStart;
  642. WindowID(6); WindowTitle('Notification'); WindowPosition(TRWP_CENTERDISPLAY);
  643. VertGroupA;
  644. Space;
  645. NamedSeparatorI('_Checkmarks',1);
  646. Space;
  647. HorizGroupSAC;
  648. Space; CheckBox(1);
  649. Space; CheckBox(1);
  650. Space; CheckBox(1);
  651. Space; EndGroup;
  652. Space;
  653. HorizGroupSAC;
  654. Space; CheckBox(1);
  655. Space; CheckBox(1);
  656. Space; CheckBox(1);
  657. Space; EndGroup;
  658. Space;
  659. HorizGroupSAC;
  660. Space; CheckBox(1);
  661. Space; CheckBox(1);
  662. Space; CheckBox(1);
  663. Space; EndGroup;
  664. Space;
  665. NamedSeparatorI('_Slider and Progress indicator',2);
  666. Space;
  667. HorizGroupAC;
  668. Space;
  669. SliderGadget(0,10,8,2);
  670. Space;
  671. Integer3(8);SetTRTag(TRAT_ID,2);SetTRTag(TRAT_MinWidth,3);
  672. Space;
  673. EndGroup;
  674. Space;
  675. HorizGroupAC;
  676. Space;
  677. TextN('0%');
  678. Space;
  679. Progress(10,8,2);
  680. Space;
  681. TextN('100%');
  682. Space;
  683. EndGroup;
  684. Space;
  685. EndGroup; EndProject;
  686. notification_project := TR_OpenProject(App,@tritontags);
  687. IF notification_project <> NIL THEN BEGIN
  688. TR_LockProject(Main_Project);
  689. close_me := FALSE;
  690. WHILE NOT close_me DO BEGIN
  691. TR_Wait(app,0);
  692. REPEAT
  693. trmsg := TR_GetMsg(app);
  694. IF trmsg <> NIL THEN BEGIN
  695. IF (trmsg^.trm_Project = notification_project) THEN BEGIN
  696. CASE trmsg^.trm_Class OF
  697. TRMS_CLOSEWINDOW : close_me := True;
  698. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  699. ELSE
  700. END;
  701. END;
  702. TR_ReplyMsg(trmsg);
  703. END;
  704. UNTIL close_me OR (trmsg = NIL);
  705. END;
  706. TR_UnlockProject(Main_Project);
  707. TR_CloseProject(notification_project);
  708. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  709. END;
  710. PROCEDURE do_lists;
  711. CONST
  712. LVList1Strings : ARRAY[0..18] OF PChar = (
  713. 'This is a' ,
  714. 'READ ONLY' ,
  715. 'Listview' ,
  716. 'gadget using' ,
  717. 'the fixed-' ,
  718. 'width font.' ,
  719. '' ,
  720. 'This window' ,
  721. 'will remember' ,
  722. 'its position' ,
  723. 'even without' ,
  724. 'the Preferences' ,
  725. 'system, when' ,
  726. 'you reopen it,' ,
  727. 'because it has' ,
  728. 'got a dimension' ,
  729. 'structure' ,
  730. 'attached' ,
  731. 'to it.');
  732. LVList2Strings : ARRAY [0..8] OF PChar = (
  733. 'This is a' ,
  734. 'SELECT' ,
  735. 'Listview' ,
  736. 'gadget.' ,
  737. 'Use the' ,
  738. 'numeric' ,
  739. 'key pad to' ,
  740. 'move' ,
  741. 'around.');
  742. LVList3Strings : ARRAY [0..12] OF PChar = (
  743. 'This is a' ,
  744. 'SHOW' ,
  745. 'SELECTED' ,
  746. 'Listview' ,
  747. 'gadget.' ,
  748. 'This list' ,
  749. 'is a bit' ,
  750. 'longer, so' ,
  751. 'that you' ,
  752. 'can try the' ,
  753. 'other' ,
  754. 'keyboard' ,
  755. 'shortcuts.');
  756. VAR
  757. close_me : BOOLEAN;
  758. trmsg : pTR_Message;
  759. lists_project : pTR_Project;
  760. i : Longint;
  761. LVList1,
  762. LVList2,
  763. LVList3 : pList;
  764. MyNode : pNode;
  765. BEGIN
  766. New(LVList1);
  767. NewList(LVList1);
  768. FOR i := 0 TO 18 DO BEGIN
  769. New(MyNode);
  770. MyNode^.ln_Name := LVList1Strings[i];
  771. AddTail(LVList1,MyNode);
  772. END;
  773. New(LVList2);
  774. NewList(LVList2);
  775. FOR i := 0 TO 8 DO BEGIN
  776. New(MyNode);
  777. MyNode^.ln_Name := LVList2Strings[i];
  778. AddTail(LVList2,MyNode);
  779. END;
  780. New(LVList3);
  781. NewList(LVList3);
  782. FOR i := 0 TO 12 DO BEGIN
  783. New(MyNode);
  784. MyNode^.ln_Name := LVList3Strings[i];
  785. AddTail(LVList3,MyNode);
  786. END;
  787. ProjectStart;
  788. WindowID(9); WindowTitle('Lists'); WindowPosition(TRWP_CENTERDISPLAY);
  789. HorizGroupA; Space; VertGroupA;
  790. Space;
  791. NamedSeparatorIN('_Read only',1);
  792. Space;
  793. FWListROCN(LVList1,1,0);
  794. Space;
  795. NamedSeparatorIN('_Select',2);
  796. Space;
  797. ListSelC(LVList2,2,0);
  798. Space;
  799. NamedSeparatorIN('S_how selected',3);
  800. Space;
  801. ListSSN(LVList3,3,0,1);
  802. Space;
  803. EndGroup; Space; EndGroup;
  804. EndProject;
  805. lists_project := TR_OpenProject(App,@tritontags);
  806. IF lists_project <> NIL THEN BEGIN
  807. TR_LockProject(Main_Project);
  808. close_me := FALSE;
  809. WHILE NOT close_me DO BEGIN
  810. TR_Wait(app,0);
  811. REPEAT
  812. trmsg := TR_GetMsg(app);
  813. IF trmsg <> NIL THEN BEGIN
  814. IF (trmsg^.trm_Project = lists_project) THEN BEGIN
  815. CASE trmsg^.trm_Class OF
  816. TRMS_CLOSEWINDOW : close_me := True;
  817. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  818. ELSE
  819. END;
  820. END;
  821. TR_ReplyMsg(trmsg);
  822. END;
  823. UNTIL close_me OR (trmsg = NIL);
  824. END;
  825. TR_UnlockProject(Main_Project);
  826. TR_CloseProject(lists_project);
  827. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  828. END;
  829. PROCEDURE do_appwindow;
  830. VAR
  831. close_me : BOOLEAN;
  832. trmsg : pTR_Message;
  833. appwindow_project : pTR_Project;
  834. chararray : ARRAY [0..100] OF Char;
  835. dirname : PChar;
  836. temp : BOOLEAN;
  837. reqstr : STRING[200];
  838. BEGIN
  839. dirname := @chararray;
  840. ProjectStart;
  841. WindowID(8); WindowTitle('AppWindow'); WindowPosition(TRWP_CENTERDISPLAY);
  842. VertGroupA;
  843. Space; CenteredText('This window is an application window.');
  844. SpaceS; CenteredText('Drop icons into the window or into');
  845. SpaceS; CenteredText('the icon drop boxes below and see');
  846. SpaceS; CenteredText('what will happen...');
  847. Space; HorizGroupA;
  848. Space; DropBox(1);
  849. Space; DropBox(2);
  850. Space; EndGroup;
  851. Space; EndGroup; EndProject;
  852. appwindow_project := TR_OpenProject(App,@tritontags);
  853. IF appwindow_project <> NIL THEN BEGIN
  854. TR_LockProject(Main_Project);
  855. close_me := FALSE;
  856. WHILE NOT close_me DO BEGIN
  857. TR_Wait(app,0);
  858. REPEAT
  859. trmsg := TR_GetMsg(app);
  860. IF trmsg <> NIL THEN BEGIN
  861. IF (trmsg^.trm_Project = appwindow_project) THEN BEGIN
  862. CASE trmsg^.trm_Class OF
  863. TRMS_CLOSEWINDOW : close_me := True;
  864. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  865. TRMS_ICONDROPPED: BEGIN
  866. dirname[0] := #0;
  867. temp := NameFromLock(Longint(pAppMessage(trmsg^.trm_Data)^.am_ArgList^[1].wa_Lock),dirname,100);
  868. temp := AddPart(dirname,(pAppMessage(trmsg^.trm_Data)^.am_ArgList^[1].wa_Name),100);
  869. case trmsg^.trm_ID of
  870. 1: reqstr := 'Icon(s) dropped into the left box.' + #9 + 'Name of first dropped icon:' + #10 + '%3' + strpas(dirname);
  871. 2: reqstr := 'Icon(s) dropped into the right box.' + #9 + 'Name of first dropped icon:' + #10 + '%3' + strpas(dirname);
  872. ELSE reqstr := 'Icon(s) dropped into the window.' + #9 + 'Name of first dropped icon:' + #10 + '%3' + strpas(dirname);
  873. END;
  874. TR_EasyRequestTags(App,reqstr,'_Ok',[
  875. TREZ_LockProject, appwindow_project,
  876. TREZ_Title,'AppWindow report',
  877. TREZ_Activate,1,
  878. TAG_END]);
  879. END;
  880. ELSE
  881. END;
  882. END;
  883. TR_ReplyMsg(trmsg);
  884. END;
  885. UNTIL close_me OR (trmsg = NIL);
  886. END;
  887. TR_UnlockProject(Main_Project);
  888. TR_CloseProject(appwindow_project);
  889. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  890. END;
  891. PROCEDURE Do_Main;
  892. VAR
  893. trmsg : pTR_Message;
  894. quit : BOOLEAN;
  895. reqstr : string[255];
  896. helpstring : PChar;
  897. abouttags : Pointer;
  898. BEGIN
  899. ProjectStart;
  900. BeginRequester('About...',TRWP_CENTERDISPLAY);
  901. VertGroupA; Space; CenteredText3('Triton Demo 2.0');
  902. SpaceS; CenteredText('© 1993-1996 by Stefan Zeiger');
  903. Space; HorizSeparator;
  904. Space; CenteredText('This program is using the');
  905. SpaceS; CenteredText('Triton GUI creation system');
  906. SpaceS; CenteredText('which is © by Stefan Zeiger');
  907. Space; EndGroup;
  908. BeginRequesterGads;
  909. CenteredButtonRE('_Ok',1);
  910. EndRequester;
  911. abouttags := CloneTagItems(@tritontags);
  912. ProjectStart;
  913. WindowID(10); WindowTitle('Triton Demo');
  914. WindowPosition(TRWP_CENTERDISPLAY);
  915. WindowFlags(TRWF_HELP);
  916. QuickHelpOn(1);
  917. BeginMenu('Project');
  918. MenuItem('?_About...',101);
  919. ItemBarlabel;
  920. MenuItem('H_Help',102);
  921. MenuItemCC('I_QuickHelp',104);
  922. ItemBarlabel;
  923. MenuItem('Q_Quit',103);
  924. VertGroupA;
  925. Space; CenteredText3('T · r · i · t · o · n');
  926. Space; CenteredText3('The object oriented GUI creation system');
  927. Space; CenteredText('Demo program for release 2.0');
  928. Space; CenteredText('Written and © 1993-1997 by Stefan Zeiger');
  929. Space; CenteredText('This demo made in FPC Pascal');
  930. Space; HorizSeparator;
  931. Space; HorizGroupEA;
  932. Space; Button('_Gadgets',1); QuickHelp('Show some fancy gadgets');
  933. Space; Button('G_roups',2); QuickHelp('Groupies?'+#10+'Huh huh...');
  934. Space; Button('_Text',3); QuickHelp('You know what ''text'' means, huh?');
  935. Space; EndGroup;
  936. Space; HorizGroupEA;
  937. Space; Button('_Connections',4); QuickHelp('So you''re super-connected now...');
  938. Space; Button('_Backfill',5); QuickHelp('United colors of Triton');
  939. Space; Button('_Disabling',6); QuickHelp('To be or not to be');
  940. Space; EndGroup;
  941. Space; HorizGroupEA;
  942. Space; Button('_AppWindow',7); QuickHelp('Demonstrate AppWindow feature');
  943. Space; Button('_Menus',8); QuickHelp('A fancy pull-down menu');
  944. Space; Button('_Lists',9); QuickHelp('· 4 eggs'+#10+'· 1/2lbs bread'+#10+'· 1l milk'+#9+'%3PS: Don''t be late');
  945. Space; EndGroup;
  946. Space; EndGroup; EndProject;
  947. Main_Project := TR_OpenProject(App,@tritontags);
  948. IF Main_Project <> NIL THEN BEGIN
  949. quit := FALSE;
  950. WHILE NOT quit DO BEGIN
  951. TR_Wait(app,0);
  952. REPEAT
  953. trmsg := TR_GetMsg(app);
  954. IF trmsg <> NIL THEN BEGIN
  955. IF (trmsg^.trm_Project = Main_Project) THEN BEGIN
  956. CASE trmsg^.trm_Class OF
  957. TRMS_CLOSEWINDOW : quit := True;
  958. TRMS_NEWVALUE : IF (trmsg^.trm_ID=104) THEN TR_SetAttribute(Main_Project,0,TRWI_QuickHelp,trmsg^.trm_Data);
  959. TRMS_ACTION : BEGIN
  960. CASE trmsg^.trm_ID OF
  961. 1: do_gadgets;
  962. 2: do_groups;
  963. 3: do_text;
  964. 4: do_notification;
  965. 5: do_backfill;
  966. 6: do_disabling;
  967. 7: do_appwindow;
  968. 8: do_menus;
  969. 9: do_lists;
  970. 101: TR_AutoRequest(App,Main_Project,abouttags);
  971. 102: begin
  972. TR_EasyRequestTags(App,'To get help, move the mouse pointer over' + #10 +
  973. 'any gadget or menu item and press <Help>'+#10+
  974. 'or turn on QuickHelp before.','_Ok',[
  975. TREZ_LockProject,Main_Project,
  976. TREZ_Title,'Triton help',
  977. TAG_END]);
  978. end;
  979. 103: quit := True;
  980. END;
  981. END;
  982. TRMS_HELP : BEGIN
  983. helpstring := PChar(TR_GetAttribute(Main_Project,trmsg^.trm_ID,TRDO_QuickHelpString));
  984. IF helpstring <> NIL THEN BEGIN
  985. reqstr := 'Help for object ' + IntToStr(trmsg^.trm_ID) + ':' + #10 + '%h' + strpas(helpstring);
  986. END ELSE BEGIN
  987. reqstr := 'No help available for object ' + IntToStr(trmsg^.trm_ID);
  988. END;
  989. TR_EasyRequestTags(App,reqstr,'_Ok',[
  990. TREZ_LockProject,Main_Project,
  991. TREZ_Title,'Triton help',
  992. TAG_END]);
  993. END;
  994. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  995. ELSE
  996. END;
  997. END;
  998. TR_ReplyMsg(trmsg);
  999. END;
  1000. UNTIL quit OR (trmsg = NIL);
  1001. END;
  1002. TR_CloseProject(Main_Project);
  1003. FreeTagItems(abouttags);
  1004. END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  1005. END;
  1006. BEGIN
  1007. App := TR_CreateAppTags([
  1008. TRCA_Name,'TritonDemo',
  1009. TRCA_LongName,'Triton Demo',
  1010. TRCA_Version,'2.0',
  1011. TAG_DONE]);
  1012. if App <> nil then begin
  1013. Do_Main;
  1014. TR_DeleteApp(App);;
  1015. end;
  1016. END.