demo.pas 42 KB

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