home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / libraries / tri12dev.lha / Triton / Developer / DemoSource / demo.c next >
Encoding:
C/C++ Source or Header  |  1995-01-14  |  39.8 KB  |  1,225 lines

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