home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-08-26 | 52.0 KB | 1,174 lines |
- /*
- * BGUIDEMO.E
- *
- * (C) Copyright 1998 Manuel Lemos.
- * (C) Copyright 1995 Jaba Development.
- * (C) Copyright 1995 Jan van den Baard.
- * (C) Copyright 1998-1999 Dominique Dutoit
- * All Rights Reserved.
- *
- * $Log: BGUIDemo.c,v $
- * Revision 1.1.2.4 1998/12/08 03:54:25 mlemos
- * Associated tooltip texts to the buttons of the main window.
- *
- * Revision 1.1.2.3 1998/12/07 00:12:46 mlemos
- * Made the pages tabs AND radio button be activated using the keyboard.
- *
- * Revision 1.1.2.2 1998/03/01 20:32:48 mlemos
- * Ensured that the stack is never less than 8000 bytes.
- *
- * Revision 1.1.2.1 1998/02/28 17:44:57 mlemos
- * Ian sources
- *
- * ---
- *
- * On 23 May 1996 : Custom hooks are removed. They will be back later.
- * On 18 June 1996: FRM_FILLPATTERN example added.
- * On 12 Aug 1996: New naming styles
- * On 31 Aug 1996: Dynamic groups
- * On 22 Dec 1996: Hooks for custom backfill and tab key with pages added
- */
-
- OPT OSVERSION=37
- OPT PREPROCESS
-
- MODULE 'libraries/bgui',
- 'libraries/bguim',
- 'libraries/gadtools',
- 'bgui',
- 'bgui/bgui_image',
- 'bgui/bgui_obsolete',
- 'workbench/workbench',
- 'workbench/startup',
- 'tools/boopsi',
- 'utility/hooks',
- 'tools/installhook',
- 'tools/inithook',
- 'utility/tagitem',
- 'devices/inputevent',
- 'exec/ports',
- 'exec/memory',
- 'intuition/screens',
- 'intuition/intuition',
- 'intuition/classes',
- 'intuition/classusr',
- 'intuition/gadgetclass',
- 'graphics',
- 'graphics/gfx',
- 'graphics/rastport',
- 'graphics/gfxmacros'
- /*
- ** Window objects.
- **/
- DEF wa_main , wa_groups , wa_notif , wa_info , wa_image , wa_bfill, wa_pages,
- /*
- ** Gadget objects from the main window.
- **/
- bt_groups, bt_notif, bt_quit, bt_info, bt_images, bt_bfill,
- bt_pages, bt_icondone, bt_iconquit, lv_iconlist, pg_pager,
- /*
- ** One, shared, message port for all
- ** demo windows.
- **/
- sharedport:PTR TO mp
- /*
- ** Menus & gadget ID's.
- **/
- CONST ID_ABOUT = 1
- CONST ID_QUIT = 2
- /*
- ** Macros for the group objects. GObj() creates
- ** a simple infoclass object with some text in
- ** it. TObj() creates a simple groupclass object
- ** with a button frame.
- **/
- #define GObj(t)\
- InfoObject,\
- INFO_TextFormat, t,\
- INFO_FixTextWidth, TRUE,\
- INFO_HorizOffset, 4,\
- INFO_VertOffset, 3,\
- ButtonFrame,\
- FRM_Flags, FRF_RECESSED,\
- EndObject
-
- #define NWObj(v,id)\
- StringObject,\
- FuzzRidgeFrame,\
- STRINGA_LONGVAL, v,\
- STRINGA_MAXCHARS, 3,\
- STRINGA_IntegerMin, 1,\
- STRINGA_IntegerMax, 999,\
- STRINGA_JUSTIFICATION, GACT_STRINGCENTER,\
- GA_ID, id,\
- EndObject
-
- #define TObj\
- HGroupObject, HOffset( 3 ), VOffset( 2 ),\
- ButtonFrame,\
- FRM_BackFill, FILL_RASTER,\
- FRM_Flags, FRF_RECESSED,\
- EndObject
-
- CONST ID_GROUP_W0 = 500,
- ID_GROUP_W1 = 501,
- ID_GROUP_W2 = 502,
- ID_GROUP_W3 = 503
-
- DEF w[4]:ARRAY OF LONG
- DEF backfill:hook, tabhook:hook
-
- /*
- ** Main window button ID's.
- **/
- CONST ID_MAIN_GROUPS = 3
- CONST ID_MAIN_NOTIF = 4
- CONST ID_MAIN_INFO = 5
- CONST ID_MAIN_IMAGE = 6
- CONST ID_MAIN_BFILL = 7
- CONST ID_MAIN_PAGES = 8
- CONST ID_MAIN_ICON_CONT = 9
-
- /*
- ** Put up a simple requester.
- **/
- PROC req( win:PTR TO window, gadgets, body:PTR TO CHAR )
- DEF flags
- flags := BREQF_LOCKWINDOW OR BREQF_CENTERWINDOW OR BREQF_XEN_BUTTONS OR BREQF_AUTO_ASPECT OR BREQF_FAST_KEYS
- ENDPROC BgUI_RequestA( win, [ flags, NIL, gadgets, body, NIL, NIL, "_", 0, NIL, 0], NIL)
-
- /*
- ** Open main window.
- **/
- PROC openmainwindow( appmask )
-
- DEF window:PTR TO window,mainhelp:PTR TO CHAR
-
- mainhelp := ISEQ_C + 'BGUI is a shared library which offers a set of\n'+
- 'BOOPSI classes to allow for easy and flexible GUI creation.\n\n'+
- 'The main window is also an AppWindow. Drop some icons\n'+
- 'on it and see what happens.\n\n'+
- 'All windows also detect the aspect ratio of the screen they are\n'+
- 'located on and adjust frame thickness accoording to this.\n\n'+
- 'All other windows in this demo also have online-help. To access\n'+
- 'this help press the '+ISEQ_B+'HELP'+ISEQ_N+' key when the window is active.'
-
- wa_main := WindowObject,
- WINDOW_Title, 'BGUIDemo',
- WINDOW_ScreenTitle, 'BGUI Demo - ©1996 Ian J. Einman, ©1993-1995 Jaba Development.',
- WINDOW_MenuStrip, StartMenu,
- Title( 'Project' ),
- Item( 'About...', '?', ID_ABOUT),
- ItemBar,
- Item( 'Quit', 'Q', ID_QUIT ),
- End,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, mainhelp,
- WINDOW_AppWindow, TRUE,
- WINDOW_SizeGadget, FALSE,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_AutoKeyLabel, TRUE,
- WINDOW_TitleZip, TRUE,
- WINDOW_ScaleWidth, 10,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_MasterGroup,
- VGroupObject, NormalOffset, NormalSpacing, GROUP_BackFill, SHINE_RASTER,
- StartMember,
- pg_pager := PageObject,
- /*
- ** Main page.
- **/
- PageMember,
- VGroupObject, WideSpacing, GROUP_BackFill, SHINE_RASTER,
- StartMember,
- InfoObject,
- 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.',
- INFO_FixTextWidth, TRUE,
- INFO_MinLines, 6,
- FRM_Type, FRTYPE_NEXT,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember,
- bt_groups := ButtonObject,
- LAB_Label, '_Groups',
- GA_ID, ID_MAIN_GROUPS,
- BT_ToolTip, 'Shows different group layouts',
- EndObject,
- EndMember,
- StartMember,
- bt_notif := ButtonObject,
- LAB_Label, '_Notification',
- GA_ID, ID_MAIN_NOTIF,
- BT_ToolTip, 'Shows notification between gadgets',
- EndObject,
- EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember,
- bt_images := ButtonObject,
- LAB_Label, '_Images',
- GA_ID, ID_MAIN_IMAGE,
- BT_ToolTip, 'Shows different types of built-in images',
- EndObject,
- EndMember,
- StartMember,
- bt_bfill := ButtonObject,
- LAB_Label, '_BackFill',
- GA_ID, ID_MAIN_BFILL,
- BT_ToolTip, 'Shows different types of background filling',
- EndObject,
- EndMember,
- StartMember,
- bt_quit := ButtonObject,
- LAB_Label, '_Quit',
- GA_ID, ID_QUIT,
- BT_ToolTip, 'Quits this program',
- EndObject,
- EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember,
- bt_pages := ButtonObject,
- LAB_Label, '_Pages',
- GA_ID, ID_MAIN_PAGES,
- BT_ToolTip, 'Shows paged of groups',
- EndObject,
- EndMember,
- StartMember,
- bt_info := ButtonObject,
- LAB_Label, 'Info_Class',
- GA_ID, ID_MAIN_INFO,
- BT_ToolTip, 'Shows the Information gadget',
- EndObject,
- EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject,
- EndMember,
- EndObject, FixMinHeight,
- EndMember,
- EndObject,
- /*
- ** Icon-drop list page.
- **/
- PageMember,
- VGroupObject, NormalSpacing, GROUP_BackFill, SHINE_RASTER,
- StartMember,
- InfoObject,
- INFO_TextFormat, 'The following icons where dropped\nin the window.',
- INFO_FixTextWidth, TRUE,
- INFO_MinLines, 2,
- INFO_HorizOffset, 13,
- FRM_Type, FRTYPE_BUTTON,
- FRM_Recessed, TRUE,
- EndObject, FixMinHeight,
- EndMember,
- StartMember,
- lv_iconlist := ListviewObject,
- LISTV_ReadOnly, TRUE,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject,
- StartMember, bt_icondone := KeyButton( '_Continue', ID_MAIN_ICON_CONT ), EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- StartMember, bt_iconquit := KeyButton( '_Quit', ID_QUIT ), EndMember,
- EndObject, FixMinHeight,
- EndMember,
- EndObject,
- EndObject,
- EndMember,
- EndObject,
- EndObject
-
- /*
- ** Object created OK?
- **/
- IF wa_main
- /*
- ** Open the window.
- **/
- IF window := WindowOpen( wa_main )
- /*
- ** Obtain appwindow signal mask.
- **/
- GetAttr( WINDOW_AppMask, wa_main, appmask )
- ENDIF
- ENDIF
-
- ENDPROC window
- /*
- ** Open up the groups window.
- **/
- PROC opengroupswindow()
-
- DEF window:PTR TO window,groupshelp:PTR TO CHAR
-
- groupshelp:= '\ecThe BGUI layout engine is encapsulated in the groupclass.\n'+
- 'The groupclass will layout all of it\as members into a specific area.\n'+
- 'You can pass layout specific attributes to all group members\n'+
- 'which allows for flexible and powerful layout capabilities.'
-
- /*
- ** If the object has not been created
- ** already we build it.
- **/
- IF wa_groups=NIL
-
- w[0]:=NWObj( 25, ID_GROUP_W0)
- w[1]:=NWObj( 50, ID_GROUP_W1)
- w[2]:=NWObj( 75, ID_GROUP_W2)
- w[3]:=NWObj(100, ID_GROUP_W3)
-
- wa_groups := WindowObject,
- WINDOW_Title, 'BGUI Groups',
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, groupshelp,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_ScaleWidth, 20,
- WINDOW_ScaleHeight, 20,
- WINDOW_MasterGroup,
- VGroupObject, NormalOffset, NormalSpacing,
- StartMember,
- HGroupObject, WideSpacing,
- StartMember,
- HGroupObject, NeXTFrame, FrameTitle( 'Horizontal' ), NormalSpacing,
- NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NeXTFrame, FrameTitle( 'Vertical' ), NormalSpacing,
- NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NeXTFrame, FrameTitle( 'Grid' ), NormalSpacing,
- NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- StartMember, TObj, EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NormalSpacing, FrameTitle( 'Dynamic, Weight, Free and Fixed sizes.' ), NeXTFrame,
- NormalHOffset, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL),
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, w[0], Weight( 25 ), EndMember,
- StartMember, w[1], Weight( 50 ), EndMember,
- StartMember, w[2], Weight( 75 ), EndMember,
- StartMember, w[3], Weight( 100 ), EndMember,
- EndObject,
- EndMember,
-
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, GObj( '25Kg' ), Weight( 25 ), EndMember,
- StartMember, GObj( '50Kg' ), Weight( 50 ), EndMember,
- StartMember, GObj( '75Kg' ), Weight( 75 ), EndMember,
- StartMember, GObj( '100Kg' ), Weight( 100 ), EndMember,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, GObj( 'Free' ), EndMember,
- StartMember, GObj( 'Fixed' ), FixMinWidth, EndMember,
- StartMember, GObj( 'Free' ), EndMember,
- StartMember, GObj( 'Fixed' ), FixMinWidth, EndMember,
- EndObject,
- EndMember,
- EndObject, FixMinHeight,
- EndMember,
- EndObject,
- EndObject
- ENDIF
-
- /*
- ** Object OK?
- **/
- IF wa_groups
- /*
- ** Open the window.
- **/
- window := WindowOpen( wa_groups )
- ENDIF
- ENDPROC window
- /*
- ** Open the notification window.
- **/
- PROC opennotifwindow()
-
- DEF window:PTR TO window,notifhelp:PTR TO CHAR,
- c, b, p1, p2, s1, s2, p, i1, i2
-
- notifhelp:= '\ecNotification can be used to let an object keep one or\n'+
- 'more other objects informed about it\as status. BGUI offers several\n'+
- 'kinds of notification of which two (conditional and map-list) are\n'+
- 'shown in this demonstration.'
-
- /*
- ** Not created yet? Create it now!
- **/
- IF wa_notif=NIL
- wa_notif := WindowObject,
- WINDOW_Title, 'BGUI notification',
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, notifhelp,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_MasterGroup,
- VGroupObject, NormalOffset, NormalSpacing,
- StartMember, TitleSeparator( 'Conditional' ), EndMember,
- StartMember,
- HGroupObject, Spacing( 4 ),
- StartMember, c := Cycle( NIL, [ 'Enabled-->', 'Disabled-->', 'Still Disabled-->', NIL ], 0, 0 ), EndMember,
- StartMember, b := Button( 'Target', 0 ), EndMember,
- EndObject, FixMinHeight,
- EndMember,
- StartMember, TitleSeparator( 'Map-List' ), EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember, i1 := IndicatorFormat( 0, 100, 0, IDJ_CENTER, '\d%%' ), FixMinHeight, EndMember,
- StartMember, p1 := HorizProgress( NIL, 0, 100, 0 ), EndMember,
- EndObject,
- EndMember,
- StartMember, s1 := VertSlider( NIL, 0, 100, 0, 0 ), FixWidth( 16 ), EndMember,
- StartMember, p := VertScroller( NIL, 0, 101, 1, 0 ), FixWidth( 16 ), EndMember,
- StartMember, s2 := VertSlider( NIL, 0, 100, 0, 0 ), FixWidth( 16 ), EndMember,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember, i2 := IndicatorFormat( 0, 100, 0, IDJ_CENTER, '\d%%' ), FixMinHeight, EndMember,
- StartMember, p2 := VertProgress( NIL, 0, 100, 0 ), EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndObject
-
- IF wa_notif
- /*
- ** Connect the cycle object with the button.
- **/
- AddCondit( c, b, CYC_Active, 0, GA_DISABLED, FALSE, GA_DISABLED, TRUE )
- /*
- ** Connect sliders, prop, progression and indicators.
- **/
- AddMap( s1, p1, [ SLIDER_Level, PROGRESS_Done, TAG_END ] )
- AddMap( s2, p2, [ SLIDER_Level, PROGRESS_Done, TAG_END ] )
- AddMap( p, s1, [ PGA_TOP, SLIDER_Level, TAG_END ] )
- AddMap( p, s2, [ PGA_TOP, SLIDER_Level, TAG_END ] )
- AddMap( p1, i1, [ PROGRESS_Done, INDIC_Level, TAG_END ] )
- AddMap( p2, i2, [ PROGRESS_Done, INDIC_Level, TAG_END ] )
- ENDIF
- ENDIF
-
- /*
- ** Object OK?
- **/
- IF wa_notif
- /*
- ** Open window.
- **/
- window := WindowOpen( wa_notif )
- ENDIF
- ENDPROC window
- /*
- ** Open infoclass window.
- **/
- PROC openinfowindow()
-
- DEF window:PTR TO window,infohelp:PTR TO CHAR,text:PTR TO CHAR,
- args
-
- infohelp:= '\ecNot much more can be said about the BGUI infoclass than\n'+
- 'is said in this window. Except maybe that this text is shown in an\n'+
- 'infoclass object as are all body texts from a BGUI requester.'
-
- text:= '\ecBGUI offers the InfoClass.\n'+
- 'This class is a text display class which\n'+
- 'allows things like:\n\n\ed3C\ed4o\ed5l\ed6o\ed8r\ed2s\n\n'+
- '\elLeft Aligned...\n\erRight Aligned...\n'+
- '\ecCentered...\n\n\ebBold...\n\en'+
- '\eiItalic...\n\en\euUnderlined...\n\n'+
- '\eb\eiAnd combinations!\n\n'+
- '\enFree CHIP:\ed3 \d \ed2 Free FAST: \ed3 \d'
-
- /*
- ** Not created already?
- **/
- IF wa_info=NIL
- /*
- ** Setup arguments for the
- ** infoclass object.
- **/
- args := [ AvailMem( MEMF_CHIP ), AvailMem( MEMF_FAST ), NIL ]
-
- wa_info := WindowObject,
- WINDOW_Title, 'BGUI information class',
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, infohelp,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_MasterGroup,
- VGroupObject, HOffset( 4 ), VOffset( 4 ),
- StartMember,
- InfoFixed( NIL,text, args, 17 ),
- EndMember,
- EndObject,
- EndObject
- ENDIF
-
- /*
- ** Object OK?
- **/
- IF wa_info
- /*
- ** Open window.
- **/
- window := WindowOpen( wa_info )
- ENDIF
-
- ENDPROC window
- /*
- ** Open images window.
- **/
- PROC openimagewindow()
-
- DEF window:PTR TO window,imagehelp:PTR TO CHAR
-
- imagehelp := '\ecThis window shows you the built-in images that BGUI has\n'+
- 'to offer. Ofcourse these images are all scalable and it is possible\n'+
- 'to create your own, scalable, imagery with the BGUI vectorclass.'
-
- /*
- ** Not yet created?
- **/
- IF wa_image=NIL
- wa_image := WindowObject,
- WINDOW_Title, 'BGUI images',
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, imagehelp,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_ScaleHeight, 10,
- WINDOW_MasterGroup,
- VGroupObject, NormalOffset, WideSpacing,
- StartMember,
- HGroupObject, TOffset(GRSPACE_NARROW), BOffset(GRSPACE_NORMAL), NormalSpacing, NeXTFrame, FrameTitle('Fixed size'),
- VarSpace( DEFAULT_WEIGHT ),
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETPATH, ButtonFrame, EndObject, FixWidth( GETPATH_WIDTH ), FixHeight( GETPATH_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETFILE, ButtonFrame, EndObject, FixWidth( GETFILE_WIDTH ), FixHeight( GETFILE_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_CHECKMARK, ButtonFrame, EndObject, FixWidth( CHECKMARK_WIDTH ), FixHeight( CHECKMARK_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_POPUP, ButtonFrame, EndObject, FixWidth( POPUP_WIDTH ), FixHeight( POPUP_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_UP, ButtonFrame, EndObject, FixWidth( ARROW_UP_WIDTH ), FixHeight( ARROW_UP_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_DOWN, ButtonFrame, EndObject, FixWidth( ARROW_DOWN_WIDTH ), FixHeight( ARROW_DOWN_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_LEFT, ButtonFrame, EndObject, FixWidth( ARROW_LEFT_WIDTH ), FixHeight( ARROW_LEFT_HEIGHT ), EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_RIGHT, ButtonFrame, EndObject, FixWidth( ARROW_RIGHT_WIDTH ), FixHeight( ARROW_RIGHT_HEIGHT ), EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject, FixMinHeight,
- EndMember,
- StartMember,
- HGroupObject, NeXTFrame, FrameTitle( 'Free size' ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETPATH, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETFILE, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_CHECKMARK, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_POPUP, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_UP, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_DOWN, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_LEFT, ButtonFrame, EndObject, EndMember,
- StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_RIGHT, ButtonFrame, EndObject, EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndObject
- ENDIF
-
- /*
- ** Object OK?
- **/
- IF wa_image
- /*
- ** Open the window.
- **/
- window := WindowOpen( wa_image )
- ENDIF
-
- ENDPROC window
-
- /*
- ** The backFill hook to show custom backfills.
- ** Renders a pattern from the WBPattern preferences
- ** editor as back-fill.
- **/
- PROC backFillHook( hook:PTR TO hook, imo:PTR TO object, fdm:PTR TO frameDrawMsg )
- DEF pat
-
- pat := [ $0000, $0000, $0002, $0002, $000A, $000A, $002A, $002A,
- $00AA, $002A, $03EA, $000A, $0FFA, $0002, $3FFE, $0000,
- $0000, $7FFC, $4000, $5FF0, $5000, $57C0, $5400, $5500,
- $5400, $5400, $5000, $5000, $4000, $4000, $0000, $0000 ]:INT
-
- fdm.rPort.mask := $03
- SetAfPt( fdm.rPort, pat, -4 )
- SetAPen( fdm.rPort, Shl( 1 , fdm.drawInfo.depth ) - 1 )
- RectFill( fdm.rPort, fdm.bounds.minx, fdm.bounds.miny,
- fdm.bounds.maxx, fdm.bounds.maxy )
- SetAfPt( fdm.rPort, NIL, 0 )
-
- ENDPROC FRC_OK
-
- /*
- ** Open back-fill window.
- **/
- PROC openfillwindow()
- DEF window=NIL:PTR TO window,backfillhelp:PTR TO CHAR
- DEF screen:PTR TO screen
- DEF bp:PTR TO bguiPattern
-
- installhook( backfill, {backFillHook} )
-
- backfillhelp := 'Here you see the built-in backfill patterns BGUI supports.\n'+
- 'These backfill patterns can all be used in groups and frames.\n' +
- 'The frameclass also offers you the possibility to add hooks for\n' +
- 'custom backfills and frame rendering.\n\n' +
- 'The middle frame shows you a custom backfill hook which renders a\n' +
- 'simple pattern known from the WBPattern prefs editor as background.'
-
- /*
- ** Not yet created?
- **/
- IF wa_bfill = NIL
- NEW bp
- screen := LockPubScreen( NIL )
- bp.flags := 0
- bp.left := 0
- bp.top := 0
- bp.width := 120
- bp.height := 80
- bp.bitMap := screen.rastport.bitmap
- bp.object := NIL
- UnlockPubScreen( NIL, screen )
- wa_bfill := WindowObject,
- WINDOW_Title, 'BGUI back fill patterns',
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, backfillhelp,
- WINDOW_ScaleWidth, 50,
- WINDOW_ScaleHeight, 50,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_MasterGroup,
- HGroupObject, NormalOffset, WideSpacing,
- StartMember,
- VGroupObject, NormalOffset, NeXTFrame, FrameTitle('Raster Fill'), NormalSpacing,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, InfoObject, ButtonFrame, ShineRaster, EndObject, EndMember,
- StartMember, InfoObject, ButtonFrame, ShadowRaster, EndObject, EndMember,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, InfoObject, ButtonFrame, ShineShadowRaster, EndObject, EndMember,
- StartMember, InfoObject, ButtonFrame, FillRaster, EndObject, EndMember,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, InfoObject, ButtonFrame, ShineFillRaster, EndObject, EndMember,
- StartMember, InfoObject, ButtonFrame, ShadowFillRaster, EndObject, EndMember,
- EndObject,
- EndMember,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember, InfoObject, ButtonFrame, ShineBlock, EndObject, EndMember,
- StartMember, InfoObject, ButtonFrame, ShadowBlock, EndObject, EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NormalOffset, NeXTFrame, FrameTitle('Custom Hook'),
- StartMember,
- InfoObject, ButtonFrame, FRM_BackFillHook, backfill, EndObject,
- EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, NormalOffset, NeXTFrame, FrameTitle('Bitmap Pattern'),
- StartMember,
- InfoObject, ButtonFrame, FRM_FillPattern, bp, EndObject,
- EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndObject
- ENDIF
- /*
- ** Object OK?
- **/
- IF wa_bfill
- /*
- ** Open window.
- **/
- window := WindowOpen( wa_bfill )
- ENDIF
- ENDPROC window
-
- /*
- ** Tabs-key control of the tabs gadget.
- **/
- PROC tabHookFunc( hook:PTR TO hook, obj:PTR TO object, msg:PTR TO intuimessage)
- DEF window:PTR TO window
- DEF mx_obj:PTR TO object
- DEF pos
-
- mx_obj := hook.data
-
- GetAttr( WINDOW_Window, obj, {window} )
- GetAttr( MX_Active, mx_obj, {pos} )
-
- IF ( msg.code = $42 )
- IF ( msg.qualifier AND ( IEQUALIFIER_LSHIFT OR IEQUALIFIER_RSHIFT ) ) THEN DEC pos ELSE INC pos
- SetGadgetAttrsA( mx_obj, window, NIL, [ MX_Active, pos, TAG_END ] )
- ENDIF
- ENDPROC
-
- /*
- ** Open pages window.
- **/
- PROC openpageswindow()
-
- DEF c, p, m, s1, s2, s3,
- window:PTR TO window,pageshelp:PTR TO CHAR
-
- pageshelp := '\ecThe pageclass allows you to setup a set of pages containing\n'+
- 'BGUI gadgets or groups. This will give you the oppertunity to\n'+
- 'have several set\as of gadgets in a single window.\n\n'+
- 'This window has a IDCMP-hook installed which allows you to\n'+
- 'control the Tabs object with your TAB key.'
-
-
- /*
- ** Not yet created?
- **/
- IF wa_pages=NIL
- /*
- ** Create tabs-object.
- **/
- c := MxObject,
- MX_TabsObject, TRUE,
- LAB_Label, NIL,
- MX_Labels, ['_Buttons', '_Strings', '_CheckBoxes', '_Radio-Buttons', NIL ],
- MX_Active, NIL,
- GA_ID, NIL,
- EndObject
-
- inithook( tabhook, {tabHookFunc}, c )
-
- wa_pages := WindowObject,
- WINDOW_Title, 'BGUI pages',
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_HelpText, pageshelp,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, sharedport,
- WINDOW_IDCMPHookBits, IDCMP_RAWKEY,
- WINDOW_IDCMPHook, tabhook,
- WINDOW_AutoKeyLabel, TRUE,
- WINDOW_CloseOnEsc, TRUE,
- WINDOW_MasterGroup,
- VGroupObject, NormalOffset,
- StartMember, c, FixMinHeight, EndMember,
- StartMember, VGroupObject, FRM_Type, FRTYPE_TAB_ABOVE,
- StartMember,
- p := PageObject,
- /*
- ** Button page.
- **/
- PageMember,
- VGroupObject, Spacing(4), NormalOffset,
- VarSpace( DEFAULT_WEIGHT ),
- StartMember, PrefButton( 'Button #_1', 0 ), FixMinHeight, EndMember,
- StartMember, PrefButton( 'Button #_2', 0 ), FixMinHeight, EndMember,
- StartMember, PrefButton( 'Button #_3', 0 ), FixMinHeight, EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject,
- /*
- ** String page.
- **/
- PageMember,
- VGroupObject, Spacing(4), NormalOffset,
- VarSpace( DEFAULT_WEIGHT ),
- StartMember, s1 := PrefString( 'String #_1', '', 256, 0 ), FixMinHeight, EndMember,
- StartMember, s2 := PrefString( 'String #_2', '', 256, 0 ), FixMinHeight, EndMember,
- StartMember, s3 := PrefString( 'String #_3', '', 256, 0 ), FixMinHeight, EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject,
- /*
- ** CheckBox page.
- **/
- PageMember,
- VGroupObject, Spacing(4), NormalOffset,
- StartMember,
- HGroupObject, Spacing( 4 ),
- VarSpace( DEFAULT_WEIGHT ),
- StartMember,
- VGroupObject, Spacing( 4 ),
- VarSpace( DEFAULT_WEIGHT ),
- StartMember, CheckBox( 'CheckBox #_1', FALSE, 0 ), EndMember,
- StartMember, CheckBox( 'CheckBox #_2', FALSE, 0 ), EndMember,
- StartMember, CheckBox( 'CheckBox #_3', FALSE, 0 ), EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject, FixMinWidth,
- EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject,
- EndMember,
- EndObject,
- /*
- ** Mx page.
- **/
- PageMember,
- VGroupObject, Spacing(4), NormalOffset,
- VarSpace( DEFAULT_WEIGHT ),
- StartMember,
- HGroupObject,
- VarSpace( DEFAULT_WEIGHT ),
- StartMember, m := MxObject,
- GROUP_Style, GRSTYLE_VERTICAL,
- GROUP_Spacing, 2,
- LAB_Label, '_Mx Object',
- LAB_Place, PLACE_ABOVE,
- LAB_Underscore, "_",
- LAB_Highlight, TRUE,
- MX_Labels, [ 'MX #_1', 'MX #_2', 'MX #_3', 'MX #_4', NIL ],
- MX_LabelPlace, PLACE_LEFT,
- EndObject, FixMinSize,
- EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject, FixMinHeight,
- EndMember,
- VarSpace( DEFAULT_WEIGHT ),
- EndObject,
- EndObject,
- EndMember,
- EndObject, EndMember,
- EndObject,
- EndObject
-
- /*
- ** Object OK?
- **/
- IF wa_pages
- /*
- ** Connect the cycle to the page.
- **/
- AddMap( c, p, [ MX_Active, PAGE_Active, TAG_END ] )
- /*
- ** Set tab-cycling order.
- **/
- domethod( wa_pages, [WM_TABCYCLE_ORDER, s1, s2, s3, NIL] )
- ENDIF
- ENDIF
-
- /*
- ** Object OK?
- **/
- IF wa_pages
- /*
- ** Open the window.
- **/
- window := WindowOpen( wa_pages )
- ENDIF
- ENDPROC window
- /*
- ** Main entry.
- **/
- PROC main()
-
- DEF main=NIL:PTR TO window, groups=NIL:PTR TO window, notif=NIL:PTR TO window,
- info=NIL:PTR TO window, image=NIL:PTR TO window, bfill=NIL:PTR TO window,
- pages=NIL:PTR TO window, sigwin = -1,
- apm:PTR TO appmessage, ap:PTR TO wbarg,
- sigmask = 0, sigrec, rc, appsig = 0, i,
- running = TRUE, name[ 256 ]:STRING, id
- /*
- ** Open the library.
- **/
- IF bguibase := OpenLibrary( 'bgui.library', BGUIVERSION )
- /*
- ** Create the shared message port.
- **/
- IF sharedport := CreateMsgPort()
- /*
- ** Open the main window.
- **/
- IF main := openmainwindow( {appsig} )
- /*
- ** OR signal masks.
- **/
- sigmask :=sigmask OR ( appsig OR Shl( 1,sharedport.sigbit ))
- /*
- ** Loop...
- **/
- WHILE running = TRUE
- /*
- ** Wait for the signals to come.
- **/
- sigrec := Wait( sigmask )
- /*
- ** AppWindow signal?
- **/
- IF ( sigrec AND appsig )
- /*
- ** Obtain AppWindow messages.
- **/
- WHILE apm := GetAppMsg( wa_main )
- /*
- ** Get all dropped icons.
- **/
- ap := apm.arglist
- FOR i := 0 TO apm.numargs - 1
- /* Build fully qualified name. */
- NameFromLock( ap[ i ].lock, name, 256 )
- AddPart( name, ap[ i ].name, 256 )
- /* Add it to the listview. */
- AddEntry( main, lv_iconlist, name, LVAP_SORTED )
- ENDFOR
- /*
- ** Important! We must reply the message!
- **/
- ReplyMsg( apm )
- ENDWHILE
- /*
- ** Switch to the Icon page.
- **/
- SetGadgetAttrsA(pg_pager, main, NIL,[ PAGE_Active, 1, TAG_END] )
- ENDIF
- /*
- ** Find out the which window signalled us.
- **/
- IF ( sigrec AND Shl( 1,sharedport.sigbit ))
- WHILE sigwin := domethod( wa_main,[ WM_GET_SIGNAL_WINDOW] )
-
- /*
- ** Main window signal?
- **/
- IF sigwin = main
- /*
- ** Call the main-window event handler.
- **/
- WHILE ( rc := HandleEvent( wa_main )) <> WMHI_NOMORE
- SELECT rc
-
- CASE WMHI_CLOSEWINDOW
- running := FALSE
- CASE ID_QUIT
- running := FALSE
-
- CASE ID_ABOUT
- req( main, '_OK', '\ec\eb\ed8BGUIDemo in AmigaE!\en\ed2\n(C) Copyright 1993-1995 Jaba Development\nAmigaE''tized by Dominique Dutoit' )
-
- CASE ID_MAIN_GROUPS
- /*
- ** Open groups window.
- **/
- IF groups=NIL THEN groups := opengroupswindow()
-
- CASE ID_MAIN_NOTIF
- /*
- ** Open notification window.
- **/
- IF notif=NIL THEN notif := opennotifwindow()
-
- CASE ID_MAIN_INFO
- /*
- ** Open infoclass window.
- **/
- IF info=NIL THEN info := openinfowindow()
-
- CASE ID_MAIN_IMAGE
- /*
- ** Open images window.
- **/
- IF image=NIL THEN image := openimagewindow()
-
- CASE ID_MAIN_BFILL
- /*
- ** Open backfill window.
- **/
- IF bfill=NIL THEN bfill := openfillwindow()
-
- CASE ID_MAIN_PAGES
- /*
- ** Open pages window.
- **/
- IF pages=NIL THEN pages := openpageswindow()
-
- CASE ID_MAIN_ICON_CONT
- /*
- ** Switch back to the main page.
- **/
- SetGadgetAttrsA(pg_pager, main, NIL,[ PAGE_Active, 0, TAG_END] )
- /*
- ** Clear all entries from the listview.
- **/
- ClearList( main, lv_iconlist )
- ENDSELECT
- ENDWHILE
- ENDIF
- /*
- ** The code below will close the
- ** specific window.
- **/
- IF ( sigwin = groups )
- WHILE ( rc := HandleEvent( wa_groups )) <> WMHI_NOMORE
- SELECT rc
- CASE ID_GROUP_W0
- id := rc - ID_GROUP_W0
- GetAttr(STRINGA_LONGVAL, w[id], {rc})
- SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
- CASE ID_GROUP_W1
- id := rc - ID_GROUP_W0
- GetAttr(STRINGA_LONGVAL, w[id], {rc})
- SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
- CASE ID_GROUP_W2
- id := rc - ID_GROUP_W0
- GetAttr(STRINGA_LONGVAL, w[id], {rc})
- SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
- CASE ID_GROUP_W3
- id := rc - ID_GROUP_W0
- GetAttr(STRINGA_LONGVAL, w[id], {rc})
- SetAttrsA(w[id], [ LGO_Weight, rc, TAG_DONE ])
- CASE WMHI_CLOSEWINDOW
- WindowClose( wa_groups )
- groups := NIL
- ENDSELECT
- ENDWHILE
- ENDIF
-
- IF ( sigwin = notif )
- WHILE ( rc := HandleEvent( wa_notif )) <> WMHI_NOMORE
- SELECT rc
- CASE WMHI_CLOSEWINDOW
- WindowClose( wa_notif )
- notif := NIL
- ENDSELECT
- ENDWHILE
- ENDIF
-
- IF ( sigwin = info )
- WHILE ( rc := HandleEvent( wa_info )) <> WMHI_NOMORE
- SELECT rc
- CASE WMHI_CLOSEWINDOW
- WindowClose( wa_info )
- info := NIL
- ENDSELECT
- ENDWHILE
- ENDIF
-
- IF ( sigwin = image )
- WHILE ( rc := HandleEvent( wa_image )) <> WMHI_NOMORE
- SELECT rc
- CASE WMHI_CLOSEWINDOW
- WindowClose( wa_image )
- image := NIL
- ENDSELECT
- ENDWHILE
- ENDIF
-
- IF ( sigwin = bfill )
- WHILE ( rc := HandleEvent( wa_bfill )) <> WMHI_NOMORE
- SELECT rc
- CASE WMHI_CLOSEWINDOW
- WindowClose( wa_bfill )
- bfill := NIL
- ENDSELECT
- ENDWHILE
- ENDIF
-
- IF ( sigwin = pages )
- WHILE ( rc := HandleEvent( wa_pages )) <> WMHI_NOMORE
- SELECT rc
- CASE WMHI_CLOSEWINDOW
- WindowClose( wa_pages )
- pages := NIL
- ENDSELECT
- ENDWHILE
- ENDIF
- ENDWHILE
- ENDIF
- ENDWHILE
- ENDIF
- /*
- ** Dispose of all window objects.
- **/
- IF ( wa_pages ) THEN DisposeObject( wa_pages )
- IF ( wa_bfill ) THEN DisposeObject( wa_bfill )
- IF ( wa_image ) THEN DisposeObject( wa_image )
- IF ( wa_info ) THEN DisposeObject( wa_info )
- IF ( wa_notif ) THEN DisposeObject( wa_notif )
- IF ( wa_groups ) THEN DisposeObject( wa_groups )
- IF ( wa_main ) THEN DisposeObject( wa_main )
- /*
- ** Delete the shared message port.
- **/
- DeleteMsgPort( sharedport )
- ELSE
- WriteF( 'Unable to create a message port.\n' )
- ENDIF
- CloseLibrary( bguibase )
- ELSE
- WriteF('Could not open the bgui.library\n')
- ENDIF
- ENDPROC
-