home *** CD-ROM | disk | FTP | other *** search
- #include "startup.h"
- #include "xsb.h"
-
- struct Window *w;
- struct RastPort *rp;
- struct Gadget *glist;
-
- void brokeron(void);
- void brokeroff(void);
- void doblank(char*);
- void doprefs(char*);
-
- extern struct Library *XSBBase;
-
- extern char popkey[],hotkey[],xsbname[];
- long blankmouse,mousetimeout=30/5;
- long screentimeout=300/5,randomblanker;
-
- static long activeblankernum;
-
- void LockWindow(struct Window*);
- void UnlockWindow(struct Window*);
-
- extern char version[];
-
- static long __regargs slidercalc(long val)
- {
- return(val*5);
- }
-
- void loadprefs(void)
- {
- BPTR f;
-
- if(f=CreateDir("ENV:XSB")) UnLock(f);
- if(f=CreateDir("ENVARC:XSB")) UnLock(f);
-
- f=Open("ENV:XSB/XSB.prefs",MODE_OLDFILE);
- if(!f) return;
-
- Read(f,popkey,40);
- Read(f,hotkey,40);
- Read(f,xsbname,30);
- Read(f,&blankmouse,4);
- Read(f,&mousetimeout,4);
- Read(f,&screentimeout,4);
- Read(f,&randomblanker,4);
- Close(f);
- }
-
- void saveprefs(char *name)
- {
- BPTR f=Open(name,MODE_NEWFILE);
- if(!f) return;
-
- Write(f,popkey,40);
- Write(f,hotkey,40);
- Write(f,xsbname,30);
- Write(f,&blankmouse,4);
- Write(f,&mousetimeout,4);
- Write(f,&screentimeout,4);
- Write(f,&randomblanker,4);
- Write(f,version,strlen(version));
- Close(f);
- }
-
-
- static struct List labels;
- static void getxsblist(void)
- {
- char parsed[64];
- struct Node *node;
- char *mem,*p;
- long blankercount=0;
-
- struct ExAllData *ead=AllocVec(8192,MEMF_CLEAR);
- struct ExAllControl *eac=AllocDosObjectTagList(DOS_EXALLCONTROL,TAG_DONE);
- BPTR lock=Lock("LIBS:",SHARED_LOCK);
- if(!ead || !eac || !lock) goto xit;
- NewList(&labels);
- activeblankernum=0;
- ParsePatternNoCase("XSB#?.library",parsed,64);
- eac->eac_MatchString=parsed;
- ExAll(lock,ead,8192,ED_NAME,eac);
- if(!eac->eac_Entries) goto xit;
-
- while(ead) {
- node=AllocVec(sizeof(struct Node),MEMF_CLEAR);
- if(!stricmp(ead->ed_Name,xsbname)) activeblankernum=blankercount;
- p=&ead->ed_Name[3];
- while(*p!='.') p++; *p=0;
- p=&ead->ed_Name[3];
- mem=AllocVec(strlen(p),0);
- strcpy(mem,p);
- node->ln_Name=mem;
- AddTail(&labels,node);
- ead=ead->ed_Next;
- blankercount++;
- }
- xit:
- if(ead) FreeVec(ead);
- if(eac) FreeDosObject(DOS_EXALLCONTROL,eac);
- if(lock) UnLock(lock);
- }
-
- static void freelabels(void)
- {
- struct Node *l;
-
- while(l=RemHead(&labels)) {
- FreeVec(l->ln_Name);
- FreeVec(l);
- }
- }
-
- struct Node *findnode(int num)
- {
- struct Node *n=labels.lh_Head;
- int c;
-
- for(c=0; c<num; c++) n=n->ln_Succ;
- return(n);
- }
-
- static void doblankerinfo(char *name)
- {
- if(!(XSBBase=OldOpenLibrary(name))) {
- doreq("XSBCX","Can't open blanker library\n%s","Cancel",name);
- return;
- }
- LockWindow(w);
- doreq(name,XSBGetID(),"OK");
- CloseLibrary(XSBBase);
- UnlockWindow(w);
- }
-
-
- void popup(void)
- {
- struct IntuiMessage *im;
- long code,class;
- struct Gadget *g;
- int running=1;
- long tempblankmouse=blankmouse;
- long tempmousetimeout=mousetimeout;
- long tempscreentimeout=screentimeout;
- long temprandomblanker=randomblanker;
- char tempxsbname[40],temppopkey[40],temphotkey[40];
-
- strcpy(tempxsbname,xsbname);
- strcpy(temphotkey,hotkey);
- strcpy(temppopkey,popkey);
-
- getxsblist();
- if(!(w=OpenWindowTags(0,
- WA_Left,50,WA_Top,50,
- WA_Width,450,WA_Height,175,
- WA_Title,"XSBCX Setup Window",
- WA_ScreenTitle,"XSBCX V1.0 (" __DATE__ ") © 1992 by Oliver Wagner, All Rights Reserved",
- WA_Flags,ACTIVATE|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE|REPORTMOUSE,
- WA_IDCMP,CLOSEWINDOW|GADGETUP|GADGETDOWN|MOUSEMOVE,
- WA_AutoAdjust,TRUE,
- TAG_DONE))) return;
- rp=w->RPort;
- gt_init();
- glist=gt_newlist();
- gt_drawbox(8,15,434,40,1);
- gt_drawbox(196,57,234+12,33,1);
- gt_drawbox(192,57+34,234+12+4,56,1);
- gt_drawbox(8,57,186,90,1);
- SetAPen(rp,0);
- RectFill(rp,192,57+34+1,195,57+34+1+53);
-
- gt_createg(40,152, 70,15, BUTTON_KIND, "Save", 0, TAG_DONE);
- gt_createg(225-35,152, 70,15, BUTTON_KIND, "Use", 0, TAG_DONE);
- gt_createg(340,152, 70,15, BUTTON_KIND, "Cancel", 0, TAG_DONE);
-
- gt_createg(105,20,328,14, STRING_KIND, "Blank Key:", NG_HIGHLABEL, GTST_String,hotkey, GTST_MaxChars,40, TAG_DONE);
- gt_createg(105,36,328,14, STRING_KIND, "Popup Key:", NG_HIGHLABEL, GTST_String,popkey, GTST_MaxChars,40, TAG_DONE);
-
- gt_createg(309,62, 40,14, CHECKBOX_KIND, "Blank Mouse:", NG_HIGHLABEL, GTCB_Checked, blankmouse, TAG_DONE);
- gt_createg(309,63+13, 85,10, SLIDER_KIND, "Timeout:", NG_HIGHLABEL, GTSL_Min,1, GTSL_Max,36, GTSL_MaxLevelLen,4, GTSL_LevelFormat, "%-3lds", GTSL_LevelPlace,PLACETEXT_RIGHT, GTSL_DispFunc, slidercalc, PGA_Freedom, LORIENT_HORIZ, GTSL_Level,mousetimeout,GA_RelVerify,TRUE,TAG_DONE);
-
- gt_createg(309,62+33, 40,14, CHECKBOX_KIND, "Pick Random:", NG_HIGHLABEL, GTCB_Checked, randomblanker, TAG_DONE);
- gt_createg(309,63+13+33, 85,10, SLIDER_KIND,"Timeout:", NG_HIGHLABEL, GTSL_Min,1, GTSL_Max,36*3, GTSL_MaxLevelLen,4, GTSL_LevelFormat, "%-3lds", GTSL_LevelPlace,PLACETEXT_RIGHT, GTSL_DispFunc, slidercalc, PGA_Freedom, LORIENT_HORIZ, GA_RelVerify,TRUE,GTSL_Level,screentimeout,TAG_DONE);
-
- gt_createg(220,63+33+13+18, 50,13, BUTTON_KIND, "Test", 0,TAG_DONE);
- gt_createg(220+75,63+33+13+18, 50,13, BUTTON_KIND, "Info", 0,TAG_DONE);
- gt_createg(220+150,63+33+13+18, 50,13, BUTTON_KIND, "Prefs", 0,TAG_DONE);
-
- gt_createg(20,75,160,70, LISTVIEW_KIND, "Avaible Blankers:", NG_HIGHLABEL|PLACETEXT_ABOVE,
- GTLV_Top,0,GTLV_Selected,activeblankernum,
- GTLV_Labels,&labels,
- GTLV_ScrollWidth,16,
- GTLV_ShowSelected,0,
- TAG_DONE);
-
- gt_endlist();
-
- while(running) {
- while(!(im=GT_GetIMsg(w->UserPort))) WaitPort(w->UserPort);
- class=im->Class;
- code=im->Code;
- g=im->IAddress;
- GT_ReplyIMsg(im);
- switch(class) {
- case CLOSEWINDOW: running=0; break;
- case GADGETUP: switch(g->GadgetID) {
- case 1:
- case 2:
- strcpy(xsbname,tempxsbname);
- blankmouse=tempblankmouse;
- mousetimeout=tempmousetimeout;
- randomblanker=temprandomblanker;
- screentimeout=tempscreentimeout;
- strcpy(hotkey,gt_findstring(4));
- strcpy(popkey,gt_findstring(5));
- if(g->GadgetID==1) saveprefs("ENVARC:XSB/XSB.prefs");
- saveprefs("ENV:XSB/XSB.prefs");
-
- case 3: running=0; break;
- case 4: ActivateGadget(gt_findid(5),w,0); break;
- /* case 5: break;*/
- case 6: tempblankmouse=gt_findstate(6); break;
- case 7: tempmousetimeout=code; break;
- case 8: temprandomblanker=gt_findstate(8); break;
- case 9: tempscreentimeout=code; break;
- case 10: Delay(10); LockWindow(w); brokeron(); doblank(tempxsbname); brokeroff(); UnlockWindow(w); break;
- case 11: doblankerinfo(tempxsbname); break;
- case 12: LockWindow(w); doprefs(tempxsbname); UnlockWindow(w); break;
- case 13: sprintf(tempxsbname,"xsb%s.library",findnode(code)->ln_Name); break;
- }
- }
- }
-
- gt_remlist(glist);
- CloseWindow(w);
- freelabels();
- }
-