home *** CD-ROM | disk | FTP | other *** search
/ Dream 41 / Amiga_Dream_41.iso / Amiga / Programmation / gui / tri20b2dev.lha / Triton / Developer / DemoSource / demo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-13  |  39.6 KB  |  1,249 lines

  1. /*
  2.  *  Triton - The object oriented GUI creation system for the Amiga
  3.  *  Written by Stefan Zeiger in 1993-1996
  4.  *
  5.  *  (c) 1993-1996 by Stefan Zeiger
  6.  *  You are hereby allowed to use this source or parts
  7.  *  of it for creating programs for AmigaOS which use the
  8.  *  Triton GUI creation system. All other rights reserved.
  9.  *
  10.  *  demo.c - Triton demo program
  11.  *
  12.  */
  13.  
  14.  
  15. /*************************************************************************************** Include our stuff */
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20.  
  21. #include <libraries/triton.h>
  22.  
  23. #ifdef __GNUC__
  24.  
  25. #ifndef __OPTIMIZE__
  26. #include <clib/triton_protos.h>
  27. #include <clib/dos_protos.h>
  28. #include <clib/intuition_protos.h>
  29. #else
  30. #include <inline/triton.h>
  31. #include <inline/dos.h>
  32. #include <inline/intuition.h>
  33. #endif /* __OPTIMIZE__ */
  34.  
  35. #else
  36. #include <proto/triton.h>
  37. #include <proto/dos.h>
  38. #include <proto/intuition.h>
  39.  
  40. #endif /* __GNUC__ */
  41.  
  42.  
  43. /********************************************************************************* Disable CTRL-C handling */
  44.  
  45. #ifdef __GNUC__
  46. __chkabort(){}
  47. #else
  48. #ifdef __SASC__
  49. int CXBRK(void) { return(0); }
  50. int chkabort(void) { return(0); }
  51. #endif
  52. #endif
  53.  
  54.  
  55. /**************************************************************************************** Global variables */
  56.  
  57. struct TR_Project *main_project;
  58.  
  59.  
  60. /***************************************************************************************** Window 'groups' */
  61.  
  62. ProjectDefinition(groups_trwintags)
  63. {
  64.   WindowTitle("Groups"), WindowPosition(TRWP_CENTERDISPLAY), WindowUnderscore("~"), WindowID(1),
  65.  
  66.   HorizGroupA, Space, VertGroupA,
  67.     Space,
  68.  
  69.     NamedFrameBox("TRGR_PROPSHARE (default)"), ObjectBackfillWin, VertGroupA, Space, HorizGroupC,
  70.       Space,
  71.       Button("Short",1),
  72.       Space,
  73.       Button("And much, much longer...",2),
  74.       Space,
  75.       EndGroup, Space, EndGroup,
  76.  
  77.     Space,
  78.  
  79.     NamedFrameBox("TRGR_EQUALSHARE"), ObjectBackfillWin, VertGroupA, Space, HorizGroupEC,
  80.       Space,
  81.       Button("Short",3),
  82.       Space,
  83.       Button("And much, much longer...",4),
  84.       Space,
  85.       EndGroup, Space, EndGroup,
  86.  
  87.     Space,
  88.  
  89.     NamedFrameBox("TRGR_PROPSPACES"), ObjectBackfillWin, VertGroupA, Space, HorizGroupSC,
  90.       Space,
  91.       Button("Short",5),
  92.       Space,
  93.       Button("And much, much longer...",6),
  94.       Space,
  95.       EndGroup, Space, EndGroup,
  96.  
  97.     Space,
  98.  
  99.     NamedFrameBox("TRGR_ARRAY"), ObjectBackfillWin, VertGroupA, Space, LineArray,
  100.       BeginLine,
  101.         Space,
  102.         Button("Short",7),
  103.         Space,
  104.         Button("And much, much longer...",8),
  105.         Space,
  106.         EndLine,
  107.       Space,
  108.       BeginLine,
  109.         Space,
  110.         Button("Not so short",9),
  111.         Space,
  112.         Button("And a bit longer...",10),
  113.         Space,
  114.         EndLine,
  115.       Space,
  116.       BeginLineI,
  117.         NamedSeparator("An independent line"),
  118.         EndLine,
  119.       Space,
  120.       BeginLine,
  121.         Space,
  122.         Button("foo bar",12),
  123.         Space,
  124.         Button("42",13),
  125.         Space,
  126.         EndLine,
  127.       EndArray, Space, EndGroup,
  128.  
  129.     Space,
  130.     EndGroup, Space, EndGroup,
  131.   EndProject
  132. };
  133.  
  134.  
  135. VOID do_groups(VOID)
  136. {
  137.   BOOL close_me=FALSE;
  138.   struct TR_Message *trmsg;
  139.   struct TR_Project *groups_project;
  140.  
  141.   if(groups_project=TR_OpenProject(Application,groups_trwintags))
  142.   {
  143.     TR_LockProject(main_project);
  144.     while(!close_me)
  145.     {
  146.       TR_Wait(Application,NULL);
  147.       while(trmsg=TR_GetMsg(Application))
  148.       {
  149.         if(trmsg->trm_Project==groups_project) switch(trmsg->trm_Class)
  150.         {
  151.           case TRMS_CLOSEWINDOW:
  152.             close_me=TRUE;
  153.             break;
  154.  
  155.           case TRMS_ERROR:
  156.             puts(TR_GetErrorString(trmsg->trm_Data));
  157.             break;
  158.         }
  159.         TR_ReplyMsg(trmsg);
  160.       }
  161.     }
  162.     TR_UnlockProject(main_project);
  163.     TR_CloseProject(groups_project);
  164.   }
  165.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  166. }
  167.  
  168.  
  169. /****************************************************************************************** Window 'menus' */
  170.  
  171. struct TagItem menus_trwintags[]=
  172. {
  173.   WindowID(2), WindowTitle("Menus"),
  174.  
  175.   TRMN_Title,                 (ULONG) "A menu",
  176.    TRMN_Item,                 (ULONG) "A simple item", TRAT_ID, 1,
  177.    TRMN_Item,                 (ULONG) "Another item", TRAT_ID, 2,
  178.    TRMN_Item,                 (ULONG) "And now... a barlabel", TRAT_ID, 3,
  179.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  180.    TRMN_Item,                 (ULONG) "1_An item with a shortcut", TRAT_ID, 4,
  181.    TRMN_Item,                 (ULONG) "2_Another one", TRAT_ID, 5,
  182.    TRMN_Item,                 (ULONG) "3_And number 3", TRAT_ID, 6,
  183.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  184.    TRMN_Item,                 (ULONG) "_F1_And under OS3.0: Extended command keys", TRAT_ID, 6,
  185.    TRMN_Item,                 (ULONG) "_F2_Another one", TRAT_ID, 7,
  186.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  187.    TRMN_Item,                 (ULONG) "How do you like submenus?",
  188.     TRMN_Sub,                 (ULONG) "G_Great!", TRAT_ID, 8,
  189.     TRMN_Sub,                 (ULONG) "F_Fine", TRAT_ID, 9,
  190.     TRMN_Sub,                 (ULONG) "D_Don't know", TRAT_ID, 10,
  191.     TRMN_Sub,                 (ULONG) "N_Not so fine", TRAT_ID, 11,
  192.     TRMN_Sub,                 (ULONG) "P_Puke!", TRAT_ID, 12,
  193.  
  194.   TRMN_Title,                 (ULONG) "Another menu",
  195.    TRMN_Item,                 (ULONG) "This item is ghosted", TRMN_Flags, TRMF_DISABLED, TRAT_ID, 100,
  196.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  197.    TRMN_Item,                 (ULONG) "Item 1 is checked", TRMN_Flags, TRMF_CHECKED, TRAT_ID, 13,
  198.    TRMN_Item,                 (ULONG) "Item 2 can be checked, too", TRMN_Flags, TRMF_CHECKIT, TRAT_ID, 14,
  199.  
  200.   TRMN_Title,                 (ULONG) "Ghosted menu",
  201.   TRMN_Flags,                 (ULONG) TRMF_DISABLED,
  202.    TRMN_Item,                 (ULONG) "Item 1", TRAT_ID, 101,
  203.    TRMN_Item,                 (ULONG) "Item 2", TRAT_ID, 102,
  204.  
  205.   TAG_END
  206. };
  207.  
  208.  
  209. VOID do_menus(VOID)
  210. {
  211.   BOOL close_me=FALSE;
  212.   struct TR_Message *trmsg;
  213.   struct TR_Project *menus_project;
  214.  
  215.   if(menus_project=TR_OpenProject(Application,menus_trwintags))
  216.   {
  217.     TR_LockProject(main_project);
  218.     while(!close_me)
  219.     {
  220.       TR_Wait(Application,NULL);
  221.       while(trmsg=TR_GetMsg(Application))
  222.       {
  223.         if(trmsg->trm_Project==menus_project) switch(trmsg->trm_Class)
  224.         {
  225.           case TRMS_CLOSEWINDOW:
  226.             close_me=TRUE;
  227.             break;
  228.  
  229.           case TRMS_ERROR:
  230.             puts(TR_GetErrorString(trmsg->trm_Data));
  231.             break;
  232.  
  233.           case TRMS_NEWVALUE:
  234.             printf("The new value of object %d is %d.\n",trmsg->trm_ID,trmsg->trm_Data);
  235.             break;
  236.  
  237.           case TRMS_ACTION:
  238.             printf("Object %d has triggered an action.\n",trmsg->trm_ID);
  239.             break;
  240.         }
  241.         TR_ReplyMsg(trmsg);
  242.       } 
  243.     }
  244.     TR_UnlockProject(main_project);
  245.     TR_CloseProject(menus_project);
  246.   }
  247.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  248. }
  249.  
  250.  
  251. /**************************************************************************************** Window 'gadgets' */
  252.  
  253. STRPTR cycle_entries[]=
  254. {
  255.   "Entry 0",
  256.   "1",
  257.   "2",
  258.   "3",
  259.   "4",
  260.   "5",
  261.   "6",
  262.   "7",
  263.   "8",
  264.   "9",
  265.   NULL
  266. };
  267.  
  268.  
  269. STRPTR mx_entries[]=
  270. {
  271.   "Choice 0",
  272.   "Choice 1",
  273.   "Choice 2",
  274.   NULL
  275. };
  276.  
  277.  
  278. struct TagItem gadgets_trwintags[]=
  279. {
  280.   WindowID(3),
  281.   WindowTitle("Gadgets"),
  282.   WindowPosition(TRWP_CENTERDISPLAY),
  283.  
  284.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  285.  
  286.     TROB_Space,               (ULONG) NULL,
  287.  
  288.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  289.       TROB_Space,             (ULONG) NULL,
  290.       TROB_Line,              (ULONG) TROF_HORIZ,
  291.       TROB_Space,             (ULONG) NULL,
  292.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "GadTools", TRAT_Flags, (ULONG) TRTX_TITLE,
  293.       TROB_Space,             (ULONG) NULL,
  294.       TROB_Line,              (ULONG) TROF_HORIZ,
  295.       TROB_Space,             (ULONG) NULL,
  296.     TRGR_End,                 (ULONG) NULL,
  297.  
  298.     TROB_Space,               (ULONG) NULL,
  299.  
  300.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  301.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  302.         TROB_Space,           (ULONG) NULL,
  303.         TROB_CheckBox,        (ULONG) NULL,
  304.           TRAT_ID,            (ULONG) 1,
  305.           TRAT_Value,         (ULONG) TRUE,
  306.       TRGR_End,               (ULONG) NULL,
  307.       TROB_Space,             (ULONG) NULL,
  308.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  309.         TROB_Text,            (ULONG) NULL,
  310.           TRAT_Text,          (ULONG) "_Checkbox",
  311.           TRAT_ID,            (ULONG) 1,
  312.         TROB_Space,           (ULONG) NULL,
  313.       TRGR_End,               (ULONG) NULL,
  314.     TRGR_End,                 (ULONG) NULL,
  315.  
  316.     TROB_Space,               (ULONG) NULL,
  317.  
  318.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  319.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  320.         TROB_Space,           (ULONG) NULL,
  321.         TROB_Slider,          (ULONG) NULL,
  322.           TRAT_ID,            (ULONG) 4,
  323.           TRSL_Min,           (ULONG) 1,
  324.           TRSL_Max,           (ULONG) 3,
  325.           TRAT_Value,         (ULONG) 1,
  326.       TRGR_End,               (ULONG) NULL,
  327.       TROB_Space,             (ULONG) NULL,
  328.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  329.         TROB_Text,            (ULONG) NULL,
  330.           TRAT_Text,          (ULONG) "_Slider: ",
  331.           TRAT_ID,            (ULONG) 4,
  332.         TROB_Text,            (ULONG) NULL,
  333.           TRAT_Value,         (ULONG) 1,
  334.           TRAT_ID,            (ULONG) 4,
  335.           TRAT_MinWidth,      (ULONG) 3,
  336.       TROB_Space,             (ULONG) NULL,
  337.       TRGR_End,               (ULONG) NULL,
  338.     TRGR_End,                 (ULONG) NULL,
  339.  
  340.     TROB_Space,               (ULONG) NULL,
  341.  
  342.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  343.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  344.         TROB_Space,           (ULONG) NULL,
  345.         TROB_Scroller,        (ULONG) NULL,
  346.           TRAT_ID,            (ULONG) 5,
  347.           TRAT_Value,         (ULONG) 2,
  348.           TRSC_Total,         (ULONG) 7,
  349.           TRSC_Visible,       (ULONG) 3,
  350.       TRGR_End,               (ULONG) NULL,
  351.       TROB_Space,             (ULONG) NULL,
  352.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  353.         TROB_Text,            (ULONG) NULL,
  354.           TRAT_Text,          (ULONG) "Sc_roller: ",
  355.           TRAT_ID,            (ULONG) 5,
  356.         TROB_Text,            (ULONG) NULL,
  357.           TRAT_Value,         (ULONG) 2,
  358.           TRAT_ID,            (ULONG) 5,
  359.           TRAT_MinWidth,      (ULONG) 3,
  360.       TROB_Space,             (ULONG) NULL,
  361.       TRGR_End,               (ULONG) NULL,
  362.     TRGR_End,                 (ULONG) NULL,
  363.  
  364.     TROB_Space,               (ULONG) NULL,
  365.  
  366.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  367.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  368.         TROB_Space,           (ULONG) NULL,
  369.         TROB_Palette,         (ULONG) NULL,
  370.           TRAT_ID,            (ULONG) 3,
  371.           TRAT_Value,         (ULONG) 1,
  372.       TRGR_End,               (ULONG) NULL,
  373.       TROB_Space,             (ULONG) NULL,
  374.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  375.         TROB_Text,            (ULONG) NULL,
  376.           TRAT_Text,          (ULONG) "_Palette: ",
  377.           TRAT_ID,            (ULONG) 3,
  378.         TROB_Text,            (ULONG) NULL,
  379.           TRAT_Value,         (ULONG) 1,
  380.           TRAT_ID,            (ULONG) 3,
  381.           TRAT_MinWidth,      (ULONG) 3,
  382.       TROB_Space,             (ULONG) NULL,
  383.       TRGR_End,               (ULONG) NULL,
  384.     TRGR_End,                 (ULONG) NULL,
  385.  
  386.     TROB_Space,               (ULONG) NULL,
  387.  
  388.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  389.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  390.         TROB_Space,           (ULONG) NULL,
  391.         TROB_Cycle,           (ULONG) cycle_entries,
  392.           TRAT_ID,            (ULONG) 6,
  393.           TRAT_Value,         (ULONG) 4,
  394.       TRGR_End,               (ULONG) NULL,
  395.       TROB_Space,             (ULONG) NULL,
  396.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  397.         TROB_Text,            (ULONG) NULL,
  398.           TRAT_Text,          (ULONG) "C_ycle: ",
  399.           TRAT_ID,            (ULONG) 6,
  400.         TROB_Text,            (ULONG) NULL,
  401.           TRAT_Value,         (ULONG) 4,
  402.           TRAT_ID,            (ULONG) 6,
  403.           TRAT_MinWidth,      (ULONG) 3,
  404.       TROB_Space,             (ULONG) NULL,
  405.       TRGR_End,               (ULONG) NULL,
  406.     TRGR_End,                 (ULONG) NULL,
  407.  
  408.     TROB_Space,               (ULONG) NULL,
  409.  
  410.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  411.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  412.         TROB_Space,           (ULONG) NULL,
  413.         TROB_Cycle,           (ULONG) mx_entries,
  414.           TRAT_ID,            (ULONG) 13,
  415.           TRAT_Value,         (ULONG) 1,
  416.           TRAT_Flags,         (ULONG) TRCY_MX,
  417.       TRGR_End,               (ULONG) NULL,
  418.       TROB_Space,             (ULONG) NULL,
  419.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  420.         TROB_Text,            (ULONG) NULL,
  421.           TRAT_Text,          (ULONG) "_MX: ",
  422.           TRAT_ID,            (ULONG) 13,
  423.         TROB_Text,            (ULONG) NULL,
  424.           TRAT_Value,         (ULONG) 1,
  425.           TRAT_ID,            (ULONG) 13,
  426.           TRAT_MinWidth,      (ULONG) 3,
  427.         TROB_Space,           (ULONG) NULL,
  428.       TRGR_End,               (ULONG) NULL,
  429.     TRGR_End,                 (ULONG) NULL,
  430.  
  431.     TROB_Space,               (ULONG) NULL,
  432.  
  433.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  434.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  435.         TROB_Space,           (ULONG) NULL,
  436.         TROB_String,          (ULONG) "foo bar",
  437.           TRAT_ID,            (ULONG) 7,
  438.       TRGR_End,               (ULONG) NULL,
  439.       TROB_Space,             (ULONG) NULL,
  440.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  441.         TROB_Text,            (ULONG) NULL,
  442.           TRAT_Text,          (ULONG) "S_tring",
  443.           TRAT_ID,            (ULONG) 7,
  444.       TROB_Space,             (ULONG) NULL,
  445.       TRGR_End,               (ULONG) NULL,
  446.     TRGR_End,                 (ULONG) NULL,
  447.  
  448.     TROB_Space,               (ULONG) NULL,
  449.  
  450.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  451.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  452.         TROB_Space,           (ULONG) NULL,
  453.         TROB_String,          (ULONG) "",
  454.           TRAT_Flags,         (ULONG) TRST_INVISIBLE,
  455.           TRAT_ID,            (ULONG) 15,
  456.       TRGR_End,               (ULONG) NULL,
  457.       TROB_Space,             (ULONG) NULL,
  458.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  459.         TROB_Text,            (ULONG) NULL,
  460.           TRAT_Text,          (ULONG) "Pass_word",
  461.           TRAT_ID,            (ULONG) 15,
  462.       TROB_Space,             (ULONG) NULL,
  463.       TRGR_End,               (ULONG) NULL,
  464.     TRGR_End,                 (ULONG) NULL,
  465.  
  466.     TROB_Space,               (ULONG) NULL,
  467.  
  468.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  469.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  470.         TROB_Space,           (ULONG) NULL,
  471.         TROB_String,          (ULONG) "0.42",
  472.           TRAT_Flags,         (ULONG) TRST_FLOAT,
  473.           TRST_Filter,        (ULONG) "01234567.,",
  474.           TRAT_ID,            (ULONG) 16,
  475.       TRGR_End,               (ULONG) NULL,
  476.       TROB_Space,             (ULONG) NULL,
  477.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  478.         TROB_Text,            (ULONG) NULL,
  479.           TRAT_Text,          (ULONG) "_Octal float",
  480.           TRAT_ID,            (ULONG) 16,
  481.       TROB_Space,             (ULONG) NULL,
  482.       TRGR_End,               (ULONG) NULL,
  483.     TRGR_End,                 (ULONG) NULL,
  484.  
  485.     TROB_Space,               (ULONG) NULL,
  486.  
  487.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  488.       TROB_Space,             (ULONG) NULL,
  489.       TROB_Line,              (ULONG) TROF_HORIZ,
  490.       TROB_Space,             (ULONG) NULL,
  491.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "BOOPSI", TRAT_Flags, (ULONG) TRTX_TITLE,
  492.       TROB_Space,             (ULONG) NULL,
  493.       TROB_Line,              (ULONG) TROF_HORIZ,
  494.       TROB_Space,             (ULONG) NULL,
  495.     TRGR_End,                 (ULONG) NULL,
  496.  
  497.     TROB_Space,               (ULONG) NULL,
  498.  
  499.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  500.       TROB_Space,             (ULONG) NULL,
  501.       TROB_Button,            (ULONG) NULL, TRAT_ID, 2, TRAT_Text, (ULONG) "_Button",
  502.       TROB_Space,             (ULONG) NULL,
  503.     TRGR_End,                 (ULONG) NULL,
  504.  
  505.     TROB_Space,               (ULONG) NULL,
  506.  
  507.     TRGR_Horiz,               (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  508.       TROB_Space,             (ULONG) NULL,
  509.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_File:", TRAT_ID, 10,
  510.       TROB_Space,             (ULONG) NULL,
  511.       TROB_Button,            (ULONG) TRBT_GETFILE, TRAT_ID, 10, TRAT_Text, (ULONG) "",
  512.       TROB_Space,             (ULONG) NULL,
  513.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Drawer:", TRAT_ID, 11,
  514.       TROB_Space,             (ULONG) NULL,
  515.       TROB_Button,            (ULONG) TRBT_GETDRAWER, TRAT_ID, 11, TRAT_Text, (ULONG) "",
  516.       TROB_Space,             (ULONG) NULL,
  517.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Entry:", TRAT_ID, 12,
  518.       TROB_Space,             (ULONG) NULL,
  519.       TROB_Button,            (ULONG) TRBT_GETENTRY, TRAT_ID, 12, TRAT_Text, (ULONG) "",
  520.       TROB_Space,             (ULONG) NULL,
  521.     TRGR_End,                 (ULONG) NULL,
  522.  
  523.     TROB_Space,               (ULONG) NULL,
  524.  
  525.     TRGR_End,                 (ULONG) NULL,
  526.  
  527.   TAG_END
  528. };
  529.  
  530.  
  531. VOID do_gadgets(VOID)
  532. {
  533.   BOOL close_me=FALSE;
  534.   struct TR_Message *trmsg;
  535.   struct TR_Project *gadgets_project;
  536.  
  537.   if(gadgets_project=TR_OpenProject(Application,gadgets_trwintags))
  538.   {
  539.     TR_LockProject(main_project);
  540.     while(!close_me)
  541.     {
  542.       TR_Wait(Application,NULL);
  543.       while(trmsg=TR_GetMsg(Application))
  544.       {
  545.         if(trmsg->trm_Project==gadgets_project) switch(trmsg->trm_Class)
  546.         {
  547.           case TRMS_CLOSEWINDOW:
  548.             close_me=TRUE;
  549.             break;
  550.  
  551.           case TRMS_ERROR:
  552.             puts(TR_GetErrorString(trmsg->trm_Data));
  553.             break;
  554.         }
  555.         TR_ReplyMsg(trmsg);
  556.       }
  557.     }
  558.     TR_UnlockProject(main_project);
  559.     TR_CloseProject(gadgets_project);
  560.   }
  561.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  562. }
  563.  
  564.  
  565. /************************************************************************************** Window 'disabling' */
  566.  
  567. struct TagItem disabling_trwintags[]=
  568. {
  569.   WindowID(4), WindowTitle("Disabling"), WindowPosition(TRWP_CENTERDISPLAY),
  570.  
  571.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  572.  
  573.     TROB_Space,               (ULONG) NULL,
  574.  
  575.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  576.       TROB_Space,             (ULONG) NULL,
  577.       TROB_CheckBox,          (ULONG) NULL, TRAT_ID, 1, TRAT_Value, TRUE,
  578.       TROB_Space,             (ULONG) NULL,
  579.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Disabled", TRAT_ID, 1,
  580.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES,
  581.         TROB_Space,           (ULONG) NULL,
  582.         TRGR_End,             (ULONG) NULL,
  583.       TRGR_End,               (ULONG) NULL,
  584.  
  585.     TROB_Space,               (ULONG) NULL,
  586.  
  587.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  588.       TROB_Space,             (ULONG) NULL,
  589.       TROB_Line,              (ULONG) TROF_HORIZ,
  590.       TROB_Space,             (ULONG) NULL,
  591.       TRGR_End,               (ULONG) NULL,
  592.  
  593.     TROB_Space,               (ULONG) NULL,
  594.  
  595.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  596.       TROB_Space,             (ULONG) NULL,
  597.       TROB_CheckBox,          (ULONG) NULL, TRAT_Value, TRUE, TRAT_ID, 2, TRAT_Disabled, TRUE,
  598.       TROB_Space,             (ULONG) NULL,
  599.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Checkbox", TRAT_ID, 2,
  600.       TROB_Space,             (ULONG) NULL,
  601.     TRGR_End,                 (ULONG) NULL,
  602.  
  603.     TROB_Space,               (ULONG) NULL,
  604.  
  605.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  606.       TROB_Space,             (ULONG) NULL,
  607.       TROB_Button,            (ULONG) NULL, TRAT_Text, (ULONG) "_Button", TRAT_ID, 3, TRAT_Disabled, TRUE,
  608.       TROB_Space,             (ULONG) NULL,
  609.     TRGR_End,                 (ULONG) NULL,
  610.  
  611.     TROB_Space,               (ULONG) NULL,
  612.  
  613.   TRGR_End,                   (ULONG) NULL,
  614.  
  615.   TAG_END
  616. };
  617.  
  618.  
  619. VOID do_disabling(VOID)
  620. {
  621.   BOOL close_me=FALSE;
  622.   struct TR_Message *trmsg;
  623.   struct TR_Project *disabling_project;
  624.  
  625.   if(disabling_project=TR_OpenProject(Application,disabling_trwintags))
  626.   {
  627.     TR_LockProject(main_project);
  628.     while(!close_me)
  629.     {
  630.       TR_Wait(Application,NULL);
  631.       while(trmsg=TR_GetMsg(Application))
  632.       {
  633.         if(trmsg->trm_Project==disabling_project) switch(trmsg->trm_Class)
  634.         {
  635.           case TRMS_CLOSEWINDOW:
  636.             close_me=TRUE;
  637.             break;
  638.  
  639.           case TRMS_ERROR:
  640.             puts(TR_GetErrorString(trmsg->trm_Data));
  641.             break;
  642.  
  643.           case TRMS_NEWVALUE:
  644.             if(trmsg->trm_ID==1)
  645.             {
  646.               TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg->trm_Data);
  647.               TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg->trm_Data);
  648.             }
  649.         }
  650.         TR_ReplyMsg(trmsg);
  651.       }
  652.     }
  653.     TR_UnlockProject(main_project);
  654.     TR_CloseProject(disabling_project);
  655.   }
  656.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  657. }
  658.  
  659.  
  660. /******************************************************************************************* Window 'text' */
  661.  
  662. ProjectDefinition(text_trwintags)
  663. {
  664.   WindowID(5), WindowTitle("Text"), WindowPosition(TRWP_CENTERDISPLAY),
  665.   VertGroupA,
  666.     Space, CenteredText("Normal text"),
  667.     Space, CenteredTextH("Highlighted text"),
  668.     Space, CenteredText3("3-dimensional text"),
  669.     Space, CenteredTextB("Bold text"),
  670.     Space, CenteredText("A _shortcut"),
  671.     Space, CenteredInteger(42),
  672.     Space, HorizGroupAC,
  673.              Space,
  674.              ClippedText("This is a very long text which is truncated to fit with TRTX_CLIPPED."),
  675.              Space, EndGroup,
  676.     Space, EndGroup, EndProject
  677. };
  678.  
  679.  
  680. VOID do_text(VOID)
  681. {
  682.   BOOL close_me=FALSE;
  683.   struct TR_Message *trmsg;
  684.   struct TR_Project *text_project;
  685.  
  686.   if(text_project=TR_OpenProject(Application,text_trwintags))
  687.   {
  688.     TR_LockProject(main_project);
  689.     while(!close_me)
  690.     {
  691.       TR_Wait(Application,NULL);
  692.       while(trmsg=TR_GetMsg(Application))
  693.       {
  694.         if(trmsg->trm_Project==text_project) switch(trmsg->trm_Class)
  695.         {
  696.           case TRMS_CLOSEWINDOW:
  697.             close_me=TRUE;
  698.             break;
  699.  
  700.           case TRMS_ERROR:
  701.             puts(TR_GetErrorString(trmsg->trm_Data));
  702.             break;
  703.         }
  704.         TR_ReplyMsg(trmsg);
  705.       }
  706.     }
  707.     TR_UnlockProject(main_project);
  708.     TR_CloseProject(text_project);
  709.   }
  710.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  711. }
  712.  
  713.  
  714. /*********************************************************************************** Window 'notification' */
  715.  
  716. ProjectDefinition(notification_trwintags)
  717. {
  718.   WindowID(6), WindowTitle("Notification"), WindowPosition(TRWP_CENTERDISPLAY),
  719.   VertGroupA,
  720.     Space,
  721.     NamedSeparatorI("_Checkmarks",1),
  722.     Space,
  723.  
  724.     HorizGroupSAC,
  725.       Space, CheckBox(1),
  726.       Space, CheckBox(1),
  727.       Space, CheckBox(1),
  728.       Space, EndGroup,
  729.  
  730.     Space,
  731.  
  732.     HorizGroupSAC,
  733.       Space, CheckBox(1),
  734.       Space, CheckBox(1),
  735.       Space, CheckBox(1),
  736.       Space, EndGroup,
  737.  
  738.     Space,
  739.     HorizGroupSAC,
  740.       Space, CheckBox(1),
  741.       Space, CheckBox(1),
  742.       Space, CheckBox(1),
  743.       Space, EndGroup,
  744.  
  745.     Space,
  746.     NamedSeparatorI("_Slider and Progress indicator",2),
  747.     Space,
  748.  
  749.     HorizGroupAC,
  750.       Space,
  751.       SliderGadget(0,10,8,2),
  752.       Space,
  753.       Integer3(8),TRAT_ID,2,TRAT_MinWidth,3,
  754.       Space,
  755.       EndGroup,
  756.  
  757.     Space,
  758.  
  759.     HorizGroupAC,
  760.       Space,
  761.       TextN("0%"),
  762.       Space,
  763.       Progress(10,8,2),
  764.       Space,
  765.       TextN("100%"),
  766.       Space,
  767.       EndGroup,
  768.  
  769.     Space,
  770.   EndGroup, EndProject
  771. };
  772.  
  773.  
  774. VOID do_notification(VOID)
  775. {
  776.   BOOL close_me=FALSE;
  777.   struct TR_Message *trmsg;
  778.   struct TR_Project *notification_project;
  779.  
  780.   if(notification_project=TR_OpenProject(Application,notification_trwintags))
  781.   {
  782.     TR_LockProject(main_project);
  783.     while(!close_me)
  784.     {
  785.       TR_Wait(Application,NULL);
  786.       while(trmsg=TR_GetMsg(Application))
  787.       {
  788.         if(trmsg->trm_Project==notification_project) switch(trmsg->trm_Class)
  789.         {
  790.           case TRMS_CLOSEWINDOW:
  791.             close_me=TRUE;
  792.             break;
  793.  
  794.           case TRMS_ERROR:
  795.             puts(TR_GetErrorString(trmsg->trm_Data));
  796.             break;
  797.         }
  798.         TR_ReplyMsg(trmsg);
  799.       }
  800.     }
  801.     TR_UnlockProject(main_project);
  802.     TR_CloseProject(notification_project);
  803.   }
  804.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  805. }
  806.  
  807.  
  808. /*************************************************************************************** Window 'backfill' */
  809.  
  810. ProjectDefinition(backfill_trwintags)
  811. {
  812.   WindowID(7), WindowTitle("Backfill"), WindowPosition(TRWP_CENTERDISPLAY),
  813.   VertGroupA,
  814.     Space,  CenteredText("Each window and"),
  815.     SpaceS, CenteredText("FrameBox can have"),
  816.     SpaceS, CenteredText("one of the following"),
  817.     SpaceS, CenteredText("backfill patterns"),
  818.     Space,  HorizGroupA,
  819.               Space, GroupBox, ObjectBackfillS, SpaceB,
  820.               Space, GroupBox, ObjectBackfillSA, SpaceB,
  821.               Space, GroupBox, ObjectBackfillSF, SpaceB,
  822.               Space, EndGroup,
  823.     Space,  HorizGroupA,
  824.               Space, GroupBox, ObjectBackfillSB, SpaceB,
  825.               Space, GroupBox, ObjectBackfillA, SpaceB,
  826.               Space, GroupBox, ObjectBackfillAF, SpaceB,
  827.               Space, EndGroup,
  828.     Space,  HorizGroupA,
  829.               Space, GroupBox, ObjectBackfillAB, SpaceB,
  830.               Space, GroupBox, ObjectBackfillF, SpaceB,
  831.               Space, GroupBox, ObjectBackfillFB, SpaceB,
  832.               Space, EndGroup,
  833.     Space, EndGroup, EndProject
  834. };
  835.  
  836.  
  837. VOID do_backfill(VOID)
  838. {
  839.   BOOL close_me=FALSE;
  840.   struct TR_Message *trmsg;
  841.   struct TR_Project *backfill_project;
  842.  
  843.   if(backfill_project=TR_OpenProject(Application,backfill_trwintags))
  844.   {
  845.     TR_LockProject(main_project);
  846.     while(!close_me)
  847.     {
  848.       TR_Wait(Application,NULL);
  849.       while(trmsg=TR_GetMsg(Application))
  850.       {
  851.         if(trmsg->trm_Project==backfill_project) switch(trmsg->trm_Class)
  852.         {
  853.           case TRMS_CLOSEWINDOW:
  854.             close_me=TRUE;
  855.             break;
  856.  
  857.           case TRMS_ERROR:
  858.             puts(TR_GetErrorString(trmsg->trm_Data));
  859.             break;
  860.         }
  861.         TR_ReplyMsg(trmsg);
  862.       }
  863.     }
  864.     TR_UnlockProject(main_project);
  865.     TR_CloseProject(backfill_project);
  866.   }
  867.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  868. }
  869.  
  870.  
  871. /************************************************************************************** Window 'appwindow' */
  872.  
  873. ProjectDefinition(appwindow_trwintags)
  874. {
  875.   WindowID(8), WindowTitle("AppWindow"), WindowPosition(TRWP_CENTERDISPLAY),
  876.   VertGroupA,
  877.     Space,  CenteredText("This window is an application window."),
  878.     SpaceS, CenteredText("Drop icons into the window or into"),
  879.     SpaceS, CenteredText("the icon drop boxes below and see"),
  880.     SpaceS, CenteredText("what will happen..."),
  881.     Space,  HorizGroupA,
  882.               Space, DropBox(1),
  883.               Space, DropBox(2),
  884.               Space, EndGroup,
  885.     Space, EndGroup, EndProject
  886. };
  887.  
  888.  
  889. VOID do_appwindow(VOID)
  890. {
  891.   BOOL close_me=FALSE;
  892.   struct TR_Message *trmsg;
  893.   struct TR_Project *appwindow_project;
  894.   UBYTE reqstr[200],dirname[100];
  895.  
  896.   if(appwindow_project=TR_OpenProject(Application,appwindow_trwintags))
  897.   {
  898.     TR_LockProject(main_project);
  899.     while(!close_me)
  900.     {
  901.       TR_Wait(Application,NULL);
  902.       while(trmsg=TR_GetMsg(Application))
  903.       {
  904.         if(trmsg->trm_Project==appwindow_project) switch(trmsg->trm_Class)
  905.         {
  906.           case TRMS_CLOSEWINDOW:
  907.             close_me=TRUE;
  908.             break;
  909.  
  910.           case TRMS_ERROR:
  911.             puts(TR_GetErrorString(trmsg->trm_Data));
  912.             break;
  913.  
  914.           case TRMS_ICONDROPPED:
  915.             dirname[0]=0;
  916.             NameFromLock(((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Lock,dirname,100);
  917.             AddPart(dirname,((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Name,100);
  918.             switch(trmsg->trm_ID)
  919.             {
  920.               case 1:
  921.                 sprintf(reqstr,"Icon(s) dropped into the left box.\tName of first dropped icon:\n%%3%s",dirname);
  922.                 break;
  923.               case 2:
  924.                 sprintf(reqstr,"Icon(s) dropped into the right box.\tName of first dropped icon:\n%%3%s",dirname);
  925.                 break;
  926.               default:
  927.                 sprintf(reqstr,"Icon(s) dropped into the window.\tName of first dropped icon:\n%%3%s",dirname);
  928.             }
  929.             TR_EasyRequestTags(Application,reqstr,"_Ok",
  930.               TREZ_LockProject,appwindow_project,TREZ_Title,"AppWindow report",TREZ_Activate,TRUE,TAG_END);
  931.             break;
  932.         }
  933.         TR_ReplyMsg(trmsg);
  934.       }
  935.     }
  936.     TR_UnlockProject(main_project);
  937.     TR_CloseProject(appwindow_project);
  938.   }
  939.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  940. }
  941.  
  942.  
  943. /****************************************************************************************** Window 'lists' */
  944.  
  945. struct TR_Dimensions lists_dim;
  946.  
  947. extern struct List LVList1;
  948. extern struct List LVList2;
  949. extern struct List LVList3;
  950.  
  951. struct Node LVNodes1[] =
  952. {
  953.   { &LVNodes1[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  954.   { &LVNodes1[2], &LVNodes1[0],                     0, 0, "READ ONLY" },
  955.   { &LVNodes1[3], &LVNodes1[1],                     0, 0, "Listview" },
  956.   { &LVNodes1[4], &LVNodes1[2],                     0, 0, "gadget using" },
  957.   { &LVNodes1[5], &LVNodes1[3],                     0, 0, "the fixed-" },
  958.   { &LVNodes1[6], &LVNodes1[4],                     0, 0, "width font." },
  959.   { &LVNodes1[7], &LVNodes1[5],                     0, 0, "" },
  960.   { &LVNodes1[ 8], &LVNodes1[ 6],                   0, 0, "This window" },
  961.   { &LVNodes1[ 9], &LVNodes1[ 7],                   0, 0, "will remember" },
  962.   { &LVNodes1[10], &LVNodes1[ 8],                   0, 0, "its position" },
  963.   { &LVNodes1[11], &LVNodes1[ 9],                   0, 0, "even without" },
  964.   { &LVNodes1[12], &LVNodes1[10],                   0, 0, "the Preferences" },
  965.   { &LVNodes1[13], &LVNodes1[11],                   0, 0, "system, when" },
  966.   { &LVNodes1[14], &LVNodes1[12],                   0, 0, "you reopen it," },
  967.   { &LVNodes1[15], &LVNodes1[13],                   0, 0, "because it has" },
  968.   { &LVNodes1[16], &LVNodes1[14],                   0, 0, "got a dimension" },
  969.   { &LVNodes1[17], &LVNodes1[15],                   0, 0, "structure" },
  970.   { &LVNodes1[18], &LVNodes1[16],                   0, 0, "attached" },
  971.   { (struct Node *)&LVList3.lh_Tail, &LVNodes1[17], 0, 0, "to it." }
  972. };
  973.  
  974. struct Node LVNodes2[] =
  975. {
  976.   { &LVNodes2[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  977.   { &LVNodes2[2], &LVNodes2[0],                     0, 0, "SELECT" },
  978.   { &LVNodes2[3], &LVNodes2[1],                     0, 0, "Listview" },
  979.   { &LVNodes2[4], &LVNodes2[2],                     0, 0, "gadget." },
  980.   { &LVNodes2[5], &LVNodes2[3],                     0, 0, "Use the" },
  981.   { &LVNodes2[6], &LVNodes2[4],                     0, 0, "numeric" },
  982.   { &LVNodes2[7], &LVNodes2[5],                     0, 0, "key pad to" },
  983.   { &LVNodes2[8], &LVNodes2[6],                     0, 0, "move" },
  984.   { (struct Node *)&LVList3.lh_Tail, &LVNodes2[7],  0, 0, "around." }
  985. };
  986.  
  987. struct Node LVNodes3[] =
  988. {
  989.   { &LVNodes3[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  990.   { &LVNodes3[2], &LVNodes3[0],                     0, 0, "SHOW" },
  991.   { &LVNodes3[3], &LVNodes3[1],                     0, 0, "SELECTED" },
  992.   { &LVNodes3[4], &LVNodes3[2],                     0, 0, "Listview" },
  993.   { &LVNodes3[5], &LVNodes3[3],                     0, 0, "gadget." },
  994.   { &LVNodes3[6], &LVNodes3[4],                     0, 0, "This list" },
  995.   { &LVNodes3[7], &LVNodes3[5],                     0, 0, "is a bit" },
  996.   { &LVNodes3[8], &LVNodes3[6],                     0, 0, "longer, so" },
  997.   { &LVNodes3[9], &LVNodes3[7],                     0, 0, "that you" },
  998.   { &LVNodes3[10],&LVNodes3[8],                     0, 0, "can try the" },
  999.   { &LVNodes3[11],&LVNodes3[9],                     0, 0, "other" },
  1000.   { &LVNodes3[12],&LVNodes3[10],                    0, 0, "keyboard" },
  1001.   { (struct Node *)&LVList3.lh_Tail, &LVNodes3[11], 0, 0, "shortcuts." }
  1002. };
  1003.  
  1004. struct List LVList1=
  1005. {
  1006.   (struct Node *)&LVNodes1[0],
  1007.   (struct Node *)NULL,
  1008.   (struct Node *)&LVNodes1[18],
  1009.   0,0
  1010. };
  1011.  
  1012. struct List LVList2=
  1013. {
  1014.   (struct Node *)&LVNodes2[0],
  1015.   (struct Node *)NULL,
  1016.   (struct Node *)&LVNodes2[8],
  1017.   0,0
  1018. };
  1019.  
  1020. struct List LVList3=
  1021. {
  1022.   (struct Node *)&LVNodes3[0],
  1023.   (struct Node *)NULL,
  1024.   (struct Node *)&LVNodes3[12],
  1025.   0,0
  1026. };
  1027.  
  1028.  
  1029. struct TagItem lists_trwintags[]=
  1030. {
  1031.   WindowID(9), WindowTitle("Lists"), WindowPosition(TRWP_CENTERDISPLAY), WindowDimensions(&lists_dim),
  1032.   HorizGroupA, Space, VertGroupA,
  1033.     Space,
  1034.     NamedSeparatorIN("_Read only",1),
  1035.     Space,
  1036.     FWListROCN(&LVList1,1,0),
  1037.     Space,
  1038.     NamedSeparatorIN("_Select",2),
  1039.     Space,
  1040.     ListSelC(&LVList2,2,0),
  1041.     Space,
  1042.     NamedSeparatorIN("S_how selected",3),
  1043.     Space,
  1044.     ListSSN(&LVList3,3,0,1),
  1045.     Space,
  1046.   EndGroup, Space, EndGroup,
  1047.   EndProject
  1048. };
  1049.  
  1050.  
  1051. VOID do_lists(VOID)
  1052. {
  1053.   BOOL close_me=FALSE;
  1054.   struct TR_Message *trmsg;
  1055.   struct TR_Project *lists_project;
  1056.  
  1057.   if(lists_project=TR_OpenProject(Application,lists_trwintags))
  1058.   {
  1059.     TR_LockProject(main_project);
  1060.     while(!close_me)
  1061.     {
  1062.       TR_Wait(Application,NULL);
  1063.       while(trmsg=TR_GetMsg(Application))
  1064.       {
  1065.         if(trmsg->trm_Project==lists_project) switch(trmsg->trm_Class)
  1066.         {
  1067.           case TRMS_CLOSEWINDOW:
  1068.             close_me=TRUE;
  1069.             break;
  1070.  
  1071.           case TRMS_ERROR:
  1072.             puts(TR_GetErrorString(trmsg->trm_Data));
  1073.             break;
  1074.         }
  1075.         TR_ReplyMsg(trmsg);
  1076.       }
  1077.     }
  1078.     TR_UnlockProject(main_project);
  1079.     TR_CloseProject(lists_project);
  1080.   }
  1081.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  1082. }
  1083.  
  1084.  
  1085. /****************************************************************************************** Window 'about' */
  1086.  
  1087. /* Note: This could be done even simpler with TR_EasyRequest().       */
  1088. /* ~~~~~ It is done with TR_AutoRequest() to show you how this works. */
  1089. /*       See window 'AppWindow' for a TR_EasyRequest() example.       */
  1090.  
  1091. ProjectDefinition(about_trwintags)
  1092. {
  1093.   BeginRequester("About...",TRWP_CENTERDISPLAY),
  1094.  
  1095.   VertGroupA, Space,  CenteredText3("Triton Demo 2.0"),
  1096.               SpaceS, CenteredText("⌐ 1993-1996 by Stefan Zeiger"),
  1097.               Space,  HorizSeparator,
  1098.               Space,  CenteredText("This program is using the"),
  1099.               SpaceS, CenteredText("Triton GUI creation system"),
  1100.               SpaceS, CenteredText("which is ⌐ by Stefan Zeiger"),
  1101.               Space,  EndGroup,
  1102.  
  1103.   BeginRequesterGads,
  1104.   CenteredButtonRE("_Ok",1),
  1105.   EndRequester
  1106. };
  1107.  
  1108.  
  1109. /******************************************************************************************* Window 'main' */
  1110.  
  1111. ProjectDefinition(main_trwintags)
  1112. {
  1113.   WindowID(10), WindowTitle("Triton Demo"), WindowPosition(TRWP_CENTERDISPLAY), WindowFlags(TRWF_HELP),
  1114.   QuickHelpOn(TRUE),
  1115.   BeginMenu("Project"),
  1116.     MenuItem("?_About...",101),
  1117.     ItemBarlabel,
  1118.     MenuItem("H_Help",102),
  1119.     MenuItemCC("I_QuickHelp",104),
  1120.     ItemBarlabel,
  1121.     MenuItem("Q_Quit",103),
  1122.   VertGroupA,
  1123.     Space,  CenteredText3("T ╖ r ╖ i ╖ t ╖ o ╖ n"),
  1124.     Space,  CenteredText3("The object oriented GUI creation system"),
  1125.     Space,  CenteredText("Demo program for release 2.0"),
  1126.     Space,  CenteredText("Written and ⌐ 1993-1996 by Stefan Zeiger"),
  1127.     Space,  HorizSeparator,
  1128.     Space,  HorizGroupEA,
  1129.               Space, Button("_Gadgets",1),       QuickHelp("Show some fancy gadgets"),
  1130.               Space, Button("G_roups",2),        QuickHelp("Groupies?\nHuh huh..."),
  1131.               Space, Button("_Text",3),          QuickHelp("You know what \'text\' means, huh?"),
  1132.               Space, EndGroup,
  1133.     Space, HorizGroupEA,
  1134.               Space, Button("_Notification",4),  QuickHelp("So you're super-connected now..."),
  1135.               Space, Button("_Backfill",5),      QuickHelp("United colors of Triton"),
  1136.               Space, Button("_Disabling",6),     QuickHelp("To be or not to be"),
  1137.               Space, EndGroup,
  1138.     Space, HorizGroupEA,
  1139.               Space, Button("_AppWindow",7),     QuickHelp("Demonstrate AppWindow feature"),
  1140.               Space, Button("_Menus",8),         QuickHelp("A fancy pull-down menu"),
  1141.               Space, Button("_Lists",9),         QuickHelp("╖ 4 eggs\n╖ 1/2lbs bread\n╖ 1l milk\t%3PS: Don't be late"),
  1142.               Space, EndGroup,
  1143.     Space, EndGroup, EndProject
  1144. };
  1145.  
  1146.  
  1147. VOID do_main(VOID)
  1148. {
  1149.   BOOL close_me=FALSE;
  1150.   struct TR_Message *trmsg;
  1151.   UBYTE reqstr[256];
  1152.   STRPTR helpString;
  1153.  
  1154.   if(main_project=TR_OpenProject(Application,main_trwintags))
  1155.   {
  1156.     while(!close_me)
  1157.     {
  1158.       TR_Wait(Application,NULL);
  1159.       while(trmsg=TR_GetMsg(Application))
  1160.       {
  1161.         if(trmsg->trm_Project==main_project) switch(trmsg->trm_Class)
  1162.         {
  1163.           case TRMS_CLOSEWINDOW:
  1164.             close_me=TRUE;
  1165.             break;
  1166.  
  1167.           case TRMS_HELP:
  1168.         if(helpString=(STRPTR)TR_GetAttribute(main_project,trmsg->trm_ID,TRDO_QuickHelpString))
  1169.           sprintf(reqstr,"Help for object %ld:\n%%h%s",trmsg->trm_ID,helpString);
  1170.         else
  1171.           sprintf(reqstr,"No help available for object %ld.",trmsg->trm_ID);
  1172.             TR_EasyRequestTags(Application,reqstr,"_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1173.             break;
  1174.  
  1175.           case TRMS_ERROR:
  1176.             puts(TR_GetErrorString(trmsg->trm_Data));
  1177.             break;
  1178.  
  1179.           case TRMS_NEWVALUE:
  1180.             if(trmsg->trm_ID==104) TR_SetAttribute(main_project,0,TRWI_QuickHelp,trmsg->trm_Data);
  1181.             break;
  1182.  
  1183.           case TRMS_ACTION:
  1184.             switch(trmsg->trm_ID)
  1185.             {
  1186.               case 1:
  1187.                 do_gadgets();
  1188.                 break;
  1189.               case 2:
  1190.                 do_groups();
  1191.                 break;
  1192.               case 3:
  1193.                 do_text();
  1194.                 break;
  1195.               case 4:
  1196.                 do_notification();
  1197.                 break;
  1198.               case 5:
  1199.                 do_backfill();
  1200.                 break;
  1201.               case 6:
  1202.                 do_disabling();
  1203.                 break;
  1204.               case 7:
  1205.                 do_appwindow();
  1206.                 break;
  1207.               case 8:
  1208.                 do_menus();
  1209.                 break;
  1210.               case 9:
  1211.                 do_lists();
  1212.                 break;
  1213.               case 101:
  1214.                 TR_AutoRequest(Application,main_project,about_trwintags);
  1215.                 break;
  1216.               case 102:
  1217.                 TR_EasyRequestTags(Application,"To get help, move the mouse pointer over\nany gadget or menu item and press <Help>\nor turn on QuickHelp before.","_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1218.                 break;
  1219.               case 103:
  1220.                 close_me=TRUE;
  1221.             }
  1222.             break;
  1223.         }
  1224.         TR_ReplyMsg(trmsg);
  1225.       }
  1226.     }
  1227.     TR_CloseProject(main_project);
  1228.   }
  1229.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  1230. }
  1231.  
  1232.  
  1233. /******************************************************************************************* Main function */
  1234.  
  1235. int main(void)
  1236. {
  1237.   if(TR_OpenTriton(TRITON20VERSION,
  1238.            TRCA_Name,"TritonDemo",
  1239.            TRCA_LongName,"Triton demo",
  1240.            TRCA_Version,"2.0",TAG_END))
  1241.   {
  1242.     do_main();
  1243.     TR_CloseTriton();
  1244.     return 0;
  1245.   } else puts("Can't open triton.library v6+.");
  1246.  
  1247.   return 20;
  1248. }
  1249.