/* * © 1992 by Michael Watzl */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include union printerIO { struct IOStdReq ios; struct IODRPReq iodrp; struct IOPrtCmdReq iopc; }; WORD strlen(STRPTR string); STRPTR strcpy(STRPTR to , STRPTR from ); STRPTR strncpy(STRPTR to , STRPTR from , WORD n); WORD atoi(STRPTR numberstring); STRPTR strcat(STRPTR to, STRPTR from ); STRPTR strncat(STRPTR to,STRPTR from , WORD n); VOID exit(WORD rc); /****************************************/ /* */ /* ProtoTypes for all my fkts */ /* */ /****************************************/ VOID PrintList(ULONG Mode); VOID PrintOut(WORD start,end, UWORD Mode); WORD Print( VOID ); VOID UpdatePGads(WORD new,x); WORD RefreshGads(WORD new); VOID GetIDCMP( VOID ); VOID GetMenu(UWORD n); WORD ChangeCurrent(WORD new); WORD Load(STRPTR name); /* if name is specified it'll be loaded at once */ VOID SetScreenColors( VOID ); BOOL RequestMyFile(UWORD Mode); WORD Save(STRPTR name); /* same as load */ WORD Palette(VOID); VOID CreateList(ULONG Mode); VOID RemakeList( VOID ); VOID UpdateNodeName(WORD n); VOID RemoveCurrentNode( VOID ); WORD AddNode(STRPTR name); VOID UpdateList( VOID ); WORD Search(STRPTR name, UWORD Mode); VOID QuickSort(WORD start,end); VOID InitGads( VOID ); VOID InitList( VOID ); VOID CompleteGads(struct NewGadget *ng); VOID InitTags( VOID ); WORD quit( STRPTR errtxt ); VOID usermessage(STRPTR text); VOID wbmain( struct WBStartup *msg); VOID fromcli(WORD argc, STRPTR *argv); VOID main(WORD argc, STRPTR *argv); VOID getcolor(WORD index); VOID setcolor(WORD index); VOID restorecolor( VOID ); BOOL getmem(WORD number); STRPTR fitstring(STRPTR name, WORD length); STRPTR cutstring(STRPTR name, WORD length); STRPTR itos(STRPTR string, ULONG integer); WORD c2hex(WORD c); WORD hex2c(WORD c); ULONG ahex2ulong( STRPTR ahex ); /* Printer */ BOOL OpenPrinter( VOID ); BOOL InitPrinter( VOID ); VOID ResetPrinter( VOID ); VOID ClosePrinter( VOID ); VOID SendBuffer( STRPTR Buffer , UWORD Mode ); VOID SendCommand( UWORD Command , UBYTE par0,par1,par2,par3 ); /****************************************/ /* */ /* the definitions */ /* */ /****************************************/ #define MAXNODES (2*13*MaxCass) /* MaxNumber of listentries */ #define MAXCHARS 64 /* Chars per Name */ #define MAXLCHARS 180 /* Max Chars in a Line -> LVG , SuperHires is allowed! */ #define CODE '#' /* This is a primitive file format recognition */ #define CANCEL_ERR 5 /* Load()/save() return codes */ #define OPEN_ERR 10 #define XOFFSET 10 /* Offsets Border <-> Gadget */ #define YOFFSET 9 #define SREQ_WIDTH 400 /* Dimensions of the Search Requester (acutally a window) */ #define SREQ_HEIGHT 130 #define NTSC 0 /* Displaymodes */ #define PAL 1 #define VGA 3 #define ASLWIDTH 400 /* ASL Size */ #define ASLHEIGHT 200 #define DEFNAME "MCDataSet.mc" /* default filename */ /****************************************/ /* */ /* Userdata for the Menus */ /* */ /****************************************/ #define MENU_PROJ_BASE 1 #define MENU_PROJ_LOAD MENU_PROJ_BASE #define MENU_PROJ_SAVE MENU_PROJ_BASE+1 #define MENU_PROJ_SAVEAS MENU_PROJ_BASE+2 #define MENU_PROJ_INFO MENU_PROJ_BASE+3 #define MENU_PROJ_ABOUT MENU_PROJ_BASE+4 #define MENU_PROJ_QUIT MENU_PROJ_BASE+5 #define MENU_PROJ_PRINT MENU_PROJ_BASE+6 #define MENU_PROJ_DELETE MENU_PROJ_BASE+7 #define MENU_SEARCH_BASE 10 #define MENU_SEARCH_INTER MENU_SEARCH_BASE+1 /* 001 */ #define MENU_SEARCH_LP MENU_SEARCH_BASE+2 /* 010 */ #define MENU_SEARCH_SONG MENU_SEARCH_BASE+4 /* 100 */ #define MENU_SEARCH_ANYTHING MENU_SEARCH_BASE+7 /* 111 */ #define MENU_LIST_BASE 20 #define MENU_LIST_INTER MENU_LIST_BASE+0 #define MENU_LIST_LP MENU_LIST_BASE+1 #define MENU_LIST_SONG MENU_LIST_BASE+2 #define MENU_SPECIAL_BASE 30 #define MENU_SPECIAL_NAME MENU_SPECIAL_BASE #define MENU_SPECIAL_EDIT MENU_SPECIAL_BASE+1 #define MENU_SPECIAL_PALETTE MENU_SPECIAL_BASE+2 /****************************************/ /* */ /* Different Modi for some fkts */ /* */ /****************************************/ #define FRQ_LOAD 0 /* Modes for the FileRequester */ #define FRQ_SAVE 1 #define SEARCH_INTER 0x01 /* Modes for the search routine */ #define SEARCH_LP 0x02 /* lower nibble for search object */ #define SEARCH_SONG 0x04 #define SEARCH_ANYTHING (SEARCH_INTER|SEARCH_LP|SEARCH_SONG) #define TOP_SEARCH 0x10 /* upper nibble for search start */ #define NEXT_SEARCH 0x20 #define DRAFT 0 /* Print Modes */ #define LQ 1 /****************************************/ /* */ /* "simplifications" */ /* */ /****************************************/ #define SHIFTKEYS (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT) /* for easy rawkey handling! */ #define ALTKEYS (IEQUALIFIER_LALT|IEQUALIFIER_RALT) #define RAW_F 0x23 #define RAW_T 0x14 #define RAW_D 0x22 #define RAW_L 0x28 #define RAW_O 0x18 #define RAW_C 0x33 /****************************************/ /* */ /* for the printer */ /* */ /****************************************/ #define LINE_LENGTH 256 #define LINE "________________________________________________________________\n" #define CPI15 SendCommand( aSHORP4 , 0,0,0,0 ) #define CPI10 SendCommand( aSHORP0 ,0,0,0,0) #define LINE_FEED SendBuffer("\n", CMD_WRITE ) #define FORM_FEED SendBuffer("\f", CMD_WRITE ) /****************************************/ /* */ /* Protostructures */ /* */ /****************************************/ struct MCData { /* Prototype of Cassette-data struct */ UBYTE Name[30][MAXCHARS]; /* 15 Names per Side (Titles included) */ WORD NR[2]; /* Noise Red. 0->A 1->B */ WORD Source[2]; /* Source */ }; struct ListEntry { /* This contains the relevant data fot */ struct Node Label; /* the listview nodes */ UBYTE LabelName[MAXLCHARS]; }; /****************************************/ /* */ /* Global Vars */ /* */ /****************************************/ static UBYTE *VersTag = "\0$VER: MCMaster 1.1 (5.5.1992)"; VOID *vi; /* var for VisualInfo */ WORD MaxCass = 60; /* By default space for 60 mcs will be allocated */ WORD r[4],g[4],b[4],col; /* Colors (for Palette) */ WORD col0[3][4]; /* saved colors, for canceling the palette */ WORD activegad=0; /* I need this for the palette (slidergads) */ WORD frommc=1,tomc=2; /* for the printwin */ struct DiskObject *mydob=NULL; /* Pointer to my DOB, indicator of WB/CLI start */ UBYTE myname[34]; /* Name of DiskObject */ UBYTE toolstr[5][128]; struct MCData *cass; /* pointer to datafield, which will be allocated */ UBYTE uname[30][MAXLCHARS]; /* Undo Buffer for StrGads, also used for a lot of other things*/ UBYTE ownername[3][MAXCHARS]; /* Strings for the owner's name */ UBYTE lastfname[64]=DEFNAME, lastdname[128]=""; /* Buffer for file/dir names of ASL-req */ BOOL fastexit=TRUE; /* Flag for "really quit" req */ WORD current=1; /* currently shown mc */ ULONG DisplayID = HIRES_KEY; /* Defaults for the ToolTypes */ WORD Oscan = NULL; UBYTE Database[256], Colors[256]="8AC002FFFEB2"; struct List LabelList = {NULL,NULL,NULL,0,0}; /* This is for the ListView */ struct Node TailNode = {NULL,NULL,0,0,NULL}; /* Last Node, "Tail" of NodeList */ WORD LastNode; /* Number of TailPred Node */ struct ListEntry *LEntry; /* HEAD- to TailPred-Nodes are allocated in getmem() */ BOOL PDOPEN = FALSE; /* is the printer ready? */ UBYTE prepbuffer[LINE_LENGTH+5]; /* prepared buffer -> see prepbuffer() */ UBYTE rawbuffer [LINE_LENGTH+5]; /* for reading a line "raw" */ /****************************************/ /* */ /* Constants */ /* */ /****************************************/ const STRPTR NR[] = {"Dolby C","Dolby B","NO NR.","DBX",NULL}; /* for the noise reduction CycleGadget */ const STRPTR Source[] = {"CD","LP","Radio","Mixed","Unknown",NULL}; /* for the source cyclegad */ const STRPTR what[] = {"interprets","album names","song names","anything"}; /* search/list mode string */ const STRPTR OscanName[] = {"NONE","TEXT","STANDARD","MAX","VIDEO"}; const struct TextAttr TOPAZ80= {"topaz.font",8,0,0}; /* used font */ const UWORD PenData[] = {3,1,1,2,1,3,1,0,2,-1}; /* for the 3D Look for Screen */ /****************************************/ /* */ /* Structs/Data */ /* */ /****************************************/ struct IconBase *IconBase; /* All the needed Libs! */ struct IntuitionBase *IntuitionBase; /* DICE handles the dos.library */ struct GfxBase *GfxBase; struct GadToolsBase *GadToolsBase; struct AslBase *AslBase; struct UtilityBase *UtilityBase; /* IO stuff */ union printerIO *printerReq; struct MsgPort *printer_mp; /* Port for printer */ struct ViewPort *vp; struct MonitorInfo monitorinfo; struct DimensionInfo dimensioninfo; struct ColorSpec colorspec[5]; struct RDArgs *cliargs; struct Window *window, *searchwin, *listwin, *namewin, *printwin, *palwin; struct Window *olderrwin; struct Screen *screen; struct Menu *menu; struct IntuiMessage *message; struct Gadget *congad, *gad; /* pointer to gadgetcontext, all round gadget pointer */ struct Gadget *noiseAgad,*noiseBgad,*sourceAgad,*sourceBgad,*listviewgad, *nextgad, *prevgad, *currentgad; /* Gadgets of the main window */ struct Gadget *printcon, *pos1gad, *pos2gad; /* for the print window */ struct Gadget *rslider, *gslider, *bslider, *palcon; /* for the palette win */ /****************************************/ /* */ /* EasyReqs and Freqs */ /* */ /****************************************/ struct EasyStruct easyerror = {sizeof(struct EazyStruct),0,"MC request",NULL,"UNDERSTOOD"}; /* Easy Reqs */ struct EasyStruct easyquit = {sizeof(struct EazyStruct),0,"MC Request","You did not save the last changes!\nReally Quit?","Bye bye|Stay here!"}; /* Easy Reqs */ struct EasyStruct easyabout = {sizeof(struct EazyStruct),0,"MCMaster V1.1","MCMaster\n © 1992 by Michael Watzl\n Konradstraße 11\n 8850 Donauwörth, GERMANY\n\nYou are free to send bug reports, donations or anything else.\n","Great Stuff!"}; /* Easy Reqs */ struct EasyStruct easyinfo = {sizeof(struct EazyStruct),0,"MCMaster V1.1","MCMaster Information\n\nThere are %ld of maximal %ld mcs in memory.\n------------------------------------------\nFree Mem:\n\n Chip : %10ld\n Fast : %10ld\n\nPerferences Printer: %s\n------------------------------------------\n© 1992 by Michael Watzl","OK"}; /* Easy Reqs */ struct EasyStruct easyfound = {sizeof(struct EazyStruct),0,"MCMaster V1.1",NULL,"I see"}; /* Easy Reqs */ struct EasyStruct easydelete= {sizeof(struct EazyStruct),0,"MCMaster V1.1","Really delete MC %ld\nContents:\n Side A: %s, %s \n Side B: %s, %s \n","DELETE!|Oh No!"}; /* Easy Reqs */ struct EasyStruct easyprint = {sizeof(struct EazyStruct),0,"MCMaster V1.1","Print\nfrom %ld: Side A: %s, %s \n Side B: %s, %s\n\n to %ld: Side A: %s, %s \n Side B: %s, %s\n","PRINT!|Get Back|Abort Print"}; /* Easy Reqs */ struct EasyStruct easyprintl= {sizeof(struct EazyStruct),0,"MCMaster V1.1","Are you sure?\nPrint this list of all %s?\n","PRINT!|Cancel"}; /* Easy Reqs */ struct FileRequester *filerequester; /* AslStyle! */ /****************************************/ /* */ /* Tag Lists */ /* */ /****************************************/ struct TagItem screentag[] = { SA_Left, 0, SA_Width, 640, SA_Height, 200, SA_Depth, 2, SA_Font, &TOPAZ80, SA_Quiet, TRUE, SA_DisplayID, HIRES_KEY, SA_Pens, PenData, SA_Colors, NULL, SA_Overscan, NULL, TAG_DONE, 0}; struct TagItem AslTag[] = { /* TagItems for the File Requester */ ASL_OKText, "LOAD", /* Do not change the order of these Tags! */ ASL_Window, NULL, ASL_Hail, NULL, ASL_FuncFlags, FILF_PATGAD, ASL_File, DEFNAME, ASL_Dir, NULL, ASL_LeftEdge, (640-ASLWIDTH)/2, ASL_TopEdge, 0, ASL_Width, ASLWIDTH, ASL_Height, ASLHEIGHT, ASL_Pattern, "#?.mc", TAG_DONE, 0}; struct TagItem searchwintag[]= { /* Window Tags for search win */ WA_Height ,SREQ_HEIGHT, WA_Width ,SREQ_WIDTH, WA_Left ,(640-SREQ_WIDTH)/2, WA_Top ,(200-SREQ_HEIGHT)/2, WA_Title ,"Sneekin' around...", WA_Flags ,WFLG_ACTIVATE|WFLG_RMBTRAP|WFLG_CLOSEGADGET|WFLG_DRAGBAR, WA_IDCMP ,STRINGIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY, WA_Gadgets ,NULL, WA_CustomScreen ,NULL, TAG_DONE ,0}; struct TagItem printwintag[] = { /* Window Tag List for the printwindow */ WA_Height ,140, WA_Width ,640, WA_Left ,0, WA_Top ,(200-140)/2, WA_Flags ,WFLG_ACTIVATE|WFLG_RMBTRAP|WFLG_CLOSEGADGET|WFLG_DRAGBAR, WA_IDCMP ,STRINGIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|MXIDCMP|SCROLLERIDCMP, WA_Gadgets ,NULL, WA_CustomScreen ,NULL, WA_Title ,"Print MCCovers", TAG_DONE ,0}; struct TagItem listwintag[]= { /* Window Tags for the list window */ WA_Title ,NULL, WA_Flags ,WFLG_ACTIVATE|WFLG_RMBTRAP|WFLG_CLOSEGADGET, WA_IDCMP ,LISTVIEWIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY, WA_Gadgets ,NULL, WA_CustomScreen ,NULL, TAG_DONE ,0}; struct TagItem namewintag[] = { /* window tag list for the name window */ WA_Flags, WFLG_ACTIVATE|WFLG_CLOSEGADGET|WFLG_DRAGBAR, WA_IDCMP, IDCMP_CLOSEWINDOW|STRINGIDCMP, WA_Title, "Enter new name", WA_Left, 120, WA_Top, 45, WA_Width, 400, WA_Height, 100, WA_Gadgets, NULL, WA_CustomScreen,NULL, TAG_DONE, 0}; struct TagItem SliderItem[] = { GA_FollowMouse, TRUE, GTSL_Min, 0, GTSL_Max, 15, GTSL_Level, 0, GTSL_LevelFormat, "%2ld", GA_RelVerify, TRUE, GA_Immediate, TRUE, GTSL_MaxLevelLen, 2, GTSL_LevelPlace, PLACETEXT_RIGHT, TAG_DONE, 0}; /****************************************/ /* */ /* IntuiStringGadgets + SpecialInfos */ /* */ /****************************************/ /* I used non GT-gadgets, because I don't want no borders around */ struct Gadget StrGad[]={ {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}, {NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL},{NULL,0,0,0,0,NULL,GACT_RELVERIFY|GACT_STRINGEXTEND,GTYP_STRGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL}}; struct StringInfo si[] = { {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}, {NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL},{NULL,NULL,0,MAXCHARS,0,0,0,0,0,NULL,NULL,NULL}}; /****************************************/ /* */ /* GadToolsGadgets */ /* */ /****************************************/ struct NewGadget ListVG = {10,10,10,10,NULL,&TOPAZ80,50,NULL,NULL,NULL}; struct NewGadget DolbyA = {10,10,10,10,NULL,&TOPAZ80,40,NULL,NULL,NULL}; struct NewGadget DolbyB = {10,10,10,10,NULL,&TOPAZ80,41,NULL,NULL,NULL}; struct NewGadget SourceA = {10,10,10,10,NULL,&TOPAZ80,42,NULL,NULL,NULL}; struct NewGadget SourceB = {10,10,10,10,NULL,&TOPAZ80,43,NULL,NULL,NULL}; struct NewGadget Next = {10,10,10,10,">" ,&TOPAZ80,44,PLACETEXT_IN,NULL,NULL}; struct NewGadget Prev = {10,10,10,10,"<" ,&TOPAZ80,45,PLACETEXT_IN,NULL,NULL}; struct NewGadget Current = {10,10,10,10,NULL,&TOPAZ80,31,NULL,NULL,NULL}; /****************************************/ /* */ /* GadToolsMenus */ /* */ /****************************************/ const struct NewMenu MainMenu[] = { {NM_TITLE,"Project" ,NULL,0,0,NULL },/* PROJECT */ {NM_ITEM ,"Load..." ,"L" ,0,0,MENU_PROJ_LOAD }, {NM_ITEM ,NM_BARLABEL ,NULL,0,0,NULL }, {NM_ITEM ,"Save" ,"S" ,0,0,MENU_PROJ_SAVE }, {NM_ITEM ,"Save as..." ,NULL,0,0,MENU_PROJ_SAVEAS }, {NM_ITEM ,"Info" ,NULL,0,0,MENU_PROJ_INFO }, {NM_ITEM ,"About" ,NULL,0,0,MENU_PROJ_ABOUT }, {NM_ITEM ,"Delete this MC..." ,"D" ,0,0,MENU_PROJ_DELETE }, {NM_ITEM ,"Print..." ,"P" ,0,0,MENU_PROJ_PRINT }, {NM_ITEM ,NM_BARLABEL ,NULL,0,0,NULL }, {NM_ITEM ,"Quit" ,"Q" ,0,0,MENU_PROJ_QUIT }, {NM_TITLE,"Examine Data" ,NULL,0,0,NULL },/* SEARCH, LIST */ {NM_ITEM ,"Search" ,NULL,0,0,NULL }, {NM_SUB ,"Interprets..." ,NULL,0,0,MENU_SEARCH_INTER }, {NM_SUB ,"LP titles..." ,NULL,0,0,MENU_SEARCH_LP }, {NM_SUB ,"Songnames..." ,NULL,0,0,MENU_SEARCH_SONG }, {NM_SUB ,"Search anything..." ,"F" ,0,0,MENU_SEARCH_ANYTHING }, {NM_ITEM ,NM_BARLABEL ,NULL,0,0,NULL }, {NM_ITEM ,"List" ,NULL,0,0,NULL },/* SEARCH */ {NM_SUB ,"Interprets" ,NULL,0,0,MENU_LIST_INTER }, {NM_SUB ,"Albums" ,NULL,0,0,MENU_LIST_LP }, {NM_SUB ,"Songnames" ,"N" ,0,0,MENU_LIST_SONG }, {NM_TITLE,"Special" ,NULL,0,0,NULL },/* SPECIAL */ {NM_ITEM ,"Edit Owner's Name...",NULL,0,0,MENU_SPECIAL_NAME }, {NM_ITEM ,"Edit MC" ,"E" ,0,0,MENU_SPECIAL_EDIT }, {NM_ITEM ,"Color palette..." ,"C" ,0,0,MENU_SPECIAL_PALETTE }, {NM_END} };