home *** CD-ROM | disk | FTP | other *** search
- /*
-
- Directory Opus 4
- Original GPL release version 4.12
- Copyright 1993-2000 Jonathan Potter
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- All users of Directory Opus 4 (including versions distributed
- under the GPL) are entitled to upgrade to the latest version of
- Directory Opus version 5 at a reduced price. Please see
- http://www.gpsoft.com.au for more information.
-
- The release of Directory Opus 4 under the GPL in NO WAY affects
- the existing commercial status of Directory Opus 5.
-
- */
-
- #include "config.h"
-
- char old_general_font[30];
-
- doscreenconfig()
- {
- ULONG class;
- USHORT code,gadgetid,qual;
- struct ConfigUndo *undo;
- struct Gadget *gad;
- int mode=-1,realpen=1,x,y,cursel=-1,a,b,fontnum=0,arrowact=0,c;
- char *fg=NULL,*bg=NULL,buf[256],*ptr;
- struct DOpusListView *view;
- struct Screen scrbuf;
-
- showconfigscreen(CFG_SCREEN);
- undo=makeundo(UNDO_MAIN);
- curmode=NULL;
- if (version2) fontsizelistview.h=52;
-
- FOREVER {
- Wait(1<<Window->UserPort->mp_SigBit);
- while (IMsg=getintuimsg()) {
- if (!(mode==SCREEN_SCREENMODE &&
- (view=ListViewIDCMP(&screenmodeview,IMsg))!=(struct DOpusListView *)-1) &&
- !(mode==SCREEN_FONTS &&
- (view=ListViewIDCMP(&fontplacelist,IMsg))!=(struct DOpusListView *)-1) &&
- !(mode==SCREEN_PALETTE &&
- (view=ListViewIDCMP(&palettelist,IMsg))!=(struct DOpusListView *)-1)) {
- class=IMsg->Class; code=IMsg->Code; qual=IMsg->Qualifier;
- x=IMsg->MouseX; y=IMsg->MouseY;
- if (class==GADGETUP || class==GADGETDOWN) {
- gad=(struct Gadget *)IMsg->IAddress;
- gadgetid=gad->GadgetID;
- }
- ReplyMsg((struct Message *)IMsg);
- switch (class) {
- case IDCMP_MENUPICK:
- if (code==MENUNULL) break;
- if (mode>-1) {
- select_gadget(&maingad[mode],0);
- removescreenedit(mode);
- mode=realpen=cursel=-1;
- }
- switch ((a=ITEMNUM(code))) {
- case 0:
- case 1:
- if (doload(CFG_SCREEN,a)) {
- if (config->scrdepth!=screen_depth)
- close_screen();
- open_screen();
- showconfigscreen(CFG_SCREEN);
- }
- break;
- }
- break;
-
- case IDCMP_MOUSEBUTTONS:
- if (code==SELECTDOWN) {
- if (mode==SCREEN_PALETTE) {
- if (x>x_off+297 && y>y_off+33 && x<x_off+514 && y<y_off+46) {
- for (a=0;a<(1<<screen_depth);a++) {
- if (x>=palettegad_xy[a][0] && x<=palettegad_xy[a][2] &&
- y>=palettegad_xy[a][1] && y<=palettegad_xy[a][3]) {
- realpen=screen_pens[a].pen;
- showcolourvals(realpen,1);
- showpalettegad(a);
- break;
- }
- }
- }
- }
- else if (mode==SCREEN_ARROWS) {
- for (a=0;a<3;a++) {
- if (x>x_off+182+(a*129) && x<x_off+307+(a*129) &&
- y>y_off+32 && y<y_off+89) {
- if (arrowact!=a) {
- showarrowborders(a,arrowact);
- arrowact=a;
- DoCycleGadget(&arrowgadgets[7],Window,arrowtypetxt,arrowact);
- fixarrowgads(arrowact);
- break;
- }
- }
- }
- }
- else if (mode==SCREEN_COLOURS && fg && bg) {
- a=*fg; b=*bg;
- if (docolourgad(rp,x_off+208,y_off+33,x,y,
- (cursel==COLBIT_3DBOXES)?NULL:cfg_string[STR_EXAMPLE],&a,&b,CFG_GADGET)) {
- *fg=a; *bg=b;
- if (cursel==COLBIT_3DBOXES) {
- showfuncob(rp,cfg_string[STR_EXAMPLE],1,0,CFG_GADGET,x_off+302,y_off+23);
- showscreencolours(COLOURS_ALL,NULL,NULL,4);
- }
- else showscreencolours((1<<cursel),NULL,NULL,0);
- }
- else {
- for (a=0;;a++) {
- if (coloursel[a].item==-1) break;
- if (x>=x_off+coloursel[a].x1 && x<=x_off+coloursel[a].x2 &&
- y>=y_off+coloursel[a].y1 && y<=y_off+coloursel[a].y2) {
- if (version2 || (a!=COLBIT_STRINGS && a!=COLBIT_SELSTRINGS)) {
- cursel=coloursel[a].item;
- showscreencolours((1<<cursel),&fg,&bg,0);
- showcolourscycle(*fg,*bg,cursel);
- setupcolourbox(rp,x_off+208,y_off+33,*fg,*bg);
- }
- break;
- }
- }
- }
- }
- }
- break;
-
- case IDCMP_RAWKEY:
- if ((code>=0x60 && code<=0x67) || code&0x80) break;
- buf[0]=0;
- RawkeyToStr(code,qual,NULL,buf,10);
- switch (LToUpper(buf[0])) {
- case 'R':
- if (mode==SCREEN_PALETTE) ActivateStrGad(&palettegads[3],Window);
- break;
- case 'G':
- if (mode==SCREEN_PALETTE) ActivateStrGad(&palettegads[4],Window);
- break;
- case 'B':
- if (mode==SCREEN_PALETTE) ActivateStrGad(&palettegads[5],Window);
- break;
- case 'W':
- if (mode==SCREEN_SCREENMODE) ActivateStrGad(&screenmodegads[0],Window);
- break;
- case 'H':
- if (mode==SCREEN_SCREENMODE) ActivateStrGad(&screenmodegads[1],Window);
- break;
- case 'C':
- if (mode==SCREEN_SCREENMODE) ActivateStrGad(&screenmodegads[2],Window);
- break;
- }
- break;
-
- case IDCMP_GADGETDOWN:
- if (gadgetid>=PALETTE_SLIDER && gadgetid<PALETTE_SLIDER+3) {
- updatecolourvals(realpen,0);
- FOREVER {
- Wait(1<<Window->UserPort->mp_SigBit);
- while (IMsg=getintuimsg()) {
- class=IMsg->Class;
- ReplyMsg((struct Message *)IMsg);
- if (class==GADGETUP) break;
- if (class==MOUSEMOVE) updatecolourvals(realpen,0);
- }
- if (class==GADGETUP) {
- updatecolourvals(realpen,1);
- break;
- }
- }
- }
- else if (gadgetid>=ARROWBASE+3 && gadgetid<ARROWBASE+7) {
- gadgetid-=ARROWBASE+3; a=0;
- FOREVER {
- if (IntuitionBase->ActiveWindow!=Window ||
- !(gad->Flags&SELECTED)) break;
- if ((arrowact==0 && gadgetid>1) ||
- (arrowact>0 && gadgetid<2)) {
- b=config->arrowsize[arrowact];
- if ((arrowact==0 && gadgetid==2) ||
- (arrowact>0 && gadgetid==0))
- ++config->arrowsize[arrowact];
- else --config->arrowsize[arrowact];
- switch (arrowact) {
- case 0:
- showupdownslider();
- break;
- case 1:
- showleftrightslider();
- break;
- case 2:
- showstringgadget();
- break;
- }
- if (b==config->arrowsize[arrowact]) a=-1;
- }
- else {
- switch (arrowact) {
- case 0:
- b=config->sliderwidth;
- if (gadgetid==1) config->sliderwidth-=2;
- else config->sliderwidth+=2;
- showupdownslider();
- if (b==config->sliderwidth) {
- a=-1;
- break;
- }
- break;
- case 1:
- b=config->sliderheight;
- if (gadgetid==3) config->sliderheight-=2;
- else config->sliderheight+=2;
- showleftrightslider();
- if (b==config->sliderheight) {
- a=-1;
- break;
- }
- break;
- case 2:
- b=config->stringheight;
- if (gadgetid==3) config->stringheight-=2;
- else config->stringheight+=2;
- showstringgadget();
- if (b==config->stringheight) {
- a=-1;
- break;
- }
- break;
- }
- }
- if (a==-1) break;
- else if (a==0) {
- Delay(5);
- a=1;
- }
- else Delay(1);
- while (IMsg=getintuimsg()) {
- class=IMsg->Class;
- ReplyMsg((struct Message *)IMsg);
- if (class==GADGETUP) break;
- }
- if (class==GADGETUP) break;
- }
- }
- else if (gadgetid>=ARROWBASE && gadgetid<ARROWBASE+3) {
- gadgetid-=ARROWBASE;
- if (config->arrowpos[arrowact]!=gadgetid) {
- config->arrowpos[arrowact]=gadgetid;
- if (arrowact==0) showupdownslider();
- else if (arrowact==1) showleftrightslider();
- else showstringgadget();
- }
- fixarrowgads(arrowact);
- }
- break;
-
- case IDCMP_GADGETUP:
- if (mode==SCREEN_GENERAL && gadgetid>GAD_BASE) {
- config->generalscreenflags=processtickgad(scr_generalgadgets,config->generalscreenflags,gadgetid-GAD_BASE,-1);
- break;
- }
- if (gadgetid<SCREEN_OKAY) {
- if (mode==gadgetid) {
- removescreenedit(mode);
- mode=realpen=cursel=-1;
- makehelpname((char *)-1);
- doscreentitle(cfg_string[STR_SCREEN_SCREEN]);
- break;
- }
- if (mode>-1) {
- if (mode==SCREEN_SCREENMODE || mode==SCREEN_FONTS)
- select_gadget(&maingad[gadgetid],0);
- select_gadget(&maingad[mode],0);
- removescreenedit(mode);
- if (mode==SCREEN_SCREENMODE || mode==SCREEN_FONTS)
- select_gadget(&maingad[gadgetid],1);
- mode=realpen=cursel=-1;
- makehelpname((char *)-1);
- }
- makehelpname(screengadgets[gadgetid]);
- doscreentitle(currenthelpname);
- }
- if (gadgetid>=PALETTE_STRING && gadgetid<PALETTE_STRING+3) {
- updatecolourvals(realpen,-1);
- if (code!=0x9) getnextgadget(gad);
- }
- else switch (gadgetid) {
- case FONT_SIZE:
- if (!version2) break;
- RefreshStrGad(&fontsizegadget,Window);
- a=atoi(fontsize_buf);
- c=config->fontsizes[fontnum];
- config->fontsizes[fontnum]=a;
- for (b=0;b<fontsizelistview.count;b++)
- if (atoi(fontsizelistview.items[b])==a) break;
- if (b<fontsizelistview.count) {
- fontsizelistview.itemselected=b;
- if (b<fontsizelistview.topitem ||
- b>fontsizelistview.topitem+fontsizelistview.lines-1)
- fontsizelistview.topitem=b;
- RefreshListView(&fontsizelistview,1);
- fontsize_buf[0]=0;
- RefreshStrGad(&fontsizegadget,Window);
- }
- else {
- fontsizelistview.itemselected=-1;
- RefreshListView(&fontsizelistview,1);
- }
- if (c!=a) dofontdemo(config->fontbufs[fontnum],config->fontsizes[fontnum]);
- break;
-
- case ARROWCYCLE:
- a=arrowact;
- if (qual&IEQUALIFIER_LSHIFT || qual&IEQUALIFIER_RSHIFT) {
- if ((--arrowact)<0) arrowact=2;
- }
- else if ((++arrowact)==3) arrowact=0;
- showarrowborders(arrowact,a);
- DoCycleGadget(&arrowgadgets[7],Window,arrowtypetxt,arrowact);
- fixarrowgads(arrowact);
- break;
-
- case SCREEN_SLIDER_LEFTCYCLE:
- config->slider_pos^=1;
- show_slider_setup(182,32,0);
- break;
-
- case SCREEN_SLIDER_RIGHTCYCLE:
- config->slider_pos^=2;
- show_slider_setup(373,32,1);
- break;
-
- case SCREEN_PALETTE:
- realpen=screen_pens[1].pen;
- case SCREEN_FONTS:
- fontnum=FONT_CLOCK;
- case SCREEN_ARROWS:
- arrowact=0;
- case SCREEN_COLOURS:
- case SCREEN_GENERAL:
- case SCREEN_SCREENMODE:
- case SCREEN_SLIDERS:
- mode=gadgetid;
- makescreenedit(mode);
- if (gadgetid==SCREEN_COLOURS) {
- cursel=0;
- fg=&config->statusfg; bg=&config->statusbg;
- }
- break;
-
- case COLOURS_SELECT:
- if (qual&IEQUALIFIER_LSHIFT || qual&IEQUALIFIER_RSHIFT) {
- if ((--cursel)<0) cursel=(version2)?COLBIT_SELSTRINGS:COLBIT_3DBOXES;
- }
- else {
- if (!coloursgadgets[++cursel] ||
- (!version2 && cursel==COLBIT_STRINGS)) cursel=0;
- }
- showscreencolours((1<<cursel),&fg,&bg,0);
- showcolourscycle(*fg,*bg,cursel);
- setupcolourbox(rp,x_off+208,y_off+33,*fg,*bg);
- break;
-
- case SCREENMODE_WIDTH:
- a=atoi(screenwidth_buf);
- if (a%2) lsprintf(screenwidth_buf,"%ld",a+1);
- CheckNumGad(&screenmodegads[SCREENMODE_WIDTH-300],Window,curmode->minw,curmode->maxw);
- config->scrw=atoi(screenwidth_buf);
- config->scr_winw=config->scrw;
- if (code!=0x9) getnextgadget(gad);
- break;
-
- case SCREENMODE_HEIGHT:
- CheckNumGad(&screenmodegads[SCREENMODE_HEIGHT-300],Window,curmode->minh,curmode->maxh);
- config->scrh=atoi(screenheight_buf);
- config->scr_winh=config->scrh;
- if (code!=0x9) getnextgadget(gad);
- break;
-
- case SCREENMODE_DEPTH:
- a=atoi(screendepth_buf);
- for (b=curmode->maxdepth;b>=2;b--) {
- if (a>=(1<<b)) {
- a=b;
- break;
- }
- }
- if (b<=2) a=2;
-
- case SCREENMODE_SLIDER:
- if (gadgetid==SCREENMODE_SLIDER)
- a=GetSliderPos(&screenmodegads[SCREENMODE_SLIDER-300],curmode->maxdepth-1,1)+2;
- if (a>curmode->maxdepth) a=curmode->maxdepth;
- else if (a<2) a=2;
- lsprintf(screendepth_buf,"%ld",(1<<a));
- RefreshStrGad(&screenmodegads[SCREENMODE_DEPTH-300],Window);
- config->scrdepth=a;
- FixSliderPot(Window,&screenmodegads[SCREENMODE_SLIDER-300],config->scrdepth-2,curmode->maxdepth-1,1,2);
- if (gadgetid==SCREENMODE_DEPTH && code!=0x9) getnextgadget(gad);
- break;
-
- case SCREENMODE_DEFWIDTH:
- if (screenmodegads[SCREENMODE_DEFWIDTH-300].Flags&SELECTED) {
- config->screenflags|=SCRFLAGS_DEFWIDTH;
- EnableGadget(&screenmodegads[SCREENMODE_WIDTH-300],rp,0,0);
- config->scrw=curmode->defw;
- config->scr_winw=config->scrw;
- fixmodegads(curmode);
- }
- else config->screenflags&=~SCRFLAGS_DEFWIDTH;
- fixdefaultgads(curmode);
- fixmodegads(curmode);
- break;
-
- case SCREENMODE_DEFHEIGHT:
- if (screenmodegads[SCREENMODE_DEFHEIGHT-300].Flags&SELECTED) {
- config->screenflags|=SCRFLAGS_DEFHEIGHT;
- EnableGadget(&screenmodegads[SCREENMODE_HEIGHT-300],rp,0,0);
- config->scrh=curmode->defh;
- config->scr_winh=config->scrh;
- fixmodegads(curmode);
- }
- else config->screenflags&=~SCRFLAGS_DEFHEIGHT;
- fixdefaultgads(curmode);
- fixmodegads(curmode);
- break;
-
- case SCREENMODE_HALFHEIGHT:
- if (screenmodegads[SCREENMODE_HALFHEIGHT-300].Flags&SELECTED)
- config->screenflags|=SCRFLAGS_HALFHEIGHT;
- else config->screenflags&=~SCRFLAGS_HALFHEIGHT;
- break;
-
- case SCREEN_CANCEL:
- doundo(undo,UNDO_MAIN);
- if (config->scrdepth!=screen_depth) {
- if (mode>-1) {
- removescreenedit(mode);
- mode=-1;
- }
- close_screen();
- }
- open_screen();
- case SCREEN_OKAY:
- if (mode>-1) removescreenedit(mode);
- doundo(undo,0);
- return((gadgetid==SCREEN_OKAY));
- }
- break;
- }
- }
- else if (view) {
- if (mode==SCREEN_FONTS) {
- if (view->listid==1) {
- if (version2) {
- fontsize_buf[0]=0;
- RefreshStrGad(&fontsizegadget,Window);
- }
- fontnum=fontplacevals[view->itemselected];
- initfontlist(fontnum,1,fontplaceflags[fontnum]);
- }
- else if (fontnum>=0 && fontnum<NUMFONTS) {
- if (view->listid==2) {
- strcpy(buf,config->fontbufs[fontnum]);
- if ((ptr=strstri(buf,".font"))) *ptr=0;
- if (strcmp(buf,view->items[view->itemselected])) {
- if (version2) {
- fontsize_buf[0]=0;
- RefreshStrGad(&fontsizegadget,Window);
- }
- strcpy(config->fontbufs[fontnum],view->items[view->itemselected]);
- config->fontsizes[fontnum]=initfontlist(fontnum,0,fontplaceflags[fontnum]);
- StrConcat(config->fontbufs[fontnum],".font",40);
- }
- }
- else if (view->listid==3) {
- if (version2) {
- fontsize_buf[0]=0;
- RefreshStrGad(&fontsizegadget,Window);
- }
- a=config->fontsizes[fontnum];
- config->fontsizes[fontnum]=atoi(view->items[view->itemselected]);
- if (a!=config->fontsizes[fontnum])
- dofontdemo(config->fontbufs[fontnum],config->fontsizes[fontnum]);
- }
- }
- }
- else if (view->listid==1) {
- curmode=showdisplaydesc();
- fixdefaultgads(curmode);
- if (screenmodegads[SCREENMODE_DEFWIDTH-300].Flags&SELECTED) {
- config->scrw=curmode->defw;
- config->scr_winw=config->scrw;
- EnableGadget(&screenmodegads[SCREENMODE_WIDTH-300],rp,0,0);
- }
- if (screenmodegads[SCREENMODE_DEFHEIGHT-300].Flags&SELECTED) {
- config->scrh=curmode->defh;
- config->scr_winh=config->scrh;
- EnableGadget(&screenmodegads[SCREENMODE_HEIGHT-300],rp,0,0);
- }
- fixmodegads(curmode);
- if (config->screenflags&SCRFLAGS_DEFWIDTH)
- DisableGadget(&screenmodegads[SCREENMODE_WIDTH-300],rp,0,0);
- if (config->screenflags&SCRFLAGS_DEFHEIGHT)
- DisableGadget(&screenmodegads[SCREENMODE_HEIGHT-300],rp,0,0);
- config->screenmode=curmode->mode;
-
- if (curmode->mode==MODE_PUBLICSCREENUSE /* ||
- curmode->mode==MODE_PUBLICSCREENCLONE */ ) {
- for (a=0;a<80;a++) {
- if (!curmode->name[a]) break;
- if (a>0 && curmode->name[a-1]==':') {
- if ((strcmp(&curmode->name[a],cfg_string[STR_SCREEN_MODE_USE]))==0)
- break;
- /*
- if ((strcmp(&curmode->name[a],cfg_string[STR_SCREEN_MODE_CLONE]))==0)
- break;
- */
- }
- }
- if (a>0 && curmode->name[a]) {
- strncpy(config->pubscreen_name,curmode->name,a);
- config->pubscreen_name[a-1]=0;
- }
- }
- else config->pubscreen_name[0]=0;
-
- if (version2<OSVER_39) {
- if (config->screenmode==MODE_WORKBENCHUSE ||
- curmode->mode==MODE_PUBLICSCREENUSE)
- DisableGadget(&maingad[SCREEN_PALETTE],rp,2,1);
- else EnableGadget(&maingad[SCREEN_PALETTE],rp,2,1);
- }
- }
- else if (view->listid==2) {
- if (view->itemselected>=0 && view->itemselected<13) {
- if (view->itemselected==0)
- load_palette(Screen,palette_backup,1<<screen_depth);
- else if (view->itemselected==1)
- loadrgb4(Screen,def_dopus_palette,1<<screen_depth);
- else if (view->itemselected==3) {
- ULONG *palbuf;
- int wbdepth,size;
-
- GetWBScreen(&scrbuf);
- wbdepth=1<<scrbuf.RastPort.BitMap->Depth;
- size=(wbdepth*3)*sizeof(ULONG);
- if (palbuf=AllocMem(size,MEMF_CLEAR)) {
- ULONG palette[48];
-
- get_palette(&scrbuf,palbuf,wbdepth);
- for (a=0;a<4;a++) {
- palette[(a*3)]=palbuf[(a*3)];
- palette[(a*3)+1]=palbuf[(a*3)+1];
- palette[(a*3)+2]=palbuf[(a*3)+2];
- }
- for (a=4;a<16;a++) {
- palette[(a*3)]=config->new_palette[(a*3)];
- palette[(a*3)+1]=config->new_palette[(a*3)+1];
- palette[(a*3)+2]=config->new_palette[(a*3)+2];
- }
- if (wbdepth>4 && screen_depth>2) {
- int a,endwb,endme;
-
- endwb=wbdepth-4;
- endme=(1<<screen_depth)-4;
-
- for (a=0;a<4;a++) {
- palette[((a+endme)*3)]=palbuf[((a+endwb)*3)];
- palette[((a+endme)*3)+1]=palbuf[((a+endwb)*3)+1];
- palette[((a+endme)*3)+2]=palbuf[((a+endwb)*3)+2];
- }
- }
- load_palette(Screen,palette,1<<screen_depth);
- FreeMem(palbuf,size);
- }
- }
- else loadrgb4(Screen,defpalettes[view->itemselected-2],4);
- get_palette(Screen,config->new_palette,1<<screen_depth);
- showcolourvals(realpen,1);
- }
- }
- break;
- }
- }
- }
- }
-
- void makescreenedit(mode)
- int mode;
- {
- int a,b,wclone,shortage,size,fnum,fontnum,nopropnum,only8num,num;
- ULONG modeid;
- char *ptr,buf[256];
- DisplayInfoHandle *handle;
- struct DisplayInfo *dispinfo;
- struct AvailFonts *avail;
-
- borderkey=NULL;
-
- SetAPen(rp,screen_pens[1].pen);
- switch (mode) {
- case SCREEN_PALETTE:
- bpg=4;
- if (version2>=OSVER_39) {
- modeid=GetVPModeID(vp);
- if ((handle=FindDisplayInfo(config->screenmode)) ||
- (handle=FindDisplayInfo(modeid))) {
- GetDisplayInfoData(handle,buf,256,DTAG_DISP,0);
- dispinfo=(struct DisplayInfo *)buf;
- bpg=(dispinfo->RedBits+dispinfo->GreenBits+dispinfo->BlueBits)/3;
- }
- }
- for (a=0;a<3;a++) {
- fix_slider(&palettegads[a]);
- FixSliderBody(Window,&palettegads[a],1<<bpg,1,2);
- }
- AddGadgets(Window,
- palettegads,
- palettegadgets,
- 6,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen,1);
- do3dbox(x_off+296,y_off+33,220,14);
- do3dbox(x_off+250,y_off+33,40,14);
- setuplist(&palettelist,250,93);
- AddListView(&palettelist,1);
- showpalettegad(1);
- showcolourvals(screen_pens[1].pen,1);
- get_palette(Screen,palette_backup,1<<screen_depth);
- break;
-
- case SCREEN_COLOURS:
- if (config->stringfgcol==config->stringbgcol) ++config->stringfgcol;
- do3dbox(x_off+142,y_off+61,464,122);
- AddGadgetBorders(&borderkey,
- &coloursgad,
- 1,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen);
- AddGadgets(Window,
- &coloursgad,
- NULL,
- 1,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen,1);
- setupcolourbox(rp,x_off+208,y_off+33,config->statusfg,config->statusbg);
- showscreencolours(COLOURS_ALL,NULL,NULL,0);
- showcolourscycle(config->statusfg,config->statusbg,0);
- break;
-
- case SCREEN_SCREENMODE:
- screenkey=NULL; firstmode=NULL;
- screenmodeview.itemselected=-1; wclone=0;
- busy();
- if ((a=initscreenmodes()) &&
- (screenmodelist=LAllocRemember(&screenkey,(a+1)*4,MEMF_CLEAR))) {
- screenmode=firstmode;
- for (b=0;b<a;b++) {
- if (screenmodelist[b]=LAllocRemember(&screenkey,DISPLAYNAMELEN,MEMF_CLEAR))
- strcpy(screenmodelist[b],screenmode->name);
- if (screenmode->mode==MODE_WORKBENCHCLONE) wclone=b;
- if (screenmode->mode==config->screenmode) {
- if (screenmode->mode==MODE_PUBLICSCREENUSE) {
- lsprintf(buf,"%s:%s",config->pubscreen_name,cfg_string[STR_SCREEN_MODE_USE]);
- if (LStrCmpI(buf,screenmode->name)==0) screenmodeview.itemselected=b;
- }
- /*
- else if (screenmode->mode==MODE_PUBLICSCREENCLONE) {
- lsprintf(buf,"%s:%s",config->pubscreen_name,cfg_string[STR_SCREEN_MODE_CLONE]);
- if (LStrCmpI(buf,screenmode->name)==0) screenmodeview.itemselected=b;
- }
- */
- else screenmodeview.itemselected=b;
- }
- if (!(screenmode=screenmode->next)) break;
- }
- }
- unbusy();
- if (screenmodeview.itemselected==-1) screenmodeview.itemselected=wclone;
- setuplist(&screenmodeview,238,17);
- screenmodeview.items=screenmodelist;
- screenmodeview.topitem=screenmodeview.itemselected;
- AddListView(&screenmodeview,1);
- screenmodegads[0].Flags&=~GFLG_DISABLED;
- screenmodegads[1].Flags&=~GFLG_DISABLED;
- for (a=SCREENMODE_DEFWIDTH-300;a<SCREENMODE_SLIDER-300;a++)
- screenmodegads[a].Flags&=~(GFLG_SELECTED|GFLG_DISABLED);
- if (config->screenflags&SCRFLAGS_HALFHEIGHT)
- screenmodegads[SCREENMODE_HALFHEIGHT-300].Flags|=GFLG_SELECTED;
- else screenmodegads[SCREENMODE_HALFHEIGHT-300].Flags&=~GFLG_SELECTED;
- fix_slider(&screenmodegads[SCREENMODE_SLIDER-300]);
- AddGadgets(Window,
- screenmodegads,
- screenmodegadgets,
- 7,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen,1);
- Do3DBox(rp,
- x_off+238,y_off+140,
- 272,40,
- screen_pens[config->gadgetbotcol].pen,screen_pens[config->gadgettopcol].pen);
- SetAPen(rp,screen_pens[1].pen);
- UScoreText(rp,
- cfg_string[STR_DISPLAY_MODE_DESCRIPTION],
- x_off+238,y_off+136,
- -1);
- fixmodegads((curmode=showdisplaydesc()));
- fixdefaultgads(curmode);
- break;
-
- case SCREEN_FONTS:
- if (!fontdatabuf) {
- busy();
- size=(sizeof(struct AvailFonts)*512)+sizeof(struct AvailFontsHeader);
- do {
- if (!(fontdatabuf=LAllocRemember(&fontkey,size,MEMF_CLEAR)))
- break;
- if (shortage=AvailFonts(fontdatabuf,size,AFF_MEMORY|AFF_DISK)) {
- LFreeRemember(&fontkey);
- size+=shortage;
- }
- else break;
- } while (shortage);
- unbusy();
- if (!fontdatabuf) break;
- num=((struct AvailFontsHeader *)fontdatabuf)->afh_NumEntries;
- if (!num ||
- !(fontlist=LAllocRemember(&fontkey,(num+1)*4,MEMF_CLEAR)) ||
- !(fontsizelist=LAllocRemember(&fontkey,(num+1)*4,MEMF_CLEAR)))
- break;
- if (!(noproplist=LAllocRemember(&fontkey,(num+1)*4,MEMF_CLEAR)) ||
- !(nopropsizelist=LAllocRemember(&fontkey,(num+1)*4,MEMF_CLEAR))) {
- noproplist=fontlist;
- nopropsizelist=fontsizelist;
- }
- if (!(only8list=LAllocRemember(&fontkey,(num+1)*4,MEMF_CLEAR)))
- only8list=fontlist;
- sortfontlist((struct AvailFonts *)&fontdatabuf[sizeof(UWORD)],num,0);
- sortfontlist((struct AvailFonts *)&fontdatabuf[sizeof(UWORD)],num,1);
- avail=(struct AvailFonts *)&fontdatabuf[sizeof(UWORD)];
- for (fnum=0;fnum<num;fnum++) {
- if (ptr=strstri(avail[fnum].af_Attr.ta_Name,".font")) *ptr=0;
- avail[fnum].af_Attr.ta_Style=0;
- for (a=0;a<num;a++) {
- if (strcmp((char *)avail[a].af_Attr.ta_Name,(char *)avail[fnum].af_Attr.ta_Name))
- ++avail[fnum].af_Attr.ta_Style;
- }
- }
- for (fnum=0,fontnum=0,nopropnum=0,only8num=0;fnum<num;fnum++) {
- for (a=0;a<fontnum;a++) {
- if (strcmp(fontlist[a],(char *)avail[fnum].af_Attr.ta_Name)==0) break;
- }
- if (a==fontnum) {
- fontlist[fontnum]=(char *)avail[fnum].af_Attr.ta_Name;
- fontsizelist[fontnum]=LAllocRemember(&fontkey,(avail[fnum].af_Attr.ta_Style+1)*4,MEMF_CLEAR);
- if (!(avail[fnum].af_Attr.ta_Flags&FPF_PROPORTIONAL)) {
- noproplist[nopropnum]=fontlist[fontnum];
- nopropsizelist[nopropnum]=fontsizelist[fontnum];
- ++nopropnum;
- if (avail[fnum].af_Attr.ta_YSize==8) {
- only8list[only8num]=fontlist[fontnum];
- ++only8num;
- }
- }
- ++fontnum;
- }
- if (fontsizelist[a]) {
- for (b=0;;b++) {
- if (!fontsizelist[a][b]) break;
- if (atoi(fontsizelist[a][b])==avail[fnum].af_Attr.ta_YSize) {
- b=-1;
- break;
- }
- }
- if (b>-1 && (fontsizelist[a][b]=LAllocRemember(&fontkey,8,MEMF_CLEAR)))
- lsprintf(fontsizelist[a][b],"%4ld",avail[fnum].af_Attr.ta_YSize);
- }
- }
- }
- setuplist(&fontplacelist,146,18);
- setuplist(&fontlistview,360,18);
- setuplist(&fontsizelistview,566,18);
- fontplacelist.itemselected=fontplacelist.topitem=0;
- fontsizelistview.items=fontlistview.items=NULL;
- AddListView(&fontplacelist,3);
- SetAPen(rp,screen_pens[1].pen);
- UScoreText(rp,
- cfg_string[STR_DISPLAY_ITEM],
- x_off+146,y_off+14,
- -1);
- UScoreText(rp,
- cfg_string[STR_FONT],
- x_off+360,y_off+14,
- -1);
- UScoreText(rp,
- cfg_string[STR_FONT_SIZE],
- x_off+566,y_off+14,
- -1);
- if (version2) {
- fontsize_buf[0]=0;
- AddGadgets(Window,
- &fontsizegadget,
- NULL,
- 1,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen,1);
- }
- initfontlist(FONT_CLOCK,1,0);
- strcpy(old_general_font,config->fontbufs[0]);
- break;
-
- case SCREEN_GENERAL:
- inittickgads(scr_generalgadgets,config->generalscreenflags,0);
- break;
-
- case SCREEN_ARROWS:
- for (a=0;a<3;a++) {
- arrowgadgets[a].GadgetRender=(APTR)buttonoffimage;
- arrowgadgets[a].SelectRender=(APTR)buttononimage;
- do3dbox(x_off+184+(a*129),y_off+33,121,55);
- }
-
- AddGadgetBorders(&borderkey,
- &arrowgadgets[3],
- 2,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen);
- AddGadgetBorders(&borderkey,
- &arrowgadgets[5],
- 2,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen);
- AddGadgetBorders(&borderkey,
- &arrowgadgets[7],
- 1,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen);
-
- AddGadgets(Window,
- arrowgadgets,
- arrowgadtxt,
- 8,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen,1);
- for (a=0;a<2;a++) {
- DoArrow(rp,x_off+420+(a*34),y_off+144,10,9,screen_pens[1].pen,screen_pens[0].pen,3-a);
- DoArrow(rp,x_off+436,y_off+138+(a*12),12,9,screen_pens[1].pen,screen_pens[0].pen,a);
- }
- showupdownslider();
- showleftrightslider();
- showstringgadget();
- showarrowborders(0,-1);
- fixarrowgads(0);
- SetAPen(rp,screen_pens[1].pen);
- UScoreText(rp,
- cfg_string[STR_MODIFY_SIZE],
- x_off+294,y_off+151,
- -1);
- DoCycleGadget(&arrowgadgets[7],Window,arrowtypetxt,0);
- break;
-
- case SCREEN_SLIDERS:
- for (a=0;a<2;a++) {
- AddGadgetBorders(&borderkey,
- &screen_sliders_gadgets[a],
- 2,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen);
- }
-
- AddGadgets(Window,
- screen_sliders_gadgets,
- NULL,
- 2,
- screen_pens[config->gadgettopcol].pen,screen_pens[config->gadgetbotcol].pen,1);
-
- for (a=0;a<2;a++) show_slider_setup(182+(a*191),32,a);
- break;
- }
- }
-
- void removescreenedit(mode)
- int mode;
- {
- SetAPen(rp,screen_pens[0].pen);
- RectFill(rp,
- x_off+120,y_off+4,
- x_bot,y_bot);
- SetAPen(rp,screen_pens[1].pen);
- switch (mode) {
- case SCREEN_PALETTE:
- RemoveGList(Window,palettegads,6);
- RemoveListView(&palettelist,1);
- break;
-
- case SCREEN_COLOURS:
- RemoveGList(Window,&coloursgad,1);
- doradiobuttons();
- break;
-
- case SCREEN_SCREENMODE:
- RemoveListView(&screenmodeview,1);
- RemoveGList(Window,screenmodegads,7);
- LFreeRemember(&screenkey);
- if (config->scrdepth!=screen_depth) {
- close_screen();
- open_screen();
- showconfigscreen(CFG_SCREEN);
- }
- break;
-
- case SCREEN_FONTS:
- RemoveListView(&fontplacelist,3);
- if (version2) RemoveGList(Window,&fontsizegadget,1);
- if (LStrCmpI(config->fontbufs[0],old_general_font)!=0) {
- close_screen();
- open_screen();
- showconfigscreen(CFG_SCREEN);
- }
- break;
-
- case SCREEN_ARROWS:
- RemoveGList(Window,arrowgadgets,8);
- break;
-
- case SCREEN_GENERAL:
- removetickgads();
- break;
-
- case SCREEN_SLIDERS:
- RemoveGList(Window,screen_sliders_gadgets,2);
- break;
- }
- LFreeRemember(&borderkey);
- }
-