home *** CD-ROM | disk | FTP | other *** search
- /*
- Auto: sys1:bin/cc -sa -ss -su -3 +D <path><file> +l
- Auto: sys1:bin/ln +cd <path><file>.o -lcl
- */
- #include <exec/types.h>
- #include <intuition/intuition.h>
-
-
- #define FF 0x0c
- #define CR 0x0d
- #define ESC 0x1b
- #define CLEARMENU 10
- #define SAVEMENU 11
- #define QUITMENU 13
- #define SIDEAGAD 0x50
- #define SIDEBGAD 0x70
- #define PRINTGAD 0x42
- #define BACKGAD 0x43
- #define FORWARDGAD 0x44
- #define FFORWARDGAD 0x45
- #define DOLBYGAD 0x46
- #define REWINDGAD 0x47
- #define NEWGAD 0x48
- #define DELGAD 0x41
- #define CLOSED 0x32
- #define INTUITION_REV 33
- #define GRAPHICS_REV 33
- #include <dh2:aztec/progs/tapecover/tapecovergadg.c>
- #include <stdio.h>
- #include <libraries/dos.h>
- #include <libraries/dosextens.h>
- struct IntuitionBase *IntuitionBase = NULL;
- struct GfxBase *GfxBase = NULL;
- struct Window *window1 = NULL;
- struct RastPort *rp;
- struct TL {
- char aname[35];
- char bname[35];
- char ItemAName[12][35];
- char ItemBName[12][35];
- };
- struct TL TapeList[200];
- int GadFlag = 0;
- short numtapes = 0, currtape = 0, down = 0, direction = 0;
- int whichpicked = 0;
-
-
-
- VOID
- cleanExit(wind, returnValue)
- struct Window *wind;
- int returnValue;
- {
-
- if (wind)
- {
- ClearMenuStrip(wind);
- CloseWindow(wind);
- }
- if (GfxBase)
- CloseLibrary((struct Library *) GfxBase);
- if (IntuitionBase)
- CloseLibrary((struct Library *) IntuitionBase);
- exit(returnValue);
- }
-
- VOID
- OpenAll(VOID)
- {
- FILE *fopen(), *hs;
- int counter = 0, count2;
- IntuitionBase = (struct IntuitionBase *)
- OpenLibrary("intuition.library", INTUITION_REV);
- if (IntuitionBase == NULL)
- cleanExit(NULL, RETURN_WARN);
- GfxBase = (struct GfxBase *)
- OpenLibrary("graphics.library", GRAPHICS_REV);
-
- if (GfxBase == NULL)
- cleanExit(NULL, RETURN_WARN);
-
- window1 = (struct Window *) OpenWindow(&NewWindowStructure1);
- if (window1 == NULL)
- cleanExit(NULL, RETURN_WARN);
- rp = window1->RPort;
- PrintIText (window1->RPort, &IntuiTextList1, 0, 0);
- SetMenuStrip (window1, &MenuList1);
- if ((hs = fopen("TapeCover.file", "r")) != NULL) {
- while (feof(hs) ==0)
- {
- fgets(TapeList[counter].aname,100,hs);
- TapeList[counter].aname[strlen(TapeList[counter].aname)-1] = '\0';
- fgets(TapeList[counter].bname,100,hs);
- TapeList[counter].bname[strlen(TapeList[counter].bname)-1] = '\0';
- for (count2 = 0; count2 < 12; count2++)
- {
- fgets(TapeList[counter].ItemAName[count2],100,hs);
- TapeList[counter].ItemAName[count2][strlen(TapeList[counter].ItemAName[count2])-1] = '\0';
- fgets(TapeList[counter].ItemBName[count2],100,hs);
- TapeList[counter].ItemBName[count2][strlen(TapeList[counter].ItemBName[count2])-1] = '\0';
- }
- counter++;
- }
- numtapes = counter - 2;
- fclose(hs);
-
- }
- }
-
-
- USHORT
- handleIDCMP(struct Window * win)
- {
- int i;
- int flag = 0;
- struct IntuiMessage *message = NULL;
- int code;
- USHORT id;
- UWORD oldtop;
- ULONG class;
- struct Gadget *g;
- while (message = (struct IntuiMessage *) GetMsg(win->UserPort)) {
- class = message->Class;
- code = message->Code;
- g = (struct Gadget *) (message->IAddress);
-
- switch (class) {
- case CLOSEWINDOW:
- flag = CLOSED;
- break;
- case GADGETUP:
- flag = g->GadgetID;
- down = 0;
- direction = 0;
- break;
- case GADGETDOWN:
- flag = g->GadgetID;
- down = 1;
- break;
- case MENUPICK:
- flag = ITEMNUM(code)+10;
- if (flag == QUITMENU)
- flag = CLOSED;
-
- break;
- }
- ReplyMsg((struct Message *) message);
- }
- return (flag);
- }
-
- VOID PrintRoutine()
- {
- FILE *fopen(), *fp;
- short counter, linecount;
- char normal[10];
- char condensed[10], halffeed[10];
- char outstr[100];
- char headera[10], headerb[10];
- char dataline[50], databline[50];
- char blankline[100];
- fp = fopen("PRT:","w");
- if (fp != 0)
- { blankline[0] = '\0';
- strcpy (blankline,"| |\n\0");
- halffeed[0] = ESC;
- halffeed[1] = 'K';
- halffeed[2] = '\0';
- normal[0] = ESC;
- normal[1] = '\0';
- strcat (normal, "[0w\0");
- condensed[0] = ESC;
- condensed[1] = '\0';
- strcat (condensed, "[4w\0");
- outstr[0] = '\0';
- strcat (outstr,condensed);
- fputs (outstr,fp);
- fputs ("\n-------------------------------------------------------------------\n\0",fp);
- outstr[0] = '\0';
- strcat (outstr,"| ");
- strcat (outstr,sideaSInfo.Buffer);
- for (counter = 0; counter < (32-strlen(sideaSInfo.Buffer)); counter++)
- strcat (outstr, " \0");
- strcat (outstr,sidebSInfo.Buffer);
- for (counter = 0; counter < (32-strlen(sidebSInfo.Buffer)); counter++)
- strcat (outstr, " \0");
- strcat (outstr,"|\n\0");
- fputs (outstr,fp);
- fputs (blankline,fp);
- for (linecount = 1; linecount < 13; linecount++)
- {
- outstr[0] = '\0';
- strcat (outstr,"| \0");
- switch (linecount)
- {
- case 1:
- strcpy (headera," 1. \0");
- strcpy (dataline,a1SInfo.Buffer);
- strcpy (headerb," 1. \0");
- strcpy (databline,b1SInfo.Buffer);
- break;
- case 2:
- strcpy (headera," 2. \0");
- strcpy (dataline,a2SInfo.Buffer);
- strcpy (headerb," 2. \0");
- strcpy (databline,b2SInfo.Buffer);
- break;
- case 3:
- strcpy (headera," 3. \0");
- strcpy (dataline,a3SInfo.Buffer);
- strcpy (headerb," 3. \0");
- strcpy (databline,b3SInfo.Buffer);
- break;
- case 4:
- strcpy (headera," 4. \0");
- strcpy (dataline,a4SInfo.Buffer);
- strcpy (headerb," 4. \0");
- strcpy (databline,b4SInfo.Buffer);
- break;
- case 5:
- strcpy (headera," 5. \0");
- strcpy (dataline,a5SInfo.Buffer);
- strcpy (headerb," 5. \0");
- strcpy (databline,b5SInfo.Buffer);
- break;
- case 6:
- strcpy (headera," 6. \0");
- strcpy (dataline,a6SInfo.Buffer);
- strcpy (headerb," 6. \0");
- strcpy (databline,b6SInfo.Buffer);
- break;
- case 7:
- strcpy (headera," 7. \0");
- strcpy (dataline,a7SInfo.Buffer);
- strcpy (headerb," 7. \0");
- strcpy (databline,b7SInfo.Buffer);
- break;
- case 8:
- strcpy (headera," 8. \0");
- strcpy (dataline,a8SInfo.Buffer);
- strcpy (headerb," 8. \0");
- strcpy (databline,b8SInfo.Buffer);
- break;
- case 9:
- strcpy (headera," 9. \0");
- strcpy (dataline,a9SInfo.Buffer);
- strcpy (headerb," 9. \0");
- strcpy (databline,b9SInfo.Buffer);
- break;
- case 10:
- strcpy (headera,"10. \0");
- strcpy (dataline,a10SInfo.Buffer);
- strcpy (headerb,"10. \0");
- strcpy (databline,b10SInfo.Buffer);
- break;
- case 11:
- strcpy (headera,"11. \0");
- strcpy (dataline,a11SInfo.Buffer);
- strcpy (headerb,"11. \0");
- strcpy (databline,b11SInfo.Buffer);
- break;
- case 12:
- strcpy (headera,"12. \0");
- strcpy (dataline,a12SInfo.Buffer);
- strcpy (headerb,"12. \0");
- strcpy (databline,b12SInfo.Buffer);
- break;
- }
- if (strlen(dataline) != 0)
- {
- strcat (outstr, headera);
- strcat (outstr, dataline);
- }
- else
- strcat (outstr," \0");
- for (counter = 0; counter < (28-strlen(dataline)); counter++)
- strcat (outstr, " \0");
- if (strlen(databline) != 0)
- {
- strcat (outstr, headerb);
- strcat (outstr, databline);
- }
- else
- strcat (outstr," \0");
- for (counter = 0; counter < (28-strlen(databline)); counter++)
- strcat (outstr, " \0");
- strcat (outstr,"|\n\0");
- fputs (outstr, fp);
- }
- fputs (blankline,fp);
- fputs (halffeed,fp);
- outstr[0] = '\0';
- strcat (outstr,normal);
- strcat (outstr," \0");
- strcat (outstr,sideaSInfo.Buffer);
- strcat (outstr,"\n\0");
- fputs (outstr,fp);
- outstr[0] = '\0';
- strcat (outstr,normal);
- strcat (outstr," \0");
- strcat (outstr,sidebSInfo.Buffer);
- strcat (outstr,"\n\0");
- fputs (outstr,fp);
- fputs (condensed,fp);
- fputs (halffeed,fp);
- fputs (blankline,fp);
- fputs (blankline,fp);
- fputs (blankline,fp);
- fputs ("-------------------------------------------------------------------\n\0",fp);
- fputs (normal,fp);
- fputc(FF,fp);
- fclose (fp);
- }
- }
- struct Gadget FindGad(num)
- int num;
- {
- struct Gadget tempgad;
- switch (num)
- {
- case 0:
- tempgad = a1;
- break;
- case 1:
- tempgad = a2;
- break;
- case 2:
- tempgad = a3;
- break;
- case 3:
- tempgad = a4;
- break;
- case 4:
- tempgad = a5;
- break;
- case 5:
- tempgad = a6;
- break;
- case 6:
- tempgad = a7;
- break;
- case 7:
- tempgad = a8;
- break;
- case 8:
- tempgad = a9;
- break;
- case 9:
- tempgad = a10;
- break;
- case 10:
- tempgad = a11;
- break;
- case 11:
- tempgad = a12;
- break;
- }
- return (tempgad);
- }
-
- struct Gadget FindBGad(num)
- int num;
- {
- struct Gadget tempgad;
- switch (num)
- {
- case 0:
- tempgad = b1;
- break;
- case 1:
- tempgad = b2;
- break;
- case 2:
- tempgad = b3;
- break;
- case 3:
- tempgad = b4;
- break;
- case 4:
- tempgad = b5;
- break;
- case 5:
- tempgad = b6;
- break;
- case 6:
- tempgad = b7;
- break;
- case 7:
- tempgad = b8;
- break;
- case 8:
- tempgad = b9;
- break;
- case 9:
- tempgad = b10;
- break;
- case 10:
- tempgad = b11;
- break;
- case 11:
- tempgad = b12;
- break;
- }
- return (tempgad);
- }
-
- VOID SaveTape ()
- {
- strcpy (TapeList[currtape].aname, sideaSIBuff);
- strcpy (TapeList[currtape].ItemAName[0], a1SIBuff);
- strcpy (TapeList[currtape].ItemAName[1], a2SIBuff);
- strcpy (TapeList[currtape].ItemAName[2], a3SIBuff);
- strcpy (TapeList[currtape].ItemAName[3], a4SIBuff);
- strcpy (TapeList[currtape].ItemAName[4], a5SIBuff);
- strcpy (TapeList[currtape].ItemAName[5], a6SIBuff);
- strcpy (TapeList[currtape].ItemAName[6], a7SIBuff);
- strcpy (TapeList[currtape].ItemAName[7], a8SIBuff);
- strcpy (TapeList[currtape].ItemAName[8], a9SIBuff);
- strcpy (TapeList[currtape].ItemAName[9], a10SIBuff);
- strcpy (TapeList[currtape].ItemAName[10], a11SIBuff);
- strcpy (TapeList[currtape].ItemAName[11], a12SIBuff);
- strcpy (TapeList[currtape].bname, sidebSIBuff);
- strcpy (TapeList[currtape].ItemBName[0], b1SIBuff);
- strcpy (TapeList[currtape].ItemBName[1], b2SIBuff);
- strcpy (TapeList[currtape].ItemBName[2], b3SIBuff);
- strcpy (TapeList[currtape].ItemBName[3], b4SIBuff);
- strcpy (TapeList[currtape].ItemBName[4], b5SIBuff);
- strcpy (TapeList[currtape].ItemBName[5], b6SIBuff);
- strcpy (TapeList[currtape].ItemBName[6], b7SIBuff);
- strcpy (TapeList[currtape].ItemBName[7], b8SIBuff);
- strcpy (TapeList[currtape].ItemBName[8], b9SIBuff);
- strcpy (TapeList[currtape].ItemBName[9], b10SIBuff);
- strcpy (TapeList[currtape].ItemBName[10], b11SIBuff);
- strcpy (TapeList[currtape].ItemBName[11], b12SIBuff);
- }
-
- VOID DisplayTape()
- {
- strcpy (sideaSIBuff,TapeList[currtape].aname);
- strcpy (a1SIBuff,TapeList[currtape].ItemAName[0]);
- strcpy (a2SIBuff,TapeList[currtape].ItemAName[1]);
- strcpy (a3SIBuff,TapeList[currtape].ItemAName[2]);
- strcpy (a4SIBuff,TapeList[currtape].ItemAName[3]);
- strcpy (a5SIBuff,TapeList[currtape].ItemAName[4]);
- strcpy (a6SIBuff,TapeList[currtape].ItemAName[5]);
- strcpy (a7SIBuff,TapeList[currtape].ItemAName[6]);
- strcpy (a8SIBuff,TapeList[currtape].ItemAName[7]);
- strcpy (a9SIBuff,TapeList[currtape].ItemAName[8]);
- strcpy (a10SIBuff,TapeList[currtape].ItemAName[9]);
- strcpy (a11SIBuff,TapeList[currtape].ItemAName[10]);
- strcpy (a12SIBuff,TapeList[currtape].ItemAName[11]);
- strcpy (sidebSIBuff,TapeList[currtape].bname);
- strcpy (b1SIBuff,TapeList[currtape].ItemBName[0]);
- strcpy (b2SIBuff,TapeList[currtape].ItemBName[1]);
- strcpy (b3SIBuff,TapeList[currtape].ItemBName[2]);
- strcpy (b4SIBuff,TapeList[currtape].ItemBName[3]);
- strcpy (b5SIBuff,TapeList[currtape].ItemBName[4]);
- strcpy (b6SIBuff,TapeList[currtape].ItemBName[5]);
- strcpy (b7SIBuff,TapeList[currtape].ItemBName[6]);
- strcpy (b8SIBuff,TapeList[currtape].ItemBName[7]);
- strcpy (b9SIBuff,TapeList[currtape].ItemBName[8]);
- strcpy (b10SIBuff,TapeList[currtape].ItemBName[9]);
- strcpy (b11SIBuff,TapeList[currtape].ItemBName[10]);
- strcpy (b12SIBuff,TapeList[currtape].ItemBName[11]);
- RefreshGList(&sidea,window1,NULL,32);
- }
-
- VOID DeleteTape()
- {
- int counter;
- for (counter = currtape; counter < numtapes; counter++)
- TapeList[counter] = TapeList[counter+1];
- TapeList[numtapes].aname[0] = '\0';
- TapeList[numtapes].bname[0] = '\0';
- for (counter = 0; counter <= 11; counter++)
- {
- TapeList[numtapes].ItemAName[counter][0] = '\0';
- TapeList[numtapes].ItemBName[counter][0] = '\0';
- }
- numtapes--;
- if (numtapes < currtape)
- currtape = numtapes;
- }
-
-
- VOID StoreTape()
- {
- FILE *fopen(), *hs;
- int counter = 0, count2;
- if ((hs = fopen("TapeCover.file", "w")) != NULL) {
- for (counter = 0; counter <= numtapes; counter++)
- {
- fputs(TapeList[counter].aname,hs);
- fputs ("\n",hs);
- fputs(TapeList[counter].bname,hs);
- fputs ("\n",hs);
- for (count2 = 0; count2 < 12; count2++)
- {
- fputs(TapeList[counter].ItemAName[count2],hs);
- fputs("\n",hs);
- fputs(TapeList[counter].ItemBName[count2],hs);
- fputs("\n",hs);
- }
- }
- fflush(hs);
- fclose(hs);
- }
- }
-
- VOID
- main()
- {
- struct Gadget tempgad, tempgad2;
- short dolby, changed = 0;
- ULONG signalmask, signals;
- OpenAll();
- DisplayTape();
- signalmask = 1L << window1->UserPort->mp_SigBit;
- ActivateGadget(&sidea,window1,NULL);
- while (GadFlag != CLOSED)
- {
- signals = Wait(signalmask);
- GadFlag = handleIDCMP(window1);
- if (down == 0)
- {
- if ((direction == 1) && (currtape < numtapes))
- {
- currtape++;
- DisplayTape();
- }
- else if ((direction == -1) && (currtape > 0))
- {
- currtape--;
- DisplayTape();
- } else
- switch (GadFlag)
- {
- case PRINTGAD:
- PrintRoutine();
- break;
- case DOLBYGAD:
- if (dolby == 0)
- dolby = 1;
- else dolby = 0;
- break;
- case FORWARDGAD:
- if (changed == 1)
- {
- changed = 0;
- SaveTape();
- }
- if (currtape < numtapes)
- {
- currtape++;
- DisplayTape();
- }
- break;
- case BACKGAD:
- if (changed == 1)
- {
- changed = 0;
- SaveTape();
- }
- if (currtape > 0)
- {
- currtape--;
- DisplayTape();
- }
- break;
- case NEWGAD:
- if (changed == 1)
- {
- changed = 0;
- SaveTape();
- }
- numtapes++;
- currtape = numtapes;
- DisplayTape();
- ActivateGadget(&sidea,window1,NULL);
- break;
- case DELGAD:
- if (changed == 1)
- changed = 0;
- DeleteTape();
- if (numtapes < 0)
- {
- numtapes++;
- currtape++;
- }
- DisplayTape();
- break;
- case CLEARMENU:
- while (numtapes != -1)
- DeleteTape();
- numtapes = 0;
- currtape = 0;
- DisplayTape();
- break;
- case SAVEMENU:
- if (changed == 1)
- {
- changed = 0;
- SaveTape();
- }
- StoreTape();
- break;
-
- }
- }
- else
- switch (GadFlag)
- {
- case FFORWARDGAD:
- if (changed == 1)
- {
- changed = 0;
- SaveTape();
- }
- direction = 1;
- down =0;
- break;
- case REWINDGAD:
- if (changed == 1)
- {
- changed = 0;
- SaveTape();
- }
- direction = -1;
- down = 0;
- break;
- }
- if ((GadFlag >= SIDEAGAD) && (GadFlag <= SIDEAGAD+12))
- {
- changed = 1;
- tempgad = FindGad (GadFlag - SIDEAGAD);
- ActivateGadget(&tempgad,window1,NULL);
- }
- else
- if ((GadFlag >= SIDEBGAD) && (GadFlag <= SIDEBGAD+12))
- {
- changed = 1;
- tempgad = FindBGad (GadFlag - SIDEBGAD);
- ActivateGadget(&tempgad,window1,NULL);
- }
- }
- cleanExit(window1, RETURN_OK);
- }
-