home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#) $Header: /cvsroot/bgui/gadgets/Bar/BarDemo.c,v 41.11 2000/05/09 20:34:22 mlemos Exp $
- *
- * BGUI library
- *
- * (C) Copyright 2000 BGUI Developers Team.
- * (C) Copyright 1998 Manuel Lemos.
- * All Rights Reserved.
- *
- * $Log: BarDemo.c,v $
- * Revision 41.11 2000/05/09 20:34:22 mlemos
- * Bumped to revision 41.11
- *
- * Revision 1.2 2000/05/09 19:59:27 mlemos
- * Merged with the branch Manuel_Lemos_fixes.
- *
- * Revision 1.1.2.1 2000/05/04 05:08:02 mlemos
- * Initial revision.
- *
- *
- */
-
- #include <libraries/bgui.h>
- #include <libraries/bgui_macros.h>
-
- #include <proto/exec.h>
- #include <proto/dos.h>
- #include <proto/intuition.h>
- #include <proto/bgui.h>
- #include <clib/alib_protos.h>
-
- #include <bgui/bgui_bar.h>
-
- /*
- * Output file handle and BGUI
- * library base.
- */
- BPTR StdOut;
- struct Library *BGUIBase;
-
- /*
- ** Notification map-lists.
- **/
- ULONG pga2slh[] = { BAR_HorizontalPosition, BAR_HorizontalPosition, TAG_END };
- ULONG pga2slv[] = { BAR_VerticalPosition, BAR_VerticalPosition, TAG_END };
- ULONG sl2prg1[] = { BAR_HorizontalPosition, BAR_HorizontalSize, TAG_END };
- ULONG prg12in[] = { BAR_HorizontalSize, INDIC_Level, TAG_END };
- ULONG sl2prg2[] = { BAR_VerticalPosition, BAR_VerticalSize, TAG_END };
- ULONG prg22in[] = { BAR_VerticalSize, INDIC_Level, TAG_END };
-
- VOID Tell( UBYTE *fstr, ... )
- {
- if ( StdOut ) VFPrintf( StdOut, fstr, ( ULONG * )&fstr + 1 );
- }
-
- static Object *OpenMainWindow(struct MsgPort *SharedPort,struct Window **main)
- {
- Object *object=NULL, *p1, *p2, *s1, *s2, *p, *i1, *i2;
-
- /*
- ** Not created yet? Create it now!
- **/
- if ( ! object ) {
- object = WindowObject,
- WINDOW_Title, "BGUI Bar demo",
- WINDOW_RMBTrap, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_AutoAspect, TRUE,
- WINDOW_SharedPort, SharedPort,
- WINDOW_MasterGroup,
- VGroupObject, NormalOffset, NormalSpacing,
- StartMember,
- HGroupObject, NormalSpacing,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember, i1 = IndicatorFormat( 0, 100, 0, IDJ_CENTER, "%ld%%" ), FixMinHeight, EndMember,
- StartMember,
- p1=BGUI_NewObject(BGUI_BAR_GADGET,
- BAR_Horizontal,FALSE,
- BAR_Vertical,FALSE,
- BAR_HorizontalPosition,0,
- BAR_HorizontalSize,0,
- BAR_HorizontalTotal,100,
- TAG_END),
- EndMember,
- StartMember,
- s1=BGUI_NewObject(BGUI_BAR_GADGET,
- BAR_Horizontal,TRUE,
- BAR_Vertical,FALSE,
- BAR_HorizontalPosition,0,
- BAR_HorizontalSize,1,
- BAR_HorizontalTotal,101,
- TAG_END),
- FixHeight( 16 ),
- EndMember,
- EndObject,
- EndMember,
- StartMember,
- p=BGUI_NewObject(BGUI_BAR_GADGET,
- BAR_Horizontal,TRUE,
- BAR_Vertical,TRUE,
- BAR_HorizontalPosition,0,
- BAR_HorizontalSize,1,
- BAR_HorizontalTotal,101,
- BAR_VerticalPosition,0,
- BAR_VerticalSize,1,
- BAR_VerticalTotal,101,
- TAG_END),
- EndMember,
- StartMember,
- s2=BGUI_NewObject(BGUI_BAR_GADGET,
- BAR_Horizontal,FALSE,
- BAR_Vertical,TRUE,
- BAR_VerticalPosition,0,
- BAR_VerticalSize,1,
- BAR_VerticalTotal,101,
- TAG_END),
- FixWidth( 16 ),
- EndMember,
- StartMember,
- VGroupObject, NormalSpacing,
- StartMember, i2 = IndicatorFormat( 0, 100, 0, IDJ_CENTER, "%ld%%" ), FixMinHeight, EndMember,
- StartMember,
- p2=BGUI_NewObject(BGUI_BAR_GADGET,
- BAR_Horizontal,FALSE,
- BAR_Vertical,FALSE,
- BAR_VerticalPosition,0,
- BAR_VerticalSize,0,
- BAR_VerticalTotal,100,
- TAG_END),
- EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndMember,
- EndObject,
- EndObject;
-
- if ( object ) {
- /*
- ** Connect sliders, prop, progression and indicators.
- **/
- AddMap( s1, p1, sl2prg1 );
- AddMap( s2, p2, sl2prg2 );
- AddMap( p, s1, pga2slh );
- AddMap( p, s2, pga2slv );
- AddMap( p1, i1, prg12in );
- AddMap( p2, i2, prg22in );
- }
- }
-
- /*
- ** Object OK?
- **/
- if ( object ) {
- /*
- ** Open window.
- **/
- if((*main=WindowOpen( object ))==NULL)
- {
- DisposeObject(object);
- object=NULL;
- }
- }
-
- return( object );
- }
-
- static VOID StartDemo(void)
- {
- Object *WA_Main;
- struct MsgPort *SharedPort;
- ULONG sigmask = 0L, sigrec,rc;
- struct Window *main=NULL, *sigwin;
- BOOL running = TRUE;
-
- /*
- ** Create the shared message port.
- **/
- if ( SharedPort = CreateMsgPort()) {
- /*
- ** Open the main window.
- **/
- if ( WA_Main = OpenMainWindow(SharedPort,&main)) {
- /*
- ** OR signal masks.
- **/
- sigmask |= ( 1L << SharedPort->mp_SigBit );
- /*
- ** Loop...
- **/
- do {
- /*
- ** Wait for the signals to come.
- **/
- sigrec = Wait( sigmask );
-
- /*
- ** Find out the which window signalled us.
- **/
- if ( sigrec & ( 1 << SharedPort->mp_SigBit )) {
- while ( sigwin = GetSignalWindow( WA_Main )) {
-
- /*
- ** Main window signal?
- **/
- if ( sigwin == main ) {
- /*
- ** Call the main-window event handler.
- **/
- while (( rc = HandleEvent( WA_Main )) != WMHI_NOMORE ) {
- switch ( rc ) {
-
- case WMHI_CLOSEWINDOW:
- running = FALSE;
- break;
-
- }
- }
- }
- }
- }
- } while ( running );
- }
- /*
- ** Dispose of all window objects.
- **/
- if (WA_Main) DisposeObject(WA_Main);
- /*
- ** Delete the shared message port.
- **/
- DeleteMsgPort( SharedPort );
- } else
- Tell( "Unable to create a message port.\n" );
- }
-
- /*
- * Main entry point.
- */
- int main( int argc, char **argv )
- {
- struct Process *this_task = ( struct Process * )FindTask( NULL );
- BOOL is_wb = FALSE;
-
- if ( this_task->pr_CLI )
- /*
- * Started from the CLI. Simply pickup
- * the CLI output handle.
- */
- StdOut = Output();
- else {
- /*
- * Workbench startup. Open a console
- * for output.
- */
- StdOut = Open( "CON:10/10/500/100/BGUI Demo Output/WAIT/AUTO", MODE_NEWFILE );
- is_wb = TRUE;
- }
-
- /*
- * Open BGUI.
- */
- if ( BGUIBase = OpenLibrary( BGUINAME, BGUIVERSION )) {
- /*
- * Run the demo.
- */
- StartDemo();
- CloseLibrary( BGUIBase );
- } else
- Tell( "Unable to open %s version %ld\n", BGUINAME, BGUIVERSION );
-
- /*
- * Close console if ran from
- * the workbench.
- */
- if ( is_wb ) {
- if ( StdOut ) Close( StdOut );
- }
-
- return( 0 );
- }
-
-