home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / BGUI / bgui_e / sources / examples / BGUIDemo.e < prev    next >
Encoding:
Text File  |  1999-08-26  |  52.0 KB  |  1,174 lines

  1. /*
  2.  *  BGUIDEMO.E
  3.  *
  4.  * (C) Copyright 1998 Manuel Lemos.
  5.  * (C) Copyright 1995 Jaba Development.
  6.  * (C) Copyright 1995 Jan van den Baard.
  7.  * (C) Copyright 1998-1999 Dominique Dutoit
  8.  * All Rights Reserved.
  9.  *
  10.  * $Log: BGUIDemo.c,v $
  11.  * Revision 1.1.2.4  1998/12/08 03:54:25  mlemos
  12.  * Associated tooltip texts to the buttons of the main window.
  13.  *
  14.  * Revision 1.1.2.3  1998/12/07 00:12:46  mlemos
  15.  * Made the pages tabs AND radio button be activated using the keyboard.
  16.  *
  17.  * Revision 1.1.2.2  1998/03/01 20:32:48  mlemos
  18.  * Ensured that the stack is never less than 8000 bytes.
  19.  *
  20.  * Revision 1.1.2.1  1998/02/28 17:44:57  mlemos
  21.  * Ian sources
  22.  *
  23.  * ---
  24.  *
  25.  *  On 23 May 1996 : Custom hooks are removed. They will be back later.
  26.  *  On 18 June 1996: FRM_FILLPATTERN example added.
  27.  *  On 12 Aug 1996:  New naming styles
  28.  *  On 31 Aug 1996:  Dynamic groups
  29.  *  On 22 Dec 1996:  Hooks for custom backfill and tab key with pages added
  30.  */
  31.  
  32. OPT OSVERSION=37
  33. OPT PREPROCESS
  34.  
  35. MODULE  'libraries/bgui',
  36.         'libraries/bguim',
  37.         'libraries/gadtools',
  38.         'bgui',
  39.         'bgui/bgui_image',
  40.         'bgui/bgui_obsolete',
  41.         'workbench/workbench',
  42.         'workbench/startup',
  43.         'tools/boopsi',
  44.         'utility/hooks',
  45.         'tools/installhook',
  46.         'tools/inithook',
  47.         'utility/tagitem',
  48.         'devices/inputevent',
  49.         'exec/ports',
  50.         'exec/memory',
  51.         'intuition/screens',
  52.         'intuition/intuition',
  53.         'intuition/classes',
  54.         'intuition/classusr',
  55.         'intuition/gadgetclass',
  56.         'graphics',
  57.         'graphics/gfx',
  58.         'graphics/rastport',
  59.         'graphics/gfxmacros'
  60. /*
  61. **  Window objects.
  62. **/
  63. DEF wa_main , wa_groups , wa_notif , wa_info , wa_image , wa_bfill, wa_pages,
  64. /*
  65. **  Gadget objects from the main window.
  66. **/
  67.     bt_groups, bt_notif, bt_quit, bt_info, bt_images, bt_bfill,
  68.     bt_pages, bt_icondone, bt_iconquit, lv_iconlist, pg_pager,
  69. /*
  70. **  One, shared, message port for all
  71. **  demo windows.
  72. **/
  73.     sharedport:PTR TO mp
  74. /*
  75. **  Menus & gadget ID's.
  76. **/
  77. CONST ID_ABOUT      = 1
  78. CONST ID_QUIT       = 2
  79. /*
  80. **  Macros for the group objects. GObj() creates
  81. **  a simple infoclass object with some text in
  82. **  it. TObj() creates a simple groupclass object
  83. **  with a button frame.
  84. **/
  85. #define GObj(t)\
  86.             InfoObject,\
  87.                 INFO_TextFormat,    t,\
  88.                 INFO_FixTextWidth,  TRUE,\
  89.                 INFO_HorizOffset,   4,\
  90.                 INFO_VertOffset,    3,\
  91.                 ButtonFrame,\
  92.                 FRM_Flags,          FRF_RECESSED,\
  93.             EndObject
  94.  
  95. #define NWObj(v,id)\
  96.            StringObject,\
  97.               FuzzRidgeFrame,\
  98.               STRINGA_LONGVAL,       v,\
  99.               STRINGA_MAXCHARS,      3,\
  100.               STRINGA_IntegerMin,    1,\
  101.               STRINGA_IntegerMax,    999,\
  102.               STRINGA_JUSTIFICATION, GACT_STRINGCENTER,\
  103.               GA_ID,                 id,\
  104.            EndObject
  105.  
  106. #define TObj\
  107.             HGroupObject, HOffset( 3 ), VOffset( 2 ),\
  108.                 ButtonFrame,\
  109.                 FRM_BackFill,   FILL_RASTER,\
  110.                 FRM_Flags,      FRF_RECESSED,\
  111.             EndObject
  112.  
  113. CONST   ID_GROUP_W0   = 500,
  114.         ID_GROUP_W1   = 501,
  115.         ID_GROUP_W2   = 502,
  116.         ID_GROUP_W3   = 503
  117.  
  118. DEF w[4]:ARRAY OF LONG
  119. DEF backfill:hook, tabhook:hook
  120.  
  121. /*
  122. **  Main window button ID's.
  123. **/
  124. CONST ID_MAIN_GROUPS    = 3
  125. CONST ID_MAIN_NOTIF     = 4
  126. CONST ID_MAIN_INFO      = 5
  127. CONST ID_MAIN_IMAGE     = 6
  128. CONST ID_MAIN_BFILL     = 7
  129. CONST ID_MAIN_PAGES     = 8
  130. CONST ID_MAIN_ICON_CONT = 9
  131.  
  132. /*
  133. **  Put up a simple requester.
  134. **/
  135. PROC req( win:PTR TO window, gadgets, body:PTR TO CHAR )
  136.     DEF flags
  137.     flags   := BREQF_LOCKWINDOW OR BREQF_CENTERWINDOW OR BREQF_XEN_BUTTONS OR BREQF_AUTO_ASPECT OR BREQF_FAST_KEYS
  138. ENDPROC BgUI_RequestA( win, [ flags, NIL, gadgets, body, NIL, NIL, "_", 0, NIL, 0], NIL)
  139.  
  140. /*
  141. **  Open main window.
  142. **/
  143. PROC openmainwindow( appmask )
  144.  
  145. DEF window:PTR TO window,mainhelp:PTR TO CHAR
  146.  
  147.     mainhelp := ISEQ_C + 'BGUI is a shared library which offers a set of\n'+
  148.         'BOOPSI classes to allow for easy and flexible GUI creation.\n\n'+
  149.         'The main window is also an AppWindow. Drop some icons\n'+
  150.         'on it and see what happens.\n\n'+
  151.         'All windows also detect the aspect ratio of the screen they are\n'+
  152.         'located on and adjust frame thickness accoording to this.\n\n'+
  153.         'All other windows in this demo also have online-help. To access\n'+
  154.         'this help press the '+ISEQ_B+'HELP'+ISEQ_N+' key when the window is active.'
  155.  
  156.     wa_main := WindowObject,
  157.         WINDOW_Title,           'BGUIDemo',
  158.         WINDOW_ScreenTitle,     'BGUI Demo - ©1996 Ian J. Einman, ©1993-1995 Jaba Development.',
  159.         WINDOW_MenuStrip,       StartMenu,
  160.                                     Title( 'Project' ),
  161.                                         Item( 'About...', '?', ID_ABOUT),
  162.                                         ItemBar,
  163.                                         Item( 'Quit',     'Q', ID_QUIT ),
  164.                                 End,
  165.         WINDOW_SmartRefresh,    TRUE,
  166.         WINDOW_HelpText,        mainhelp,
  167.         WINDOW_AppWindow,       TRUE,
  168.         WINDOW_SizeGadget,      FALSE,
  169.         WINDOW_AutoAspect,      TRUE,
  170.         WINDOW_SharedPort,      sharedport,
  171.         WINDOW_AutoKeyLabel,    TRUE,
  172.         WINDOW_TitleZip,        TRUE,
  173.         WINDOW_ScaleWidth,      10,
  174.         WINDOW_CloseOnEsc,      TRUE,
  175.         WINDOW_MasterGroup,
  176.             VGroupObject, NormalOffset, NormalSpacing, GROUP_BackFill, SHINE_RASTER,
  177.                 StartMember,
  178.                     pg_pager := PageObject,
  179.                         /*
  180.                         **  Main page.
  181.                         **/
  182.                         PageMember,
  183.                             VGroupObject, WideSpacing, GROUP_BackFill, SHINE_RASTER,
  184.                                 StartMember,
  185.                                     InfoObject,
  186.                                         INFO_TextFormat,    '\ecBGUIDemo in AmigaE!\n©1996 Dominique Dutoit\n©1996 Ian J. Einman\n©1993-1995 Jaba Development\n\nPress the HELP key for more info.',
  187.                                         INFO_FixTextWidth,  TRUE,
  188.                                         INFO_MinLines,      6,
  189.                                         FRM_Type,           FRTYPE_NEXT,
  190.                                     EndObject,
  191.                                 EndMember,
  192.                                 StartMember,
  193.                                     HGroupObject, NormalSpacing,
  194.                                         StartMember,
  195.                                             VGroupObject, NormalSpacing,
  196.                                                 StartMember,
  197.                                                     bt_groups := ButtonObject,
  198.                                                         LAB_Label, '_Groups',
  199.                                                         GA_ID, ID_MAIN_GROUPS,
  200.                                                         BT_ToolTip, 'Shows different group layouts',
  201.                                                     EndObject,
  202.                                                 EndMember,
  203.                                                 StartMember,
  204.                                                     bt_notif  := ButtonObject,
  205.                                                         LAB_Label, '_Notification',
  206.                                                         GA_ID, ID_MAIN_NOTIF,
  207.                                                         BT_ToolTip, 'Shows notification between gadgets',
  208.                                                     EndObject,
  209.                                                 EndMember,
  210.                                                 VarSpace( DEFAULT_WEIGHT ),
  211.                                             EndObject,
  212.                                         EndMember,
  213.                                         StartMember,
  214.                                             VGroupObject, NormalSpacing,
  215.                                                 StartMember,
  216.                                                     bt_images := ButtonObject,
  217.                                                         LAB_Label, '_Images',
  218.                                                         GA_ID, ID_MAIN_IMAGE,
  219.                                                         BT_ToolTip, 'Shows different types of built-in images',
  220.                                                     EndObject,
  221.                                                 EndMember,
  222.                                                 StartMember,
  223.                                                     bt_bfill  := ButtonObject,
  224.                                                         LAB_Label, '_BackFill',
  225.                                                         GA_ID, ID_MAIN_BFILL,
  226.                                                         BT_ToolTip, 'Shows different types of background filling',
  227.                                                     EndObject,
  228.                                                 EndMember,
  229.                                                 StartMember,
  230.                                                     bt_quit   := ButtonObject,
  231.                                                         LAB_Label, '_Quit',
  232.                                                         GA_ID, ID_QUIT,
  233.                                                         BT_ToolTip, 'Quits this program',
  234.                                                     EndObject,
  235.                                                 EndMember,
  236.                                             EndObject,
  237.                                         EndMember,
  238.                                         StartMember,
  239.                                             VGroupObject, NormalSpacing,
  240.                                                 StartMember,
  241.                                                     bt_pages  := ButtonObject,
  242.                                                         LAB_Label, '_Pages',
  243.                                                         GA_ID, ID_MAIN_PAGES,
  244.                                                         BT_ToolTip, 'Shows paged of groups',
  245.                                                     EndObject,
  246.                                                 EndMember,
  247.                                                 StartMember,
  248.                                                     bt_info   := ButtonObject,
  249.                                                         LAB_Label, 'Info_Class',
  250.                                                         GA_ID, ID_MAIN_INFO,
  251.                                                         BT_ToolTip, 'Shows the Information gadget',
  252.                                                     EndObject,
  253.                                                 EndMember,
  254.                                                 VarSpace( DEFAULT_WEIGHT ),
  255.                                             EndObject,
  256.                                         EndMember,
  257.                                     EndObject, FixMinHeight,
  258.                                 EndMember,
  259.                             EndObject,
  260.                         /*
  261.                         **  Icon-drop list page.
  262.                         **/
  263.                         PageMember,
  264.                             VGroupObject, NormalSpacing, GROUP_BackFill, SHINE_RASTER,
  265.                                 StartMember,
  266.                                     InfoObject,
  267.                                         INFO_TextFormat,    'The following icons where dropped\nin the window.',
  268.                                         INFO_FixTextWidth,  TRUE,
  269.                                         INFO_MinLines,      2,
  270.                                         INFO_HorizOffset,   13,
  271.                                         FRM_Type,           FRTYPE_BUTTON,
  272.                                         FRM_Recessed,       TRUE,
  273.                                     EndObject, FixMinHeight,
  274.                                 EndMember,
  275.                                 StartMember,
  276.                                     lv_iconlist := ListviewObject,
  277.                                         LISTV_ReadOnly,         TRUE,
  278.                                     EndObject,
  279.                                 EndMember,
  280.                                 StartMember,
  281.                                     HGroupObject,
  282.                                         StartMember, bt_icondone := KeyButton( '_Continue', ID_MAIN_ICON_CONT ), EndMember,
  283.                                         VarSpace( DEFAULT_WEIGHT ),
  284.                                         StartMember, bt_iconquit := KeyButton( '_Quit',     ID_QUIT ), EndMember,
  285.                                     EndObject, FixMinHeight,
  286.                                 EndMember,
  287.                             EndObject,
  288.                     EndObject,
  289.                 EndMember,
  290.             EndObject,
  291.     EndObject
  292.  
  293.     /*
  294.     **  Object created OK?
  295.     **/
  296.     IF wa_main
  297.         /*
  298.         **  Open the window.
  299.         **/
  300.         IF window := WindowOpen( wa_main )
  301.             /*
  302.             **  Obtain appwindow signal mask.
  303.             **/
  304.             GetAttr( WINDOW_AppMask, wa_main, appmask )
  305.         ENDIF
  306.     ENDIF
  307.  
  308. ENDPROC window
  309. /*
  310. **  Open up the groups window.
  311. **/
  312. PROC opengroupswindow()
  313.  
  314. DEF window:PTR TO window,groupshelp:PTR TO CHAR
  315.  
  316.     groupshelp:=    '\ecThe BGUI layout engine is encapsulated in the groupclass.\n'+
  317.             'The groupclass will layout all of it\as members into a specific area.\n'+
  318.             'You can pass layout specific attributes to all group members\n'+
  319.             'which allows for flexible and powerful layout capabilities.'
  320.  
  321.     /*
  322.     **  If the object has not been created
  323.     **  already we build it.
  324.     **/
  325.     IF wa_groups=NIL
  326.  
  327.         w[0]:=NWObj( 25, ID_GROUP_W0)
  328.         w[1]:=NWObj( 50, ID_GROUP_W1)
  329.         w[2]:=NWObj( 75, ID_GROUP_W2)
  330.         w[3]:=NWObj(100, ID_GROUP_W3)
  331.  
  332.         wa_groups := WindowObject,
  333.             WINDOW_Title,           'BGUI Groups',
  334.             WINDOW_RMBTrap,         TRUE,
  335.             WINDOW_SmartRefresh,    TRUE,
  336.             WINDOW_HelpText,        groupshelp,
  337.             WINDOW_AutoAspect,      TRUE,
  338.             WINDOW_SharedPort,      sharedport,
  339.             WINDOW_CloseOnEsc,      TRUE,
  340.             WINDOW_ScaleWidth,      20,
  341.             WINDOW_ScaleHeight,     20,
  342.             WINDOW_MasterGroup,
  343.                 VGroupObject, NormalOffset, NormalSpacing,
  344.                     StartMember,
  345.                         HGroupObject, WideSpacing,
  346.                             StartMember,
  347.                                 HGroupObject, NeXTFrame, FrameTitle( 'Horizontal' ), NormalSpacing,
  348.                                     NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
  349.                                     StartMember, TObj, EndMember,
  350.                                     StartMember, TObj, EndMember,
  351.                                     StartMember, TObj, EndMember,
  352.                                 EndObject,
  353.                             EndMember,
  354.                             StartMember,
  355.                                 VGroupObject, NeXTFrame, FrameTitle( 'Vertical' ), NormalSpacing,
  356.                                     NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
  357.                                     StartMember, TObj, EndMember,
  358.                                     StartMember, TObj, EndMember,
  359.                                     StartMember, TObj, EndMember,
  360.                                 EndObject,
  361.                             EndMember,
  362.                             StartMember,
  363.                                 VGroupObject, NeXTFrame, FrameTitle( 'Grid' ), NormalSpacing,
  364.                                     NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
  365.                                     StartMember,
  366.                                         HGroupObject, NormalSpacing,
  367.                                             StartMember, TObj, EndMember,
  368.                                             StartMember, TObj, EndMember,
  369.                                             StartMember, TObj, EndMember,
  370.                                         EndObject,
  371.                                     EndMember,
  372.                                     StartMember,
  373.                                         HGroupObject, NormalSpacing,
  374.                                             StartMember, TObj, EndMember,
  375.                                             StartMember, TObj, EndMember,
  376.                                             StartMember, TObj, EndMember,
  377.                                         EndObject,
  378.                                     EndMember,
  379.                                     StartMember,
  380.                                         HGroupObject, NormalSpacing,
  381.                                             StartMember, TObj, EndMember,
  382.                                             StartMember, TObj, EndMember,
  383.                                             StartMember, TObj, EndMember,
  384.                                         EndObject,
  385.                                     EndMember,
  386.                                 EndObject,
  387.                             EndMember,
  388.                         EndObject,
  389.                     EndMember,
  390.                     StartMember,
  391.                         VGroupObject, NormalSpacing, FrameTitle( 'Dynamic, Weight, Free and Fixed sizes.' ), NeXTFrame,
  392.                             NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
  393.                             StartMember,
  394.                                 HGroupObject, NormalSpacing,
  395.                                     StartMember, w[0], Weight( 25 ), EndMember,
  396.                                     StartMember, w[1], Weight( 50 ), EndMember,
  397.                                     StartMember, w[2], Weight( 75 ), EndMember,
  398.                                     StartMember, w[3], Weight( 100 ), EndMember,
  399.                                 EndObject,
  400.                             EndMember,
  401.  
  402.                             StartMember,
  403.                                 HGroupObject, NormalSpacing,
  404.                                     StartMember, GObj( '25Kg'  ), Weight( 25  ), EndMember,
  405.                                     StartMember, GObj( '50Kg'  ), Weight( 50  ), EndMember,
  406.                                     StartMember, GObj( '75Kg'  ), Weight( 75  ), EndMember,
  407.                                     StartMember, GObj( '100Kg' ), Weight( 100 ), EndMember,
  408.                                 EndObject,
  409.                             EndMember,
  410.                             StartMember,
  411.                                 HGroupObject, NormalSpacing,
  412.                                     StartMember, GObj( 'Free'  ), EndMember,
  413.                                     StartMember, GObj( 'Fixed' ), FixMinWidth, EndMember,
  414.                                     StartMember, GObj( 'Free'  ), EndMember,
  415.                                     StartMember, GObj( 'Fixed' ), FixMinWidth, EndMember,
  416.                                 EndObject,
  417.                             EndMember,
  418.                         EndObject, FixMinHeight,
  419.                     EndMember,
  420.                 EndObject,
  421.         EndObject
  422.     ENDIF
  423.  
  424.     /*
  425.     **  Object OK?
  426.     **/
  427.     IF wa_groups
  428.         /*
  429.         **  Open the window.
  430.         **/
  431.         window := WindowOpen( wa_groups )
  432.     ENDIF
  433. ENDPROC window
  434. /*
  435. **  Open the notification window.
  436. **/
  437. PROC opennotifwindow()
  438.  
  439. DEF window:PTR TO window,notifhelp:PTR TO CHAR,
  440.     c, b, p1, p2, s1, s2, p, i1, i2
  441.  
  442.     notifhelp:= '\ecNotification can be used to let an object keep one or\n'+
  443.         'more other objects informed about it\as status. BGUI offers several\n'+
  444.         'kinds of notification of which two (conditional and map-list) are\n'+
  445.         'shown in this demonstration.'
  446.  
  447.     /*
  448.     **  Not created yet? Create it now!
  449.     **/
  450.     IF wa_notif=NIL
  451.         wa_notif := WindowObject,
  452.             WINDOW_Title,           'BGUI notification',
  453.             WINDOW_RMBTrap,         TRUE,
  454.             WINDOW_SmartRefresh,    TRUE,
  455.             WINDOW_HelpText,        notifhelp,
  456.             WINDOW_AutoAspect,      TRUE,
  457.             WINDOW_SharedPort,      sharedport,
  458.             WINDOW_CloseOnEsc,      TRUE,
  459.             WINDOW_MasterGroup,
  460.                 VGroupObject, NormalOffset, NormalSpacing,
  461.                     StartMember, TitleSeparator( 'Conditional' ), EndMember,
  462.                     StartMember,
  463.                         HGroupObject, Spacing( 4 ),
  464.                             StartMember, c := Cycle( NIL, [ 'Enabled-->', 'Disabled-->', 'Still Disabled-->', NIL ], 0, 0 ), EndMember,
  465.                             StartMember, b := Button( 'Target', 0 ), EndMember,
  466.                         EndObject, FixMinHeight,
  467.                     EndMember,
  468.                     StartMember, TitleSeparator( 'Map-List' ), EndMember,
  469.                     StartMember,
  470.                         HGroupObject, NormalSpacing,
  471.                             StartMember,
  472.                                 VGroupObject, NormalSpacing,
  473.                                     StartMember, i1 := IndicatorFormat( 0, 100, 0, IDJ_CENTER, '\d%%' ), FixMinHeight, EndMember,
  474.                                     StartMember, p1 := HorizProgress( NIL, 0, 100, 0 ), EndMember,
  475.                                 EndObject,
  476.                             EndMember,
  477.                             StartMember, s1 := VertSlider(  NIL, 0, 100, 0, 0 ), FixWidth( 16 ), EndMember,
  478.                             StartMember, p  := VertScroller( NIL, 0, 101, 1, 0 ), FixWidth( 16 ), EndMember,
  479.                             StartMember, s2 := VertSlider(  NIL, 0, 100, 0, 0 ), FixWidth( 16 ), EndMember,
  480.                             StartMember,
  481.                                 VGroupObject, NormalSpacing,
  482.                                     StartMember, i2 := IndicatorFormat( 0, 100, 0, IDJ_CENTER, '\d%%' ), FixMinHeight, EndMember,
  483.                                     StartMember, p2 := VertProgress( NIL, 0, 100, 0 ), EndMember,
  484.                                 EndObject,
  485.                             EndMember,
  486.                         EndObject,
  487.                     EndMember,
  488.                 EndObject,
  489.         EndObject
  490.  
  491.         IF wa_notif
  492.             /*
  493.             **  Connect the cycle object with the button.
  494.             **/
  495.             AddCondit( c, b, CYC_Active, 0, GA_DISABLED, FALSE, GA_DISABLED, TRUE )
  496.             /*
  497.             **  Connect sliders, prop, progression and indicators.
  498.             **/
  499.             AddMap( s1, p1, [ SLIDER_Level,  PROGRESS_Done, TAG_END ] )
  500.             AddMap( s2, p2, [ SLIDER_Level,  PROGRESS_Done, TAG_END ] )
  501.             AddMap( p,  s1, [ PGA_TOP,   SLIDER_Level,  TAG_END ] )
  502.             AddMap( p,  s2, [ PGA_TOP,   SLIDER_Level,  TAG_END ] )
  503.             AddMap( p1, i1, [ PROGRESS_Done, INDIC_Level,   TAG_END ] )
  504.             AddMap( p2, i2, [ PROGRESS_Done, INDIC_Level,   TAG_END ] )
  505.         ENDIF
  506.     ENDIF
  507.  
  508.     /*
  509.     **  Object OK?
  510.     **/
  511.     IF wa_notif
  512.         /*
  513.         **  Open window.
  514.         **/
  515.         window := WindowOpen( wa_notif )
  516.     ENDIF
  517. ENDPROC window
  518. /*
  519. **  Open infoclass window.
  520. **/
  521. PROC openinfowindow()
  522.  
  523.     DEF window:PTR TO window,infohelp:PTR TO CHAR,text:PTR TO CHAR,
  524.         args
  525.  
  526.     infohelp:= '\ecNot much more can be said about the BGUI infoclass than\n'+
  527.         'is said in this window. Except maybe that this text is shown in an\n'+
  528.         'infoclass object as are all body texts from a BGUI requester.'
  529.  
  530.     text:=  '\ecBGUI offers the InfoClass.\n'+
  531.         'This class is a text display class which\n'+
  532.         'allows things like:\n\n\ed3C\ed4o\ed5l\ed6o\ed8r\ed2s\n\n'+
  533.         '\elLeft Aligned...\n\erRight Aligned...\n'+
  534.         '\ecCentered...\n\n\ebBold...\n\en'+
  535.         '\eiItalic...\n\en\euUnderlined...\n\n'+
  536.         '\eb\eiAnd combinations!\n\n'+
  537.         '\enFree CHIP:\ed3 \d \ed2 Free FAST: \ed3 \d'
  538.     
  539.     /*
  540.     **  Not created already?
  541.     **/
  542.     IF wa_info=NIL
  543.         /*
  544.         **  Setup arguments for the
  545.         **  infoclass object.
  546.         **/
  547.         args := [ AvailMem( MEMF_CHIP ), AvailMem( MEMF_FAST ), NIL ]
  548.  
  549.         wa_info := WindowObject,
  550.             WINDOW_Title,           'BGUI information class',
  551.             WINDOW_RMBTrap,         TRUE,
  552.             WINDOW_SmartRefresh,    TRUE,
  553.             WINDOW_HelpText,        infohelp,
  554.             WINDOW_AutoAspect,      TRUE,
  555.             WINDOW_SharedPort,      sharedport,
  556.             WINDOW_CloseOnEsc,      TRUE,
  557.             WINDOW_MasterGroup,
  558.                 VGroupObject, HOffset( 4 ), VOffset( 4 ),
  559.                     StartMember,
  560.                         InfoFixed( NIL,text, args, 17 ),
  561.                     EndMember,
  562.                 EndObject,
  563.         EndObject
  564.     ENDIF
  565.  
  566.     /*
  567.     **  Object OK?
  568.     **/
  569.     IF wa_info
  570.         /*
  571.         **  Open window.
  572.         **/
  573.         window := WindowOpen( wa_info )
  574.     ENDIF
  575.  
  576. ENDPROC window
  577. /*
  578. **  Open images window.
  579. **/
  580. PROC openimagewindow()
  581.  
  582. DEF window:PTR TO window,imagehelp:PTR TO CHAR
  583.  
  584.     imagehelp :=    '\ecThis window shows you the built-in images that BGUI has\n'+
  585.             'to offer. Ofcourse these images are all scalable and it is possible\n'+
  586.             'to create your own, scalable, imagery with the BGUI vectorclass.'
  587.  
  588.     /*
  589.     **  Not yet created?
  590.     **/
  591.     IF wa_image=NIL
  592.         wa_image := WindowObject,
  593.             WINDOW_Title,           'BGUI images',
  594.             WINDOW_RMBTrap,         TRUE,
  595.             WINDOW_SmartRefresh,    TRUE,
  596.             WINDOW_HelpText,        imagehelp,
  597.             WINDOW_AutoAspect,      TRUE,
  598.             WINDOW_SharedPort,      sharedport,
  599.             WINDOW_CloseOnEsc,      TRUE,
  600.             WINDOW_ScaleHeight,     10,
  601.             WINDOW_MasterGroup,
  602.                 VGroupObject, NormalOffset, WideSpacing,
  603.                     StartMember,
  604.                         HGroupObject, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL), NormalSpacing, NeXTFrame, FrameTitle('Fixed size'),
  605.                             VarSpace( DEFAULT_WEIGHT ),
  606.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETPATH,     ButtonFrame, EndObject, FixWidth( GETPATH_WIDTH     ), FixHeight( GETPATH_HEIGHT     ), EndMember,
  607.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETFILE,     ButtonFrame, EndObject, FixWidth( GETFILE_WIDTH     ), FixHeight( GETFILE_HEIGHT     ), EndMember,
  608.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_CHECKMARK,   ButtonFrame, EndObject, FixWidth( CHECKMARK_WIDTH   ), FixHeight( CHECKMARK_HEIGHT   ), EndMember,
  609.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_POPUP,       ButtonFrame, EndObject, FixWidth( POPUP_WIDTH   ), FixHeight( POPUP_HEIGHT   ), EndMember,
  610.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_UP,    ButtonFrame, EndObject, FixWidth( ARROW_UP_WIDTH    ), FixHeight( ARROW_UP_HEIGHT    ), EndMember,
  611.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_DOWN,  ButtonFrame, EndObject, FixWidth( ARROW_DOWN_WIDTH  ), FixHeight( ARROW_DOWN_HEIGHT  ), EndMember,
  612.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_LEFT,  ButtonFrame, EndObject, FixWidth( ARROW_LEFT_WIDTH  ), FixHeight( ARROW_LEFT_HEIGHT  ), EndMember,
  613.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_RIGHT, ButtonFrame, EndObject, FixWidth( ARROW_RIGHT_WIDTH ), FixHeight( ARROW_RIGHT_HEIGHT ), EndMember,
  614.                             VarSpace( DEFAULT_WEIGHT ),
  615.                         EndObject, FixMinHeight,
  616.                     EndMember,
  617.                     StartMember,
  618.                         HGroupObject, NeXTFrame, FrameTitle( 'Free size' ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
  619.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETPATH,     ButtonFrame, EndObject, EndMember,
  620.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETFILE,     ButtonFrame, EndObject, EndMember,
  621.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_CHECKMARK,   ButtonFrame, EndObject, EndMember,
  622.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_POPUP,       ButtonFrame, EndObject, EndMember,
  623.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_UP,    ButtonFrame, EndObject, EndMember,
  624.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_DOWN,  ButtonFrame, EndObject, EndMember,
  625.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_LEFT,  ButtonFrame, EndObject, EndMember,
  626.                             StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_RIGHT, ButtonFrame, EndObject, EndMember,
  627.                         EndObject,
  628.                     EndMember,
  629.                 EndObject,
  630.         EndObject
  631.     ENDIF
  632.  
  633.     /*
  634.     **  Object OK?
  635.     **/
  636.     IF wa_image
  637.         /*
  638.         **  Open the window.
  639.         **/
  640.         window := WindowOpen( wa_image )
  641.     ENDIF
  642.  
  643. ENDPROC window
  644.  
  645. /*
  646. ** The backFill hook to show custom backfills.
  647. ** Renders a pattern from the WBPattern preferences
  648. ** editor as back-fill.
  649. **/
  650. PROC backFillHook( hook:PTR TO hook, imo:PTR TO object, fdm:PTR TO frameDrawMsg )
  651.    DEF pat
  652.  
  653.    pat := [ $0000, $0000, $0002, $0002, $000A, $000A, $002A, $002A,
  654.             $00AA, $002A, $03EA, $000A, $0FFA, $0002, $3FFE, $0000,
  655.             $0000, $7FFC, $4000, $5FF0, $5000, $57C0, $5400, $5500,
  656.             $5400, $5400, $5000, $5000, $4000, $4000, $0000, $0000 ]:INT
  657.  
  658.    fdm.rPort.mask := $03
  659.    SetAfPt( fdm.rPort, pat, -4 )
  660.    SetAPen( fdm.rPort, Shl( 1 , fdm.drawInfo.depth ) - 1 )
  661.    RectFill( fdm.rPort, fdm.bounds.minx, fdm.bounds.miny,
  662.               fdm.bounds.maxx, fdm.bounds.maxy )
  663.    SetAfPt( fdm.rPort, NIL, 0 )
  664.  
  665. ENDPROC FRC_OK
  666.  
  667. /*
  668. **  Open back-fill window.
  669. **/
  670. PROC openfillwindow()
  671.     DEF window=NIL:PTR TO window,backfillhelp:PTR TO CHAR
  672.     DEF screen:PTR TO screen
  673.     DEF bp:PTR TO bguiPattern
  674.  
  675.     installhook( backfill, {backFillHook} )
  676.  
  677.     backfillhelp := 'Here you see the built-in backfill patterns BGUI supports.\n'+
  678.             'These backfill patterns can all be used in groups and frames.\n' +
  679.             'The frameclass also offers you the possibility to add hooks for\n' +
  680.             'custom backfills and frame rendering.\n\n' +
  681.             'The middle frame shows you a custom backfill hook which renders a\n' +
  682.             'simple pattern known from the WBPattern prefs editor as background.'
  683.  
  684.     /*
  685.     **  Not yet created?
  686.     **/
  687.     IF wa_bfill = NIL
  688.         NEW bp
  689.         screen := LockPubScreen( NIL )
  690.         bp.flags := 0
  691.         bp.left := 0
  692.         bp.top := 0
  693.         bp.width := 120
  694.         bp.height := 80
  695.         bp.bitMap := screen.rastport.bitmap
  696.         bp.object := NIL
  697.         UnlockPubScreen( NIL, screen )
  698.         wa_bfill := WindowObject,
  699.             WINDOW_Title,           'BGUI back fill patterns',
  700.             WINDOW_RMBTrap,         TRUE,
  701.             WINDOW_SmartRefresh,    TRUE,
  702.             WINDOW_HelpText,        backfillhelp,
  703.             WINDOW_ScaleWidth,      50,
  704.             WINDOW_ScaleHeight,     50,
  705.             WINDOW_AutoAspect,      TRUE,
  706.             WINDOW_SharedPort,      sharedport,
  707.             WINDOW_CloseOnEsc,      TRUE,
  708.             WINDOW_MasterGroup,
  709.                 HGroupObject, NormalOffset, WideSpacing,
  710.                     StartMember,
  711.                         VGroupObject, NormalOffset, NeXTFrame, FrameTitle('Raster Fill'), NormalSpacing,
  712.                             StartMember,
  713.                                 HGroupObject, NormalSpacing,
  714.                                     StartMember, InfoObject, ButtonFrame, ShineRaster,  EndObject, EndMember,
  715.                                     StartMember, InfoObject, ButtonFrame, ShadowRaster, EndObject, EndMember,
  716.                                 EndObject,
  717.                             EndMember,
  718.                             StartMember,
  719.                                 HGroupObject, NormalSpacing,
  720.                                     StartMember, InfoObject, ButtonFrame, ShineShadowRaster, EndObject, EndMember,
  721.                                     StartMember, InfoObject, ButtonFrame, FillRaster,    EndObject, EndMember,
  722.                                 EndObject,
  723.                             EndMember,
  724.                             StartMember,
  725.                                 HGroupObject, NormalSpacing,
  726.                                     StartMember, InfoObject, ButtonFrame, ShineFillRaster,  EndObject, EndMember,
  727.                                     StartMember, InfoObject, ButtonFrame, ShadowFillRaster, EndObject, EndMember,
  728.                                 EndObject,
  729.                             EndMember,
  730.                             StartMember,
  731.                                 HGroupObject, NormalSpacing,
  732.                                     StartMember, InfoObject, ButtonFrame, ShineBlock,  EndObject, EndMember,
  733.                                     StartMember, InfoObject, ButtonFrame, ShadowBlock, EndObject, EndMember,
  734.                                 EndObject,
  735.                             EndMember,
  736.                         EndObject,
  737.                     EndMember,
  738.                     StartMember,
  739.                        VGroupObject, NormalOffset, NeXTFrame, FrameTitle('Custom Hook'),
  740.                           StartMember,
  741.                              InfoObject, ButtonFrame, FRM_BackFillHook, backfill, EndObject,
  742.                           EndMember,
  743.                        EndObject,
  744.                     EndMember,
  745.                     StartMember,
  746.                         VGroupObject, NormalOffset, NeXTFrame, FrameTitle('Bitmap Pattern'),
  747.                             StartMember,
  748.                                 InfoObject, ButtonFrame, FRM_FillPattern, bp, EndObject,
  749.                             EndMember,
  750.                         EndObject,
  751.                     EndMember,
  752.                 EndObject,
  753.         EndObject
  754.     ENDIF
  755.     /*
  756.     **  Object OK?
  757.     **/
  758.     IF wa_bfill
  759.         /*
  760.         **  Open window.
  761.         **/
  762.         window := WindowOpen( wa_bfill )
  763.     ENDIF
  764. ENDPROC window
  765.  
  766. /*
  767. ** Tabs-key control of the tabs gadget.
  768. **/
  769. PROC tabHookFunc( hook:PTR TO hook, obj:PTR TO object, msg:PTR TO intuimessage)
  770.     DEF window:PTR TO window
  771.     DEF mx_obj:PTR TO object
  772.     DEF pos
  773.  
  774.     mx_obj := hook.data
  775.  
  776.     GetAttr( WINDOW_Window, obj,  {window} )
  777.     GetAttr( MX_Active,  mx_obj, {pos} )
  778.  
  779.     IF ( msg.code = $42 )
  780.         IF ( msg.qualifier AND ( IEQUALIFIER_LSHIFT OR IEQUALIFIER_RSHIFT ) ) THEN DEC pos ELSE INC pos
  781.         SetGadgetAttrsA( mx_obj, window, NIL, [ MX_Active, pos, TAG_END ] )
  782.     ENDIF
  783. ENDPROC
  784.  
  785. /*
  786. **  Open pages window.
  787. **/
  788. PROC openpageswindow()
  789.  
  790.     DEF c, p, m, s1, s2, s3,
  791.     window:PTR TO window,pageshelp:PTR TO CHAR
  792.  
  793.     pageshelp :=    '\ecThe pageclass allows you to setup a set of pages containing\n'+
  794.             'BGUI gadgets or groups. This will give you the oppertunity to\n'+
  795.             'have several set\as of gadgets in a single window.\n\n'+
  796.             'This window has a IDCMP-hook installed which allows you to\n'+
  797.             'control the Tabs object with your TAB key.'
  798.  
  799.  
  800.     /*
  801.     **  Not yet created?
  802.     **/
  803.     IF wa_pages=NIL
  804.         /*
  805.         **  Create tabs-object.
  806.         **/
  807.         c := MxObject,
  808.                 MX_TabsObject,      TRUE,
  809.                 LAB_Label,      NIL,
  810.                 MX_Labels,      ['_Buttons', '_Strings', '_CheckBoxes', '_Radio-Buttons', NIL ],
  811.                 MX_Active,      NIL,
  812.                 GA_ID,          NIL,
  813.              EndObject
  814.  
  815.         inithook( tabhook, {tabHookFunc}, c )
  816.  
  817.         wa_pages := WindowObject,
  818.             WINDOW_Title,           'BGUI pages',
  819.             WINDOW_RMBTrap,         TRUE,
  820.             WINDOW_SmartRefresh,    TRUE,
  821.             WINDOW_HelpText,        pageshelp,
  822.             WINDOW_AutoAspect,      TRUE,
  823.             WINDOW_SharedPort,      sharedport,
  824.             WINDOW_IDCMPHookBits,   IDCMP_RAWKEY,
  825.             WINDOW_IDCMPHook,       tabhook,
  826.             WINDOW_AutoKeyLabel,    TRUE,
  827.             WINDOW_CloseOnEsc,      TRUE,
  828.             WINDOW_MasterGroup,
  829.                 VGroupObject, NormalOffset,
  830.                     StartMember, c, FixMinHeight, EndMember,
  831.                     StartMember, VGroupObject, FRM_Type, FRTYPE_TAB_ABOVE,
  832.                     StartMember,
  833.                         p := PageObject,
  834.                             /*
  835.                             **  Button page.
  836.                             **/
  837.                             PageMember,
  838.                                 VGroupObject, Spacing(4), NormalOffset,
  839.                                     VarSpace( DEFAULT_WEIGHT ),
  840.                                     StartMember, PrefButton( 'Button #_1', 0 ), FixMinHeight, EndMember,
  841.                                     StartMember, PrefButton( 'Button #_2', 0 ), FixMinHeight, EndMember,
  842.                                     StartMember, PrefButton( 'Button #_3', 0 ), FixMinHeight, EndMember,
  843.                                     VarSpace( DEFAULT_WEIGHT ),
  844.                                 EndObject,
  845.                             /*
  846.                             **  String page.
  847.                             **/
  848.                             PageMember,
  849.                                 VGroupObject, Spacing(4), NormalOffset,
  850.                                     VarSpace( DEFAULT_WEIGHT ),
  851.                                     StartMember, s1 := PrefString( 'String #_1', '', 256, 0 ), FixMinHeight, EndMember,
  852.                                     StartMember, s2 := PrefString( 'String #_2', '', 256, 0 ), FixMinHeight, EndMember,
  853.                                     StartMember, s3 := PrefString( 'String #_3', '', 256, 0 ), FixMinHeight, EndMember,
  854.                                     VarSpace( DEFAULT_WEIGHT ),
  855.                                 EndObject,
  856.                             /*
  857.                             **  CheckBox page.
  858.                             **/
  859.                             PageMember,
  860.                                 VGroupObject, Spacing(4), NormalOffset,
  861.                                     StartMember,
  862.                                         HGroupObject, Spacing( 4 ),
  863.                                             VarSpace( DEFAULT_WEIGHT ),
  864.                                             StartMember,
  865.                                                 VGroupObject, Spacing( 4 ),
  866.                                                     VarSpace( DEFAULT_WEIGHT ),
  867.                                                     StartMember, CheckBox( 'CheckBox #_1', FALSE, 0 ), EndMember,
  868.                                                     StartMember, CheckBox( 'CheckBox #_2', FALSE, 0 ), EndMember,
  869.                                                     StartMember, CheckBox( 'CheckBox #_3', FALSE, 0 ), EndMember,
  870.                                                     VarSpace( DEFAULT_WEIGHT ),
  871.                                                 EndObject, FixMinWidth,
  872.                                             EndMember,
  873.                                             VarSpace( DEFAULT_WEIGHT ),
  874.                                         EndObject,
  875.                                     EndMember,
  876.                                 EndObject,
  877.                             /*
  878.                             **  Mx page.
  879.                             **/
  880.                             PageMember,
  881.                                 VGroupObject, Spacing(4), NormalOffset,
  882.                                     VarSpace( DEFAULT_WEIGHT ),
  883.                                     StartMember,
  884.                                         HGroupObject,
  885.                                             VarSpace( DEFAULT_WEIGHT ),
  886.                                             StartMember, m := MxObject,
  887.                                                     GROUP_Style,    GRSTYLE_VERTICAL,
  888.                                                     GROUP_Spacing,  2,
  889.                                                     LAB_Label,      '_Mx Object',
  890.                                                     LAB_Place,      PLACE_ABOVE,
  891.                                                     LAB_Underscore, "_",
  892.                                                     LAB_Highlight,  TRUE,
  893.                                                     MX_Labels,      [ 'MX #_1', 'MX #_2', 'MX #_3', 'MX #_4', NIL ],
  894.                                                     MX_LabelPlace,  PLACE_LEFT,
  895.                                                     EndObject, FixMinSize,
  896.                                             EndMember,
  897.                                             VarSpace( DEFAULT_WEIGHT ),
  898.                                         EndObject, FixMinHeight,
  899.                                     EndMember,
  900.                                     VarSpace( DEFAULT_WEIGHT ),
  901.                                 EndObject,
  902.                         EndObject,
  903.                     EndMember,
  904.                     EndObject, EndMember,
  905.                 EndObject,
  906.         EndObject
  907.  
  908.         /*
  909.         **  Object OK?
  910.         **/
  911.         IF wa_pages
  912.             /*
  913.             **  Connect the cycle to the page.
  914.             **/
  915.             AddMap( c, p, [ MX_Active, PAGE_Active, TAG_END ] )
  916.             /*
  917.             **  Set tab-cycling order.
  918.             **/
  919.             domethod( wa_pages, [WM_TABCYCLE_ORDER, s1, s2, s3, NIL] )
  920.         ENDIF
  921.     ENDIF
  922.  
  923.     /*
  924.     **  Object OK?
  925.     **/
  926.     IF wa_pages
  927.         /*
  928.         **  Open the window.
  929.         **/
  930.         window := WindowOpen( wa_pages )
  931.     ENDIF
  932. ENDPROC window
  933. /*
  934. **  Main entry.
  935. **/
  936. PROC main()
  937.  
  938. DEF main=NIL:PTR TO window, groups=NIL:PTR TO window, notif=NIL:PTR TO window,
  939.     info=NIL:PTR TO window, image=NIL:PTR TO window, bfill=NIL:PTR TO window,
  940.     pages=NIL:PTR TO window, sigwin = -1,
  941.     apm:PTR TO appmessage, ap:PTR TO wbarg,
  942.     sigmask = 0, sigrec, rc, appsig = 0, i,
  943.     running = TRUE, name[ 256 ]:STRING, id
  944.     /*
  945.     **      Open the library.
  946.     **/
  947.     IF bguibase := OpenLibrary( 'bgui.library', BGUIVERSION )
  948.         /*
  949.         **  Create the shared message port.
  950.         **/
  951.         IF sharedport := CreateMsgPort()
  952.             /*
  953.             **  Open the main window.
  954.             **/
  955.             IF main := openmainwindow( {appsig} )
  956.                 /*
  957.                 **  OR signal masks.
  958.                 **/
  959.                 sigmask :=sigmask OR ( appsig OR Shl( 1,sharedport.sigbit ))
  960.                 /*
  961.                 **  Loop...
  962.                 **/
  963.                 WHILE running = TRUE
  964.                     /*
  965.                     **  Wait for the signals to come.
  966.                     **/
  967.                     sigrec := Wait( sigmask )
  968.                     /*
  969.                     **  AppWindow signal?
  970.                     **/
  971.                     IF ( sigrec AND appsig )
  972.                         /*
  973.                         **  Obtain AppWindow messages.
  974.                         **/
  975.                         WHILE apm := GetAppMsg( wa_main )
  976.                             /*
  977.                             **  Get all dropped icons.
  978.                             **/
  979.                             ap := apm.arglist
  980.                             FOR i := 0 TO apm.numargs - 1
  981.                                 /* Build fully qualified name. */
  982.                                 NameFromLock( ap[ i ].lock, name, 256 )
  983.                                 AddPart( name, ap[ i ].name, 256 )
  984.                                 /* Add it to the listview. */
  985.                                 AddEntry( main, lv_iconlist, name, LVAP_SORTED )
  986.                             ENDFOR
  987.                             /*
  988.                             **  Important! We must reply the message!
  989.                             **/
  990.                             ReplyMsg( apm )
  991.                         ENDWHILE
  992.                         /*
  993.                         **  Switch to the Icon page.
  994.                         **/
  995.                         SetGadgetAttrsA(pg_pager, main, NIL,[ PAGE_Active, 1, TAG_END] )
  996.                     ENDIF
  997.                     /*
  998.                     **  Find out the which window signalled us.
  999.                     **/
  1000.                     IF ( sigrec AND Shl( 1,sharedport.sigbit ))
  1001.                         WHILE sigwin := domethod( wa_main,[ WM_GET_SIGNAL_WINDOW] )
  1002.  
  1003.                             /*
  1004.                             **  Main window signal?
  1005.                             **/
  1006.                             IF sigwin = main
  1007.                                 /*
  1008.                                 **  Call the main-window event handler.
  1009.                                 **/
  1010.                                 WHILE ( rc := HandleEvent( wa_main )) <> WMHI_NOMORE
  1011.                                     SELECT rc
  1012.  
  1013.                                         CASE    WMHI_CLOSEWINDOW
  1014.                                             running := FALSE
  1015.                                         CASE    ID_QUIT
  1016.                                             running := FALSE
  1017.  
  1018.                                         CASE    ID_ABOUT
  1019.                                             req( main, '_OK', '\ec\eb\ed8BGUIDemo in AmigaE!\en\ed2\n(C) Copyright 1993-1995 Jaba Development\nAmigaE''tized by Dominique Dutoit' )
  1020.  
  1021.                                         CASE    ID_MAIN_GROUPS
  1022.                                             /*
  1023.                                             **  Open groups window.
  1024.                                             **/
  1025.                                              IF groups=NIL THEN groups := opengroupswindow()
  1026.  
  1027.                                         CASE    ID_MAIN_NOTIF
  1028.                                             /*
  1029.                                             **  Open notification window.
  1030.                                             **/
  1031.                                              IF notif=NIL THEN notif := opennotifwindow()
  1032.  
  1033.                                         CASE    ID_MAIN_INFO
  1034.                                             /*
  1035.                                             **  Open infoclass window.
  1036.                                             **/
  1037.                                              IF info=NIL THEN info := openinfowindow()
  1038.  
  1039.                                         CASE    ID_MAIN_IMAGE
  1040.                                             /*
  1041.                                             **  Open images window.
  1042.                                             **/
  1043.                                              IF image=NIL THEN image := openimagewindow()
  1044.  
  1045.                                         CASE    ID_MAIN_BFILL
  1046.                                             /*
  1047.                                             **  Open backfill window.
  1048.                                             **/
  1049.                                              IF bfill=NIL THEN bfill := openfillwindow()
  1050.  
  1051.                                         CASE    ID_MAIN_PAGES
  1052.                                             /*
  1053.                                             **  Open pages window.
  1054.                                             **/
  1055.                                             IF pages=NIL THEN pages := openpageswindow()
  1056.  
  1057.                                         CASE    ID_MAIN_ICON_CONT
  1058.                                             /*
  1059.                                             **  Switch back to the main page.
  1060.                                             **/
  1061.                                             SetGadgetAttrsA(pg_pager, main, NIL,[ PAGE_Active, 0, TAG_END] )
  1062.                                             /*
  1063.                                             **  Clear all entries from the listview.
  1064.                                             **/
  1065.                                             ClearList( main, lv_iconlist )
  1066.                                     ENDSELECT
  1067.                                 ENDWHILE
  1068.                             ENDIF
  1069.                             /*
  1070.                             **  The code below will close the
  1071.                             **  specific window.
  1072.                             **/
  1073.                             IF ( sigwin = groups )
  1074.                                 WHILE ( rc := HandleEvent( wa_groups )) <> WMHI_NOMORE
  1075.                                     SELECT rc
  1076.                                         CASE    ID_GROUP_W0
  1077.                                             id := rc - ID_GROUP_W0
  1078.                                             GetAttr(STRINGA_LONGVAL, w[id], {rc})
  1079.                                             SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
  1080.                                         CASE    ID_GROUP_W1
  1081.                                             id := rc - ID_GROUP_W0
  1082.                                             GetAttr(STRINGA_LONGVAL, w[id], {rc})
  1083.                                             SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
  1084.                                         CASE    ID_GROUP_W2
  1085.                                             id := rc - ID_GROUP_W0
  1086.                                             GetAttr(STRINGA_LONGVAL, w[id], {rc})
  1087.                                             SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
  1088.                                         CASE    ID_GROUP_W3
  1089.                                             id := rc - ID_GROUP_W0
  1090.                                             GetAttr(STRINGA_LONGVAL, w[id], {rc})
  1091.                                             SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
  1092.                                         CASE    WMHI_CLOSEWINDOW
  1093.                                             WindowClose( wa_groups )
  1094.                                             groups := NIL
  1095.                                     ENDSELECT
  1096.                                 ENDWHILE
  1097.                             ENDIF
  1098.  
  1099.                             IF ( sigwin = notif )
  1100.                                 WHILE ( rc := HandleEvent( wa_notif )) <> WMHI_NOMORE
  1101.                                     SELECT rc
  1102.                                         CASE    WMHI_CLOSEWINDOW
  1103.                                             WindowClose( wa_notif )
  1104.                                             notif := NIL
  1105.                                     ENDSELECT
  1106.                                 ENDWHILE
  1107.                             ENDIF
  1108.  
  1109.                             IF ( sigwin = info )
  1110.                                 WHILE ( rc := HandleEvent( wa_info )) <> WMHI_NOMORE
  1111.                                     SELECT rc
  1112.                                         CASE    WMHI_CLOSEWINDOW
  1113.                                             WindowClose( wa_info )
  1114.                                             info := NIL
  1115.                                     ENDSELECT
  1116.                                 ENDWHILE
  1117.                             ENDIF
  1118.  
  1119.                             IF ( sigwin = image )
  1120.                                 WHILE ( rc := HandleEvent( wa_image )) <> WMHI_NOMORE
  1121.                                     SELECT rc
  1122.                                         CASE    WMHI_CLOSEWINDOW
  1123.                                             WindowClose( wa_image )
  1124.                                             image := NIL
  1125.                                     ENDSELECT
  1126.                                 ENDWHILE
  1127.                             ENDIF
  1128.  
  1129.                             IF ( sigwin = bfill )
  1130.                                 WHILE ( rc := HandleEvent( wa_bfill )) <> WMHI_NOMORE
  1131.                                     SELECT rc
  1132.                                         CASE    WMHI_CLOSEWINDOW
  1133.                                             WindowClose( wa_bfill )
  1134.                                             bfill := NIL
  1135.                                     ENDSELECT
  1136.                                 ENDWHILE
  1137.                             ENDIF
  1138.  
  1139.                             IF ( sigwin = pages )
  1140.                                 WHILE ( rc := HandleEvent( wa_pages )) <> WMHI_NOMORE
  1141.                                     SELECT rc
  1142.                                         CASE    WMHI_CLOSEWINDOW
  1143.                                             WindowClose( wa_pages )
  1144.                                             pages := NIL
  1145.                                     ENDSELECT
  1146.                                 ENDWHILE
  1147.                             ENDIF
  1148.                         ENDWHILE
  1149.                     ENDIF
  1150.                 ENDWHILE
  1151.             ENDIF
  1152.             /*
  1153.             **  Dispose of all window objects.
  1154.             **/
  1155.             IF ( wa_pages )   THEN      DisposeObject( wa_pages )
  1156.             IF ( wa_bfill )   THEN      DisposeObject( wa_bfill )
  1157.             IF ( wa_image )   THEN      DisposeObject( wa_image )
  1158.             IF ( wa_info )    THEN      DisposeObject( wa_info )
  1159.             IF ( wa_notif )   THEN      DisposeObject( wa_notif )
  1160.             IF ( wa_groups )  THEN      DisposeObject( wa_groups )
  1161.             IF ( wa_main )    THEN      DisposeObject( wa_main )
  1162.             /*
  1163.             **  Delete the shared message port.
  1164.             **/
  1165.             DeleteMsgPort( sharedport )
  1166.         ELSE
  1167.             WriteF( 'Unable to create a message port.\n' )
  1168.         ENDIF
  1169.         CloseLibrary( bguibase )
  1170.     ELSE
  1171.         WriteF('Could not open the bgui.library\n')
  1172.     ENDIF
  1173. ENDPROC
  1174.