home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * MAIN.C
- *
- * FILES
- *
- * A file catalog program by Matthew Dillon.
- *
- * (c)Copyright 1987 Matthew Dillon, All Rights Reserved.
- *
- */
-
- #include "files.h"
- #include <local/xmisc.h>
-
- short Deemu[] = {
- 'ST','RT', 0, 0,
- 'NW',' ', 0, 8, -16, -8, 320, 100,
- 'TE','XT', 0,42, 'De','fa','ul','t\0','s:','ca','ta','lo','g.','db',0,0,0,0,0,0,0,0,0,0,0,
- 'EN','D ', 0, 0
- };
-
- #define NWOFF 8
- #define DEFFILE 16
-
- NW Nw = {
- 0, 0, 0, 0, -1, -1,
- NEWSIZE|MOUSEBUTTONS|MOUSEMOVE|GADGETDOWN|GADGETUP|MENUPICK|CLOSEWINDOW,
- WINDOWSIZING|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE|NOCAREREFRESH|ACTIVATE,
- NULL, NULL, (ubyte *)"V1.2 by Matthew Dillon, Catalog Utility.", NULL,
- NULL, 182, 66, -1, -1, WBENCHSCREEN
- };
-
- WIN *Win;
- RP *Rp;
-
- char FileName[128];
-
- main()
- {
- char resized = 0;
- char notdone = 1;
- char movebox = 0;
- char moveslider = 0;
- char addactive = 0;
- char noload = 1;
- char dontquit = 0;
-
- char mmove = 0;
- short mmy;
-
- IMESS *im;
- SCR Scr;
-
- openlibs(INTUITION_LIB|GRAPHICS_LIB);
-
- GetScreenData(&Scr, sizeof(Scr), WBENCHSCREEN, NULL);
-
- initslider(&Nw);
-
- Nw.LeftEdge = Deemu[NWOFF+0];
- Nw.TopEdge = Deemu[NWOFF+1];
- Nw.Width = Deemu[NWOFF+2];
- Nw.Height = Deemu[NWOFF+3];
- if (Nw.Width <= 0)
- Nw.Width += Scr.Width;
- if (Nw.Height <= 0)
- Nw.Height += Scr.Height;
- if (Nw.LeftEdge < 0)
- Nw.LeftEdge += Scr.Width - Nw.Width;
- if (Nw.TopEdge < 0)
- Nw.TopEdge += Scr.Height- Nw.Height;
- if (Nw.LeftEdge < 0 || Nw.TopEdge < 0 || Nw.LeftEdge + Nw.Width > Scr.Width || Nw.TopEdge + Nw.Height > Scr.Height) {
- Nw.LeftEdge = Nw.TopEdge = 0;
- Nw.Width = 320;
- Nw.Height= 100;
- }
- {
- register char *ptr = (char *)(Deemu + DEFFILE);
- strcpy(FileName, ptr + strlen(ptr) + 1);
- }
-
- Win = OpenWindow(&Nw);
- failfalse(Win, "Unable to open window");
- Rp = Win->RPort;
-
- addmenus();
- addgadgets();
- again:
- for (; notdone || dontquit;) {
- if (dontquit)
- notdone = 1;
- dontquit = 0;
- WaitPort(Win->UserPort);
- while (im = GetMsg(Win->UserPort)) {
- switch(im->Class) {
- case NEWSIZE:
- resized = 1;
- break;
- case MOUSEBUTTONS:
- break;
- case MOUSEMOVE:
- mmove = 1;
- mmy = im->MouseY;
- break;
- case GADGETDOWN:
- {
- char *str = NULL;
- short sel;
- switch(getgadget(im, &sel, &str)) {
- case GAD_SLIDER:
- moveslider = 1;
- movebox = 0;
- sliderhit();
- break;
- case GAD_BIGBOX:
- moveslider = 0;
- movebox = 1;
- bigboxhit(im->MouseY, 0);
- break;
- }
- }
- break;
- case GADGETUP:
- {
- char *str = NULL;
- short sel;
- switch(getgadget(im, &sel, &str)) {
- case GAD_INFO:
- {
- long fh = Open("raw:10/24/600/150/INFO", 1006);
- if (fh) {
- char buf[8];
- fhprintf(fh, "\n\r\n\rVersion 1.1 Written by Matthew Dillon\n\r");
- fhprintf(fh, "(c)Copyright 1987 Matthew Dillon, All Rights Reserved.\n\n\r");
- fhprintf(fh, " dillon@ucbvax.berkeley.edu (ARPANET)\n\r");
- fhprintf(fh, " ...!ihnp4!ucbvax!dillon (USENET)\n\r");
- fhprintf(fh, "Matthew Dillon, 891 Regal Rd. Berkeley, Ca. 94708\n\n\r");
- fhprintf(fh, "This software is freely redistributable only. This\n\r");
- fhprintf(fh, "software is NOT shareware\n\n\r");
- fhprintf(fh, "Thanks to Peter Da Silva for providing the filerequestor\n\r");
- fhprintf(fh, "\n\n Any key to continue\n\r");
- Read(fh, buf, 1);
- Close(fh);
- }
- }
- break;
- case GAD_DEL:
- rem_selected(Highlighted, 0);
- break;
- case GAD_UNDO:
- undo();
- break;
- case GAD_ALL:
- selectall();
- redisplay(0);
- break;
- case GAD_VOLUME:
- if (str[0])
- add_volume(str);
- activate_vol();
- break;
- case GAD_PATTERN:
- if (str[0]) {
- title("Wait");
- select_pattern(str, 0);
- }
- activate_pat();
- break;
- case GAD_COMMENT:
- mod_comment(str);
- break;
- case GAD_SLIDER:
- moveslider = 0;
- sliderhit();
- break;
- case GAD_BIGBOX:
- movebox = 0;
- bigboxhit(im->MouseY, 1);
- break;
- }
- }
- break;
- case MENUPICK:
- switch(getmenu(im)) {
- case MEN_SAVE:
- {
- FILE *fi;
- if (noload && NumEntries == 0) {
- title("Did I just save you from making a mistake?");
- break;
- }
- fi = fopen(FileName, "w");
- if (fi) {
- save_database(fi);
- if (ferror(fi)) {
- title("File Error");
- dontquit = 1;
- } else {
- title("Saved ok");
- Modified = 0;
- }
- fclose(fi);
- } else {
- title("Unable to open file for write");
- }
- }
- break;
- case MEN_SAVEAS:
- {
- FILE *fi;
- if (stdfile("SAVE DATABASE", FileName, "", FileName)) {
- noload = 0;
- if (fi = fopen(FileName, "w")) {
- save_database(fi);
- if (ferror(fi)) {
- title("File Error");
- dontquit = 1;
- } else {
- title("Saved ok");
- Modified = 0;
- }
- fclose(fi);
- } else {
- title("Unable to open file for write");
- }
- }
- }
- break;
- case MEN_LOADEF:
- {
- FILE *fi = fopen(FileName, "r");
- long entries = NumEntries;
- if (fi) {
- noload = 0;
- load_database(fi);
- if (!entries)
- Modified = 0;
- fclose(fi);
- } else {
- title("Unable to open file for read");
- }
- }
- break;
- case MEN_LOAD:
- {
- FILE *fi;
- long entries = NumEntries;
- if (stdfile("LOAD DATABASE", FileName, "", FileName)) {
- noload = 0;
- if (fi = fopen(FileName, "r")) {
- load_database(fi);
- if (!entries)
- Modified = 0;
- fclose(fi);
- } else {
- title("Unable to open file for read");
- }
- }
- }
- break;
- case MEN_QUIT:
- notdone = 0;
- break;
- case MEN_KILLPAT:
- resetsort();
- addentry(KILLNAME, "", 0);
- select_pattern(KILLNAME, 0);
- break;
- }
- break;
- case CLOSEWINDOW:
- notdone = 0;
- break;
- }
- ReplyMsg(im);
- if (resized) {
- fixgadgets();
- redisplay(0);
- }
- resized = 0;
- }
- if (mmove) {
- if (moveslider)
- sliderhit();
- if (movebox)
- bigboxhit(mmy, 0);
- mmove = 0;
- }
- }
- if (Modified) {
- title("MODIFICATIONS MADE! HIT CLOSE-BOX AGAIN TO VERIFY");
- Modified = 0;
- notdone = 1;
- goto again;
- }
- failfalse(NULL, NULL);
- }
-
- failfalse(val, str)
- long val;
- char *str;
- {
- if (val == NULL) {
- if (str)
- puts(str);
- if (Win) {
- remmenus();
- remgadgets();
- CloseWindow(Win);
- Win = NULL;
- }
- closelibs(-1);
- exit((str)? 1 : 0);
- }
- }
-
- failtrue(val, str)
- long val;
- char *str;
- {
- if (val)
- failfalse(NULL, str);
- }
-
-