home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 3 / AACD03.BIN / AACD / Programming / Triton / Developer / DemoSource / demo.c < prev    next >
C/C++ Source or Header  |  1998-02-03  |  41KB  |  1,258 lines

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