home *** CD-ROM | disk | FTP | other *** search
- /**************************************************************/
- /* $VER: SynthLibInt.c Revison 1.1 */
- /* This file is part of Synth Librarian v1.1 */
- /* ©1993-1994 Jean-Alexis MONTIGNIES */
- /* This file must not be distributed modified or separatly */
- /* without my written permission */
- /* See Synth_Librarian.guide for more details */
- /**************************************************************/
-
- /* Synth librarian main window interface */
- /*
- * Source machine generated by GadToolsBox V1.4
- * which is (c) Copyright 1991,92 Jaba Development
- */
- /* Modified by hand : localized, keyboard shortcut handling */
-
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <intuition/classes.h>
- #include <intuition/classusr.h>
- #include <intuition/imageclass.h>
- #include <intuition/gadgetclass.h>
- #include <libraries/gadtools.h>
- #include <graphics/displayinfo.h>
- #include <graphics/gfxbase.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/utility_protos.h>
- #include <string.h>
- #include <libraries/locale.h>
-
- #include "SynthLibInt.h"
- #define CATCOMP_NUMBERS
- #include "SynthLibLoc.h"
- STRPTR GetString(struct LocaleInfo *li, LONG stringNum,char *CatCompBlock);
- extern struct LocaleInfo MLi;
- extern char MainCatBlock[];
-
- struct Screen *Scr = NULL;
- UBYTE *PubScreenName = "Workbench";
- APTR VisualInfo = NULL;
- struct Window *LibWnd = NULL;
- struct Gadget *LibGList = NULL;
- struct Menu *LibMenus = NULL;
- struct IntuiMessage LibMsg;
- struct Gadget *LibGadgets[10];
- UWORD LibLeft = 84;
- UWORD LibTop = 18;
- UWORD LibWidth = 469;
- UWORD LibHeight = 156;
- struct TextAttr *Font, Attr;
- UWORD FontX, FontY;
- UWORD OffX, OffY;
- STRPTR Shortcuts;
-
- struct NewMenu LibNewMenu[] = {
- NM_TITLE, (STRPTR)MG_MENU_PROJECT, NULL, 0, NULL, NULL,
- NM_ITEM, (STRPTR)MG_MENU_P_NEW, NULL, 0, 0L, (APTR)LibNew,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)MG_MENU_P_OPEN, NULL, 0, 0L, (APTR)OpenLib,
- NM_ITEM, (STRPTR)MG_MENU_P_OPEN_RAW, NULL, 0, 0L, (APTR)OpenLibRaw,
- NM_ITEM, (STRPTR)MG_MENU_P_SAVE, NULL, 0, 0L, (APTR)SaveLib,
- NM_ITEM, (STRPTR)MG_MENU_P_SAVE_AS, NULL, 0, 0L, (APTR)SaveAsLib,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)MG_MENU_P_ABOUT, NULL, 0, 0L, (APTR)AboutLib,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)MG_MENU_P_QUIT, NULL, 0, 0L, (APTR)LibCloseWindow,
- NM_TITLE, (STRPTR)MG_MENU_DATA, NULL, 0, NULL, NULL,
- NM_ITEM, (STRPTR)MG_MENU_D_REMOVE, NULL, 0, 0L, (APTR)RemoveLib,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)MG_MENU_D_SAVE, NULL, 0, 0L, (APTR)SaveDumpLib,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)MG_MENU_D_SEND, NULL, 0, 0L, (APTR)SENDClicked,
- NM_TITLE, (STRPTR)MG_MENU_DRIVER, NULL, 0, NULL, NULL,
- NM_ITEM, (STRPTR)MG_MENU_DR_NEW, NULL, 0, 0L, (APTR)NewDriver,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)MG_MENU_DR_ABOUT, NULL, 0, 0L, (APTR)AboutDriver,
- NM_END, NULL, NULL, 0, 0L, NULL };
-
- UWORD LibGTypes[] = {
- STRING_KIND,
- LISTVIEW_KIND,
- BUTTON_KIND,
- TEXT_KIND,
- CHECKBOX_KIND,
- TEXT_KIND,
- NUMBER_KIND,
- LISTVIEW_KIND,
- BUTTON_KIND,
- BUTTON_KIND
- };
-
- struct NewGadget LibNGad[] = {
- 10, 102, 279, 14, NULL, NULL, GD_NodeName, 0, NULL, (APTR)NodeNameClicked,
- 10, 13, 279, 72, (UBYTE *)MG_GAD_DATA, NULL, GD_DataNodes, PLACETEXT_ABOVE|NG_HIGHLABEL, NULL, (APTR)DataNodesClicked,
- 181, 90, 107, 15, (UBYTE *)MG_GAD_SEND, NULL, GD_SEND, PLACETEXT_IN, NULL, (APTR)SENDClicked,
- 9, 140, 448, 12, (UBYTE *)MG_GAD_INFO, NULL, GD_Info, PLACETEXT_ABOVE, NULL, NULL,
- 24, 120, 26, 11, (UBYTE *)MG_GAD_SERIAL, NULL, GD_SERIAL, PLACETEXT_RIGHT, NULL, (APTR)SERIALClicked,
- 79, 91, 100, 13, (UBYTE *)MG_GAD_TYPE, NULL, GD_DUMP_TYPE, PLACETEXT_LEFT, NULL, NULL,
- 79, 103, 115, 13, (UBYTE *)MG_GAD_SIZE, NULL, GD_DUMP_LENGTH, PLACETEXT_LEFT, NULL, NULL,
- 301, 14, 159, 72, (UBYTE *)MG_GAD_DATA_TYPES, NULL, GD_TypeList, PLACETEXT_ABOVE, NULL, (APTR)TypeListClicked,
- 331, 90, 107, 15, (UBYTE *)MG_GAD_REQUEST, NULL, GD_Request, PLACETEXT_IN, NULL, (APTR)RequestClicked,
- 181, 110, 107, 15, (UBYTE *)MG_GAD_ABORT, NULL, GD_Abort, PLACETEXT_IN, NULL, (APTR)AbortClicked
- };
-
- ULONG LibGTags[] = {
- (GA_TabCycle), FALSE, (GTST_String),0L, (GTST_MaxChars), 256, (TAG_DONE),
- (GTLV_ShowSelected), 1L, (TAG_DONE),
- (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GT_Underscore), '_',(GA_Disabled), TRUE, (TAG_DONE),
- (GTTX_Text), NULL, (TAG_DONE),
- (TAG_DONE),
- (GTLV_ShowSelected), NULL, (TAG_DONE),
- (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE)
- };
-
- static UWORD ComputeX( UWORD value )
- {
- return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
- }
-
- static UWORD ComputeY( UWORD value )
- {
- return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
- }
-
- static void ComputeFont( UWORD width, UWORD height )
- {
- Font = &Attr;
- Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
- Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
- FontX = GfxBase->DefaultFont->tf_XSize;
-
- OffX = Scr->WBorLeft;
- OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
-
- if ( width && height ) {
- if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
- goto UseTopaz;
- if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
- goto UseTopaz;
- }
- return;
-
- UseTopaz:
- Font->ta_Name = (STRPTR)"topaz.font";
- FontX = FontY = Font->ta_YSize = 8;
- }
-
- int SetupScreen( void )
- {
- if ( ! ( Scr = LockPubScreen( PubScreenName )))
- return( 1L );
-
- ComputeFont( 0, 0 );
-
- if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
- return( 2L );
-
- return( 0L );
- }
-
- void CloseDownScreen( void )
- {
- if ( VisualInfo ) {
- FreeVisualInfo( VisualInfo );
- VisualInfo = NULL;
- }
-
- if ( Scr ) {
- UnlockPubScreen( NULL, Scr );
- Scr = NULL;
- }
- }
-
- int HandleLibIDCMP( void )
- {
- struct IntuiMessage *m;
- struct MenuItem *n;
- int (*func)();
- BOOL running = TRUE;
-
- while( m = GT_GetIMsg( LibWnd->UserPort )) {
-
- CopyMem(( char * )m, ( char * )&LibMsg, (long)sizeof( struct IntuiMessage ));
-
- GT_ReplyIMsg( m );
-
- switch ( LibMsg.Class ) {
-
- case IDCMP_MOUSEBUTTONS:
- AknowledgeMessage();
-
- break;
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( LibWnd );
- GT_EndRefresh( LibWnd, TRUE );
- break;
-
- case IDCMP_CLOSEWINDOW:
- running = LibCloseWindow();
- break;
-
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- func = ( void * )(( struct Gadget * )LibMsg.IAddress )->UserData;
- running = func();
- break;
-
- case IDCMP_MENUPICK:
- while( LibMsg.Code != MENUNULL ) {
- n = ItemAddress( LibMenus, LibMsg.Code );
- func = (void *)(GTMENUITEM_USERDATA( n ));
- running = func();
- LibMsg.Code = n->NextSelect;
- }
- break;
-
- case IDCMP_VANILLAKEY:
- if ((LibMsg.Code!='-') && (LibMsg.Code))
- {char *p;
- int num;
-
- if (p=strchr(Shortcuts,LibMsg.Code))
- {num=p-Shortcuts;
- func=LibNGad[num].ng_UserData;
- running= func();
- }
- }
- break;
- }
- }
- return( running );
- }
-
- int OpenLibWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- struct TagItem *tmp;
- UWORD lc, tc;
- UWORD wleft = LibLeft, wtop = LibTop, ww, wh;
-
- ComputeFont( LibWidth, LibHeight );
-
- ww = ComputeX( LibWidth );
- wh = ComputeY( LibHeight );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &LibGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < Lib_CNT; lc++ ) {
-
- CopyMem((char * )&LibNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- if (ng.ng_GadgetText)
- ng.ng_GadgetText=GetString(&MLi,(ULONG)ng.ng_GadgetText,MainCatBlock);
-
- if ( LibGTypes[ lc ] == LISTVIEW_KIND ) {
- if ( tmp = FindTagItem( GTLV_ShowSelected, ( struct TagItem * )&LibGTags[ tc ] )) {
- if ( tmp->ti_Data ) tmp->ti_Data = (ULONG)g;
- }
- }
-
- LibGadgets[ lc ] = g = CreateGadgetA((ULONG)LibGTypes[ lc ], g, &ng, ( struct TagItem * )&LibGTags[ tc ] );
-
- while( LibGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- {
- struct NewMenu *ANewMenu;
- char *ShortCut;
-
- ANewMenu=LibNewMenu;
- ShortCut=GetString(&MLi,MG_SHORTCUTS_MENUS,MainCatBlock);
-
- while (ANewMenu->nm_Type!=NM_END)
- {if (ANewMenu->nm_Label!=NM_BARLABEL)
- {
- ANewMenu->nm_Label=GetString(&MLi,(ULONG)ANewMenu->nm_Label,MainCatBlock);
- if (ANewMenu->nm_Type!=NM_TITLE)
- {if (*ShortCut)
- ANewMenu->nm_CommKey=ShortCut;
- ShortCut+=strlen(ShortCut)+1;
- }
- }
- ANewMenu++;
- }
- }
-
- if ( ! ( LibMenus = CreateMenus( LibNewMenu, GTMN_FrontPen,0L,TAG_DONE )))
- return( 3L );
-
- LayoutMenus( LibMenus, VisualInfo, GTMN_NewLookMenus, TRUE,TAG_DONE );
-
- if ( ! ( LibWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, STRINGIDCMP|LISTVIEWIDCMP|BUTTONIDCMP|TEXTIDCMP|CHECKBOXIDCMP|NUMBERIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
- WA_Gadgets, LibGList,
- WA_Title, GetString(&MLi,MG_WINDOW_TITLE,MainCatBlock),
- WA_ScreenTitle, GetString(&MLi,MG_SCREEN_TITLE,MainCatBlock),
- WA_AutoAdjust, TRUE,
- WA_NewLookMenus,TRUE,
- WA_Activate, TRUE,
- TAG_DONE )))
- return( 4L );
-
- SetMenuStrip( LibWnd, LibMenus );
- GT_RefreshWindow( LibWnd, NULL );
-
- Shortcuts=GetString(&MLi,MG_SHORTCUTS_GADGETS,MainCatBlock);
-
- return( 0L );
- }
-
- void CloseLibWindow( void )
- {
- if ( LibMenus ) {
- ClearMenuStrip( LibWnd );
- FreeMenus( LibMenus );
- LibMenus = NULL; }
-
- if ( LibWnd ) {
- CloseWindow( LibWnd );
- LibWnd = NULL;
- }
-
- if ( LibGList ) {
- FreeGadgets( LibGList );
- LibGList = NULL;
- }
- }
-