/* FLY-DEAL Version 3.0 fr TOS 12.07.1992 written '92 by Axel Schlter Alle Routinen fr die POPUP - Radiobutton's */ #include "fly_prot.h" int FLY_bitblt(int x,int y,int x2,int y2,int b,int h,long *addr,long *addr2,int mode); long FLY_countsize(int b,int h); int TestObjc(OBJECT *tree,int obj); int TestCoord(int mx,int my,int bx,int by,int bw,int bh); int FLY_hndle_popup(OBJECT *dealog,int startObj,int mode,int px,int py,int pobj); void FLY_radio_set(POPUP array[],int anzahl); extern int MAXY; int fly_do_every_radio(int exit) { int egal,x,y,b,h,Eo; OBJECT *dealog; if((SaveAll[YAD][exit].ub_code!=0)&&(((SaveAll[YAD][exit].old_type&0xFF00)>>8)==18)) /* Tastatur-Select */ { Sdial[YAD][exit].ob_state=NORMAL; exit=(int)SaveAll[YAD][exit].ub_code; } if(SaveAll[YAD][exit].old_type==0x161a) /* Hauptbox angeclickt */ { int OObj=0,ParentX,ParentY,POPexit; dealog=(OBJECT*)SaveAll[YAD][exit].ub_code; form_center(dealog,&x,&y,&b,&h); while(dealog[OObj].ob_next!=0) { OObj++; if(dealog[OObj].ob_flags&SELECTABLE) { if(strcmp(SaveAll[YAD][exit].string,dealog[OObj].ob_spec.free_string)==0) Eo=OObj; else dealog[OObj].ob_state&=~(SELECTED|CHECKED); } } dealog[OObj=Eo].ob_state=CHECKED|SELECTED; objc_offset(Sdial[YAD],exit,&ParentX,&ParentY); dealog[0].ob_x=ParentX; dealog[0].ob_y=ParentY-dealog[OObj].ob_y; if(dealog[0].ob_y+dealog[0].ob_height>MAXY) dealog[0].ob_y-=(dealog[0].ob_y+dealog[0].ob_height)-MAXY; if(dealog[0].ob_y<20) dealog[0].ob_y=20; x=dealog[0].ob_x; y=dealog[0].ob_y; POPexit=FLY_hndle_popup(dealog,0,XYPOS,x,y,0); dealog[Eo].ob_state=NORMAL; if((dealog[POPexit].ob_state&DISABLED)||(POPexit==ERROR)|| (!(dealog[POPexit].ob_flags&SELECTABLE))) POPexit=Eo; dealog[POPexit].ob_state&=~SELECTED; dealog[POPexit].ob_state|=CHECKED; strcpy(SaveAll[YAD][exit].string,dealog[POPexit].ob_spec.free_string); Sdial[YAD][exit].ob_width-=1; objc_draw(Sdial[YAD],exit,MAX_DEPTH,Sdial[YAD][0].ob_x,Sdial[YAD][0].ob_y, Sdial[YAD][0].ob_width,Sdial[YAD][0].ob_height); Sdial[YAD][exit].ob_width+=1; if(!(Sdial[YAD][exit].ob_flags&EXIT)) exit=MOVENUM; evnt_multi(MU_TIMER|MU_BUTTON,1,1,1,0,0,0,0,0,0,0,0,0,0,&egal, 200,0,&egal,&egal,&egal,&egal,&egal,&egal); if((dealog[POPexit].ob_flags&EXIT)|| (dealog[POPexit].ob_flags&TOUCHEXIT)) return(-1); return(-2); } if(SaveAll[YAD][exit].old_type==0x161b) /* Circlebox angeclickt */ { int OObj=0,ShowObj; if(Sdial[YAD][exit].ob_next==exit-2) ShowObj=exit-1; else ShowObj=exit+1; dealog=(OBJECT*)SaveAll[YAD][ShowObj].ub_code; while(dealog[OObj].ob_next!=0) { OObj++; if(dealog[OObj].ob_flags&SELECTABLE) { dealog[OObj].ob_state&=~SELECTED; if(strcmp(SaveAll[YAD][ShowObj].string,dealog[OObj].ob_spec.free_string)==0) Eo=OObj; } } OObj=Eo; do{ if(dealog[OObj].ob_next==0) OObj=0; OObj++; }while(dealog[OObj].ob_state&DISABLED || !(dealog[OObj].ob_flags&SELECTABLE)); dealog[OObj].ob_state|=CHECKED; strcpy(SaveAll[YAD][ShowObj].string,dealog[OObj].ob_spec.free_string); Sdial[YAD][ShowObj].ob_width-=1; objc_draw(Sdial[YAD],ShowObj,MAX_DEPTH,Sdial[YAD][0].ob_x,Sdial[YAD][0].ob_y, Sdial[YAD][0].ob_width-1,Sdial[YAD][0].ob_height-1); Sdial[YAD][ShowObj].ob_width+=1; evnt_timer(100,0); /* Warten, da sonst viel zu schnell ! */ if((dealog[OObj].ob_flags&EXIT)|| (dealog[OObj].ob_flags&TOUCHEXIT)) return(-1); return(-2); } return(-3); /* Der Compiler meckert hier !! */ } void FLY_radio_set(POPUP array[],int anzahl) { int i; for(i=0;i0) objc_change(dealog,oldobj,0,bx,by,bw,bh,NORMAL,1); oldobj=object=ERROR; } else startflag=0; ex_flag=0; } else { object=objc_find(dealog,ROOT,MAX_DEPTH,mx,my); if(object>startObj+1) { if ((object!=oldobj)&&(TestObjc(dealog,object)==object)) { if(oldobj>0) objc_change(dealog,oldobj,0,bx,by,bw,bh,NORMAL,1); objc_change(dealog,object,0,bx,by,bw,bh,SELECTED,1); oldobj=object; } } ox=mx; oy=my; } } if(kbhit()) { keyCode=(int)((Crawcin())>>8); switch(keyCode) { case 0x1C00: /* [RETURN] */ case 0x7200: /* [ENTER] */ ex_flag=1; break; case 0x5000: /* Runter */ if(object(bx+bw))||(my>(by+bh))) return(ERROR); return(ALLES_OK); }