home *** CD-ROM | disk | FTP | other *** search
/ Da Capo / da_capo_vol1.bin / programs / amiga / midi / synth_librarian / sources / synthlib / synthlibint.c < prev    next >
C/C++ Source or Header  |  1994-08-20  |  14KB  |  356 lines

  1. /**************************************************************/
  2. /* $VER: SynthLibInt.c Revison 1.1                            */
  3. /* This file is part of Synth Librarian v1.1                  */
  4. /* ©1993-1994 Jean-Alexis MONTIGNIES                          */
  5. /* This file must not be distributed modified or separatly    */
  6. /* without my written permission                              */
  7. /* See Synth_Librarian.guide for more details                 */
  8. /**************************************************************/
  9.  
  10. /* Synth librarian main window interface */
  11. /*
  12.  *  Source machine generated by GadToolsBox V1.4
  13.  *  which is (c) Copyright 1991,92 Jaba Development
  14.  */
  15. /* Modified by hand : localized, keyboard shortcut handling */
  16.  
  17. #include <exec/types.h>
  18. #include <intuition/intuition.h>
  19. #include <intuition/classes.h>
  20. #include <intuition/classusr.h>
  21. #include <intuition/imageclass.h>
  22. #include <intuition/gadgetclass.h>
  23. #include <libraries/gadtools.h>
  24. #include <graphics/displayinfo.h>
  25. #include <graphics/gfxbase.h>
  26. #include <clib/exec_protos.h>
  27. #include <clib/intuition_protos.h>
  28. #include <clib/gadtools_protos.h>
  29. #include <clib/graphics_protos.h>
  30. #include <clib/utility_protos.h>
  31. #include <string.h>
  32. #include <libraries/locale.h>
  33.  
  34. #include "SynthLibInt.h"
  35. #define CATCOMP_NUMBERS
  36. #include "SynthLibLoc.h"
  37. STRPTR GetString(struct LocaleInfo *li, LONG stringNum,char *CatCompBlock);
  38. extern struct LocaleInfo MLi;
  39. extern char MainCatBlock[];
  40.  
  41. struct Screen         *Scr = NULL;
  42. UBYTE                 *PubScreenName = "Workbench";
  43. APTR                   VisualInfo = NULL;
  44. struct Window         *LibWnd = NULL;
  45. struct Gadget         *LibGList = NULL;
  46. struct Menu           *LibMenus = NULL;
  47. struct IntuiMessage    LibMsg;
  48. struct Gadget         *LibGadgets[10];
  49. UWORD                  LibLeft = 84;
  50. UWORD                  LibTop = 18;
  51. UWORD                  LibWidth = 469;
  52. UWORD                  LibHeight = 156;
  53. struct TextAttr       *Font, Attr;
  54. UWORD                  FontX, FontY;
  55. UWORD                  OffX, OffY;
  56. STRPTR                 Shortcuts;
  57.  
  58. struct NewMenu LibNewMenu[] = {
  59.         NM_TITLE, (STRPTR)MG_MENU_PROJECT, NULL, 0, NULL, NULL,
  60.         NM_ITEM, (STRPTR)MG_MENU_P_NEW, NULL, 0, 0L, (APTR)LibNew,
  61.         NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  62.         NM_ITEM, (STRPTR)MG_MENU_P_OPEN, NULL, 0, 0L, (APTR)OpenLib,
  63.         NM_ITEM, (STRPTR)MG_MENU_P_OPEN_RAW, NULL, 0, 0L, (APTR)OpenLibRaw,
  64.         NM_ITEM, (STRPTR)MG_MENU_P_SAVE, NULL, 0, 0L, (APTR)SaveLib,
  65.         NM_ITEM, (STRPTR)MG_MENU_P_SAVE_AS, NULL, 0, 0L, (APTR)SaveAsLib,
  66.         NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  67.         NM_ITEM, (STRPTR)MG_MENU_P_ABOUT, NULL, 0, 0L, (APTR)AboutLib,
  68.         NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  69.         NM_ITEM, (STRPTR)MG_MENU_P_QUIT, NULL, 0, 0L, (APTR)LibCloseWindow,
  70.         NM_TITLE, (STRPTR)MG_MENU_DATA, NULL, 0, NULL, NULL,
  71.         NM_ITEM, (STRPTR)MG_MENU_D_REMOVE, NULL, 0, 0L, (APTR)RemoveLib,
  72.         NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  73.         NM_ITEM, (STRPTR)MG_MENU_D_SAVE, NULL, 0, 0L, (APTR)SaveDumpLib,
  74.         NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  75.         NM_ITEM, (STRPTR)MG_MENU_D_SEND, NULL, 0, 0L, (APTR)SENDClicked,
  76.         NM_TITLE, (STRPTR)MG_MENU_DRIVER, NULL, 0, NULL, NULL,
  77.         NM_ITEM, (STRPTR)MG_MENU_DR_NEW, NULL, 0, 0L, (APTR)NewDriver,
  78.         NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  79.         NM_ITEM, (STRPTR)MG_MENU_DR_ABOUT, NULL, 0, 0L, (APTR)AboutDriver,
  80.         NM_END, NULL, NULL, 0, 0L, NULL };
  81.  
  82. UWORD LibGTypes[] = {
  83.         STRING_KIND,
  84.         LISTVIEW_KIND,
  85.         BUTTON_KIND,
  86.         TEXT_KIND,
  87.         CHECKBOX_KIND,
  88.         TEXT_KIND,
  89.         NUMBER_KIND,
  90.         LISTVIEW_KIND,
  91.         BUTTON_KIND,
  92.         BUTTON_KIND
  93. };
  94.  
  95. struct NewGadget LibNGad[] = {
  96.         10, 102, 279, 14, NULL, NULL, GD_NodeName, 0, NULL, (APTR)NodeNameClicked,
  97.         10, 13, 279, 72, (UBYTE *)MG_GAD_DATA, NULL, GD_DataNodes, PLACETEXT_ABOVE|NG_HIGHLABEL, NULL, (APTR)DataNodesClicked,
  98.         181, 90, 107, 15, (UBYTE *)MG_GAD_SEND, NULL, GD_SEND, PLACETEXT_IN, NULL, (APTR)SENDClicked,
  99.         9, 140, 448, 12, (UBYTE *)MG_GAD_INFO, NULL, GD_Info, PLACETEXT_ABOVE, NULL, NULL,
  100.         24, 120, 26, 11, (UBYTE *)MG_GAD_SERIAL, NULL, GD_SERIAL, PLACETEXT_RIGHT, NULL, (APTR)SERIALClicked,
  101.         79, 91, 100, 13, (UBYTE *)MG_GAD_TYPE, NULL, GD_DUMP_TYPE, PLACETEXT_LEFT, NULL, NULL,
  102.         79, 103, 115, 13, (UBYTE *)MG_GAD_SIZE, NULL, GD_DUMP_LENGTH, PLACETEXT_LEFT, NULL, NULL,
  103.         301, 14, 159, 72, (UBYTE *)MG_GAD_DATA_TYPES, NULL, GD_TypeList, PLACETEXT_ABOVE, NULL, (APTR)TypeListClicked,
  104.         331, 90, 107, 15, (UBYTE *)MG_GAD_REQUEST, NULL, GD_Request, PLACETEXT_IN, NULL, (APTR)RequestClicked,
  105.         181, 110, 107, 15, (UBYTE *)MG_GAD_ABORT, NULL, GD_Abort, PLACETEXT_IN, NULL, (APTR)AbortClicked
  106. };
  107.  
  108. ULONG LibGTags[] = {
  109.         (GA_TabCycle), FALSE, (GTST_String),0L, (GTST_MaxChars), 256, (TAG_DONE),
  110.         (GTLV_ShowSelected), 1L, (TAG_DONE),
  111.         (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  112.         (GTTX_Border), TRUE, (TAG_DONE),
  113.         (GT_Underscore), '_',(GA_Disabled), TRUE, (TAG_DONE),
  114.         (GTTX_Text), NULL, (TAG_DONE),
  115.         (TAG_DONE),
  116.         (GTLV_ShowSelected), NULL, (TAG_DONE),
  117.         (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  118.         (GT_Underscore), '_', (TAG_DONE)
  119. };
  120.  
  121. static UWORD ComputeX( UWORD value )
  122. {
  123.         return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  124. }
  125.  
  126. static UWORD ComputeY( UWORD value )
  127. {
  128.         return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  129. }
  130.  
  131. static void ComputeFont( UWORD width, UWORD height )
  132. {
  133.         Font = &Attr;
  134.         Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  135.         Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  136.         FontX = GfxBase->DefaultFont->tf_XSize;
  137.  
  138.         OffX = Scr->WBorLeft;
  139.         OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  140.  
  141.         if ( width && height ) {
  142.                 if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  143.                         goto UseTopaz;
  144.                 if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  145.                         goto UseTopaz;
  146.         }
  147.         return;
  148.  
  149. UseTopaz:
  150.         Font->ta_Name = (STRPTR)"topaz.font";
  151.         FontX = FontY = Font->ta_YSize = 8;
  152. }
  153.  
  154. int SetupScreen( void )
  155. {
  156.         if ( ! ( Scr = LockPubScreen( PubScreenName )))
  157.                 return( 1L );
  158.  
  159.         ComputeFont( 0, 0 );
  160.  
  161.         if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  162.                 return( 2L );
  163.  
  164.         return( 0L );
  165. }
  166.  
  167. void CloseDownScreen( void )
  168. {
  169.         if ( VisualInfo ) {
  170.                 FreeVisualInfo( VisualInfo );
  171.                 VisualInfo = NULL;
  172.         }
  173.  
  174.         if ( Scr        ) {
  175.                 UnlockPubScreen( NULL, Scr );
  176.                 Scr = NULL;
  177.         }
  178. }
  179.  
  180. int HandleLibIDCMP( void )
  181. {
  182.         struct IntuiMessage     *m;
  183.         struct MenuItem         *n;
  184.         int                     (*func)();
  185.         BOOL                    running = TRUE;
  186.  
  187.         while( m = GT_GetIMsg( LibWnd->UserPort )) {
  188.  
  189.                 CopyMem(( char * )m, ( char * )&LibMsg, (long)sizeof( struct IntuiMessage ));
  190.  
  191.                 GT_ReplyIMsg( m );
  192.  
  193.                 switch ( LibMsg.Class ) {
  194.  
  195.                         case    IDCMP_MOUSEBUTTONS:
  196.                                 AknowledgeMessage();
  197.  
  198.                                 break;
  199.  
  200.                         case    IDCMP_REFRESHWINDOW:
  201.                                 GT_BeginRefresh( LibWnd );
  202.                                 GT_EndRefresh( LibWnd, TRUE );
  203.                                 break;
  204.  
  205.                         case    IDCMP_CLOSEWINDOW:
  206.                                 running = LibCloseWindow();
  207.                                 break;
  208.  
  209.                         case    IDCMP_GADGETUP:
  210.                         case    IDCMP_GADGETDOWN:
  211.                                 func = ( void * )(( struct Gadget * )LibMsg.IAddress )->UserData;
  212.                                 running = func();
  213.                                 break;
  214.  
  215.                         case    IDCMP_MENUPICK:
  216.                                 while( LibMsg.Code != ME