;/* Execute me to compile with DICE V3.0
dcc font.c -proto -mi -ms -mRR -lbgui
quit
*/
/*
**         $RCSfile: font.c,v $
**      Description: Simple demonstration to show how to
**                   create the standard system/gadtools/topaz 8 look
**                   (if you really want to :))
**        Copyright: (C) Copyright 1994 Jaba Development.
**                   (C) Copyright 1994 Jan van den Baard.
**                   All Rights Reserved.
**
**          $Author: jaba $
**        $Revision: 1.3 $
**            $Date: 1994/08/03 11:35:21 $
**/

#include <libraries/bgui.h>
#include <libraries/bgui_macros.h>
#include <libraries/gadtools.h>

#include <clib/alib_protos.h>

#include <proto/exec.h>
#include <proto/bgui.h>
#include <proto/intuition.h>

#include <stdio.h>
#include <stdlib.h>

/*
**      Library base pointer.
**      NOTE: The intuition.library is opened by DICE
**      it's auto-init code.
**/
struct Library                  *BGUIBase;

/*
**      Object ID.
**/
#define ID_QUIT                 1
#define ID_ABOUT                2

/*
**      Topaz :(
**/
struct TextAttr Topaz = {
        ( STRPTR )"topaz.font", TOPAZ_EIGHTY, FS_NORMAL, FPF_ROMFONT
};

/*
**      Simple menu-strip.
**/
struct NewMenu MenuStrip[] = {
        Title( "Project" ),
                Item( "Open...", "O", NULL ),
                Item( "Save As...", "A", NULL ),
                ItemBar,
                Item( "About...", "?", ID_ABOUT ),
                ItemBar,
                Item( "Quit", "Q", ID_QUIT ),
        Title( "Edit" ),
                Item( "Reset To Defaults", "D", NULL ),
                Item( "Last Saved", "L", NULL ),
                Item( "Restore", "R", NULL ),
        Title( "Settings" ),
                NM_ITEM, "Create Icons?", "I", CHECKIT, 0, NULL,
        End
};

/*
**      Put up a requester.
**/
ULONG Req( struct Window *win, UBYTE *gadgets, UBYTE *body, ... )
{
        struct bguiRequest      req = { NULL };

        req.br_GadgetFormat     = gadgets;
        req.br_TextFormat       = body;
        req.br_Flags            = BREQF_CENTERWINDOW|BREQF_LOCKWINDOW;

        return( BGUI_RequestA( win, &req, ( ULONG * )(( ULONG * )&body+1 )));
}

int main( int argc, char *argv[] )
{
        struct Window           *win;
        Object                  *WO_Window;
        ULONG                    signal = 0, rc, tmp = 0;
        BOOL                     running = TRUE;

        /*
        **      Open the library.
        **/
        if ( BGUIBase = OpenLibrary( BGUINAME, BGUIVERSION )) {
                /*
                **      Create the window object.
                **/
                WO_Window = WindowObject,
                        WINDOW_Title,           "Font Preferences",
                        WINDOW_MenuStrip,       MenuStrip,
                        WINDOW_SizeGadget,      FALSE,
                        WINDOW_CloseGadget,     FALSE,
                        WINDOW_ScaleWidth,      20,
                        WINDOW_Font,            &Topaz,
                        WINDOW_MasterGroup,
                                VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
                                        StartMember,
                                                InfoObject,
                                                        INFO_TextFormat,        ISEQ_C "Selected Fonts",
                                                        INFO_HorizOffset,       0,
                                                        INFO_VertOffset,        0,
                                                EndObject,
                                        EndMember,
                                        StartMember,
                                                HGroupObject, HOffset( 2 ), VOffset( 1 ), Spacing( 4 ), ButtonFrame, FRM_Flags, FRF_RECESSED,
                                                        StartMember,
                                                                InfoObject,
                                                                        INFO_TextFormat,        ISEQ_R "Workbench Icon Text:\n"
                                                                                                       "System Default Text:\n"
                                                                                                       "Screen Text:",
                                                                        INFO_FixTextWidth,      TRUE,
                                                                        INFO_MinLines,          3,
                                                                        INFO_VertOffset,        2,
                                                                EndObject,
                                                        EndMember,
                                                        StartMember,
                                                                InfoObject,
                                                                        INFO_TextFormat,        "topaz 8\n"
                                                                                                "topaz 8\n"
                                                                                                "topaz 8",
                                                                        INFO_FixTextWidth,      TRUE,
                                                                        INFO_MinLines,          3,
                                                                        INFO_HorizOffset,       0,
                                                                        INFO_VertOffset,        2,
                                                                EndObject,
                                                        EndMember,
                                                EndObject,
                                        EndMember,
                                        StartMember,
                                                Button( "Select Workbench Icon Text...", 0 ),
                                        EndMember,
                                        StartMember,
                                                Button( "Select System Default Text...", 0 ),
                                        EndMember,
                                        StartMember,
                                                Button( "Select Screen Text...", 0 ),
                                        EndMember,
                                        StartMember,
                                                HGroupObject,
                                                        StartMember, Button( "Save", ID_QUIT ), EndMember,
                                                        VarSpace( DEFAULT_WEIGHT ),
                                                        StartMember, Button( "Use", ID_QUIT ), EndMember,
                                                        VarSpace( DEFAULT_WEIGHT ),
                                                        StartMember, Button( "Cancel", ID_QUIT ), EndMember,
                                                EndObject,
                                        EndMember,
                                EndObject,
                EndObject;

                /*
                **      Object created OK?
                **/
                if ( WO_Window ) {
                        /*
                        **      try to open the window.
                        **/
                        if ( win = WindowOpen( WO_Window )) {
                                /*
                                **      Obtain it's wait mask.
                                **/
                                GetAttr( WINDOW_SigMask, WO_Window, &signal );
                                /*
                                **      Event loop...
                                **/
                                do {
                                        Wait( signal );
                                        /*
                                        **      Handle events.
                                        **/
                                        while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
                                                /*
                                                **      Evaluate return code.
                                                **/
                                                switch ( rc ) {

                                                        case    WMHI_CLOSEWINDOW:
                                                        case    ID_QUIT:
                                                                running = FALSE;
                                                                break;
                                                        case    ID_ABOUT:
                                                                Req( win, "OK", ISEQ_C "This is a demonstration of how to code\n"
                                                                                       "the standard (boring) system/gadtools/topaz/fixed size\n"
                                                                                       "look with BGUI....\nif you " ISEQ_B "really" ISEQ_N " want to ;)" );
                                                                break;
                                                }
                                        }
                                } while ( running );
                        }
                        DisposeObject( WO_Window );
                } else
                        puts( "Could not create the window object" );
                CloseLibrary( BGUIBase );
        } else
                puts( "Unable to open the bgui.library" );

        return( 0 );
}

#ifdef _DCC
int wbmain( struct WBStartup *wbs )
{
        return( main( 0, NULL ));
}
#endif

/*
 *      $Log: font.c,v $
 * Revision 1.3  1994/08/03  11:35:21  jaba
 * Switched from clib/ to proto/.
 *
 * Revision 1.2  1994/07/28  16:51:55  jaba
 * Added a descriptive requester in an About menu item.
 *
 */
