home *** CD-ROM | disk | FTP | other *** search
- /*----------------------------------------------------------------------*
- text.c Version 2.3 - © Copyright 1990-91 Jaba Development
-
- Author : Jan van den Baard
- Purpose: Text requester for adding and modifying gadget texts
- *----------------------------------------------------------------------*/
-
- static UBYTE UNDOBUFFER[80];
- static SHORT MainPairs2[] =
- { 0,0,291,0
- };
- static struct Border MainBorder2 =
- { 2,12,0,0,JAM1,2,MainPairs2,NULL
- };
- static SHORT MainPairs1[] =
- { 0,0,291,0,291,106,0,106,0,0
- };
- static struct Border MainBorder1 =
- { 2,1,0,0,JAM1,5,MainPairs1,&MainBorder2
- };
-
- static struct IntuiText GT =
- { 0,0,JAM1,88,3,NULL,(UBYTE *)"Edit GadgetText",NULL
- };
- static struct IntuiText WT =
- { 0,0,JAM1,88,3,NULL,(UBYTE *)"Edit WindowText",NULL
- };
- static struct IntuiText RT =
- { 0,0,JAM1,76,3,NULL,(UBYTE *)"Edit RequesterText",NULL
- };
- static struct IntuiText MainText1 =
- { 0,0,JAM1,114,35,NULL,(UBYTE *)"DrawModes",>
- };
-
- static SHORT OCPairs[] =
- { 0,0,133,0,133,26,0,26,0,0
- };
- static struct Border OCBorder =
- { -1,-1,0,0,JAM1,5,OCPairs,NULL
- };
-
- static struct IntuiText CANCELText =
- { 0,0,JAM1,42,9,NULL,(UBYTE *)"CANCEL",NULL
- };
- static struct Gadget CANCEL =
- { NULL,152,77,132,25,NULL,RELVERIFY,BOOLGADGET,
- (APTR)&OCBorder,NULL,&CANCELText,NULL,NULL,6,NULL
- };
-
- static struct IntuiText OKText =
- { 0,0,JAM1,58,9,NULL,(UBYTE *)"OK",NULL
- };
- static struct Gadget OK =
- { &CANCEL,13,77,132,25,NULL,RELVERIFY,BOOLGADGET,
- (APTR)&OCBorder,NULL,&OKText,NULL,NULL,5,NULL
- };
-
- static SHORT DRMDPairs[] =
- { 0,0,133,0,133,12,0,12,0,0
- };
- static struct Border DRMDBorder =
- { -1,-1,0,0,JAM1,5,DRMDPairs,NULL
- };
-
- static struct IntuiText IVText =
- { 0,0,JAM1,30,2,NULL,(UBYTE *)"INVERSVID",NULL
- };
- static struct Gadget IV =
- { &OK,152,60,132,11,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
- (APTR)&DRMDBorder,NULL,&IVText,NULL,NULL,4,NULL
- };
-
- static struct IntuiText J2Text =
- { 0,0,JAM1,49,2,NULL,(UBYTE *)"JAM2",NULL
- };
- static struct Gadget J2 =
- { &IV,13,60,132,11,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
- (APTR)&DRMDBorder,NULL,&J2Text,1,NULL,3,NULL
- };
-
- static struct IntuiText CMText =
- { 0,0,JAM1,27,2,NULL,(UBYTE *)"COMPLEMENT",NULL
- };
- static struct Gadget CM =
- { &J2,152,45,132,11,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
- (APTR)&DRMDBorder,NULL,&CMText,NULL,NULL,2,NULL
- };
-
- static struct IntuiText J1Text =
- { 0,0,JAM1,50,2,NULL,(UBYTE *)"JAM1",NULL
- };
- static struct Gadget J1 =
- { &CM,13,45,132,11,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
- (APTR)&DRMDBorder,NULL,&J1Text,4,NULL,1,NULL
- };
-
- static UBYTE ITBuff[80];
- static struct StringInfo ITInfo =
- { ITBuff,UNDOBUFFER,0,80,0,0,0,0,0,0,0,0,NULL
- };
- static SHORT ITPairs[] =
- { 0,0,273,0,273,9,0,9,0,0
- };
- static struct Border ITBorder =
- { -1,-1,2,0,JAM1,5,ITPairs,NULL
- };
- static struct IntuiText ITText =
- { 0,0,JAM1,0,-10,NULL,(UBYTE *)"Enter or edit text :",NULL
- };
- static struct Gadget IT =
- { &J1,13,24,272,8,NULL,STRINGCENTER,STRGADGET,
- (APTR)&ITBorder,NULL,&ITText,NULL,(APTR)&ITInfo,0,NULL
- };
-
- struct NewWindow text_req =
- { 12,15,296,109,0,1,GADGETUP+GADGETDOWN,
- NOCAREREFRESH+SMART_REFRESH+ACTIVATE+RMBTRAP,
- NULL,NULL,NULL,NULL,NULL,0,0,0,0,CUSTOMSCREEN
- };
-
- static struct RastPort *rp;
-
- extern struct Window *MainWindow;
- extern struct Screen *MainScreen;
- extern struct Gadget *Gadget;
- extern struct MemoryChain Memory;
- extern USHORT FrontPen, BackPen;
-
- /*
- * put up the text editor
- */
- struct IntuiText *edit_text(gadget,mode,num,which)
- struct Gadget *gadget;
- LONG mode;
- SHORT num;
- USHORT which;
- {
- struct Window *w;
- struct IntuiText *t,*t1, *GetPtr();
- BOOL running = TRUE, Add;
- USHORT gp,i;
-
- if(mode)
- { t = GetPtr(gadget,num);
- strcpy((char *)ITBuff,(char *)t->IText);
- }
- else ITBuff[0] = 0;
- text_req.Screen = MainScreen;
- if(NOT(w = OpenWindow(&text_req))) return;
- disable_window();
- rp = w->RPort;
- if(NOT which) MainText1.NextText = >
- if(which == 1) MainText1.NextText = &WT;
- else if(which == 2) MainText1.NextText = &RT;
- draw(w,&IT,&MainBorder1,&MainText1);
- DeSelectGList(w,&J1,NULL,4);
- if(mode)
- { if(TestBits((ULONG)t->DrawMode,JAM2)) SelectGadget(w,&J2,NULL);
- else SelectGadget(w,&J1,NULL);
- if(TestBits((ULONG)t->DrawMode,COMPLEMENT))
- SelectGadget(w,&CM,NULL);
- if(TestBits((ULONG)t->DrawMode,INVERSVID))
- SelectGadget(w,&IV,NULL);
- }
- else if(NOT mode) SelectGadget(w,&J1,NULL);
- do
- { for(i=0;i<3;i++) ActivateGadget(&IT,w,NULL);
- Wait(1 << w->UserPort->mp_SigBit);
- while(read_msg(w))
- { gp = Gadget->GadgetID;
- if(gp == 5)
- { running = FALSE;
- Add = TRUE;
- }
- if(gp == 6)
- { running = FALSE;
- Add = FALSE;
- }
- if(gp == 1 OR gp == 3)
- { MutualExclude(w,Gadget,&J1,NULL);
- SelectGadget(w,Gadget,NULL);
- }
- }
- } while(running == TRUE);
- CloseWindow(w);
- if((Add == TRUE) AND (ITBuff[0] != 0) AND (NOT mode))
- { if(NOT(t = (struct IntuiText *)
- Alloc(&Memory,(ULONG)sizeof(struct IntuiText))))
- { Error("Out of memory !");
- enable_window();
- return(NULL);
- }
- if(NOT(t->IText = (UBYTE *)Alloc(&Memory,80L)))
- { FreeItem(&Memory,t,(long)sizeof(struct IntuiText));
- Error("Out of memory !");
- enable_window();
- return(NULL);
- }
- if((t1 = gadget->GadgetText))
- { while(1)
- { if(NOT t1->NextText) break;
- t1 = t1->NextText;
- }
- t1->NextText = t;
- }
- else gadget->GadgetText = t;
- }
- if(Add == TRUE)
- { strcpy((char *)t->IText,(char *)ITBuff);
- t->DrawMode = NULL;
- if(SelectTest(&J1)) t->DrawMode = JAM1;
- if(SelectTest(&J2)) t->DrawMode = JAM2;
- if(SelectTest(&IV)) t->DrawMode |= INVERSVID;
- if(SelectTest(&CM)) t->DrawMode |= COMPLEMENT;
- t->FrontPen = FrontPen;
- t->BackPen = BackPen;
- enable_window();
- if(mode) return(NULL);
- return(t);
- }
- enable_window();
- return(NULL);
- }
-