static void BdfP_Resize(struct bdf_dlg *bd) { extern int _GScrollBar_Width; int sbwidth = GDrawPointsToPixels(bd->gw,_GScrollBar_Width); GRect size, pos; static int cids[] = { CID_Delete, CID_DefAll, CID_DefCur, CID_Up, CID_Down, CID_OK, CID_Cancel, 0 }; int i; GDrawGetSize(bd->gw,&size); GDrawGetSize(bd->v,&pos); if ( size.width!=bd->width || size.height!=bd->height ) { int yoff = size.height-bd->height; int xoff = size.width-bd->width; bd->width = size.width; bd->height = size.height; bd->vwidth += xoff; bd->vheight += yoff; GDrawResize(bd->v,bd->vwidth,bd->vheight); GGadgetMove(bd->vsb,size.width-sbwidth,pos.y-1); GGadgetResize(bd->vsb,sbwidth,bd->vheight+2); GGadgetGetSize(bd->tf,&pos); GGadgetResize(bd->tf,pos.width+xoff,pos.height); for ( i=0; cids[i]!=0; ++i ) { GGadgetGetSize(GWidgetGetControl(bd->gw,cids[i]),&pos); GGadgetMove(GWidgetGetControl(bd->gw,cids[i]),pos.x,pos.y+yoff); } } BdfP_RefigureScrollbar(bd); GDrawRequestExpose(bd->v,NULL,false); GDrawRequestExpose(bd->gw,NULL,true); }
static void SVResize(SearchView *sv, GEvent *event) { int width, height; if ( !event->u.resize.sized ) return; GGadgetMove(GWidgetGetControl(sv->gw,CID_TopBox),4,4); GGadgetResize(GWidgetGetControl(sv->gw,CID_TopBox), event->u.resize.size.width-8, event->u.resize.size.height-12); width = (event->u.resize.size.width-40)/2; height = (event->u.resize.size.height-sv->cv_y-sv->button_height-8); if ( width<70 || height<80 ) { if ( width<70 ) width = 70; width = 2*width+40; if ( height<80 ) height = 80; height += sv->cv_y+sv->button_height+8; GDrawResize(sv->gw,width,height); return; } if ( width!=sv->cv_width || height!=sv->cv_height ) { GDrawResize(sv->cv_srch.gw,width,height); GDrawResize(sv->cv_rpl.gw,width,height); sv->cv_width = width; sv->cv_height = height; sv->rpl_x = 30+width; GDrawMove(sv->cv_rpl.gw,sv->rpl_x,sv->cv_y); } #if 0 GGadgetGetSize(GWidgetGetControl(sv->gw,CID_Allow),&size); yoff = event->u.resize.size.height-sv->button_height-size.y; if ( yoff!=0 ) { for ( i=CID_Allow; i<=CID_Cancel; ++i ) { GGadgetGetSize(GWidgetGetControl(sv->gw,i),&size); GGadgetMove(GWidgetGetControl(sv->gw,i),size.x,size.y+yoff); } } xoff = (event->u.resize.size.width - sv->button_width)/2; GGadgetGetSize(GWidgetGetControl(sv->gw,CID_Find),&size); xoff -= size.x; if ( xoff!=0 ) { for ( i=CID_Find; i<=CID_Cancel; ++i ) { GGadgetGetSize(GWidgetGetControl(sv->gw,i),&size); GGadgetMove(GWidgetGetControl(sv->gw,i),size.x+xoff,size.y); } } #endif GDrawSync(NULL); GDrawProcessPendingEvents(NULL); GDrawRequestExpose(sv->gw,NULL,false); }
static int sd_e_h(GWindow gw, GEvent *event) { struct sd_data *sd = GDrawGetUserData(gw); if ( sd==NULL ) return( true ); if ( event->type==et_close ) { SD_DoCancel( sd ); } else if ( event->type==et_char ) { if ( event->u.chr.keysym == GK_F1 || event->u.chr.keysym == GK_Help ) { help("scripting.html"); return( true ); } return( false ); } else if ( event->type == et_map ) { /* Above palettes */ GDrawRaise(gw); } else if ( event->type == et_resize ) { #if 0 GRect newsize, gpos; int space; GDrawGetSize(gw,&newsize); GGadgetGetSize(GWidgetGetControl(gw,CID_Script),&gpos); space = sd->oldh - gpos.height; GGadgetResize(GWidgetGetControl(gw,CID_Box),newsize.width-4,newsize.height-4); GGadgetResize(GWidgetGetControl(gw,CID_Script),newsize.width-2*gpos.x,newsize.height-space); #if !defined(_NO_FFSCRIPT) && !defined(_NO_PYTHON) GGadgetGetSize(GWidgetGetControl(gw,CID_Python),&gpos); space = sd->oldh - gpos.y; GGadgetMove(GWidgetGetControl(gw,CID_Python),gpos.x,newsize.height-space); GGadgetGetSize(GWidgetGetControl(gw,CID_FF),&gpos); GGadgetMove(GWidgetGetControl(gw,CID_FF),gpos.x,newsize.height-space); #endif GGadgetGetSize(GWidgetGetControl(gw,CID_Call),&gpos); space = sd->oldh - gpos.y; GGadgetMove(GWidgetGetControl(gw,CID_Call),gpos.x,newsize.height-space); GGadgetGetSize(GWidgetGetControl(gw,CID_OK),&gpos); space = sd->oldh - gpos.y; GGadgetMove(GWidgetGetControl(gw,CID_OK),gpos.x,newsize.height-space); GGadgetGetSize(GWidgetGetControl(gw,CID_Cancel),&gpos); space = sd->oldh - gpos.y; GGadgetMove(GWidgetGetControl(gw,CID_Cancel),gpos.x,newsize.height-space); sd->oldh = newsize.height; #endif GDrawRequestExpose(gw,NULL,false); } return( true ); }
static void SVResize(SearchView *sv, GEvent *event) { int width, height; if ( !event->u.resize.sized ) return; GGadgetMove(GWidgetGetControl(sv->gw,CID_TopBox),4,4); GGadgetResize(GWidgetGetControl(sv->gw,CID_TopBox), event->u.resize.size.width-8, event->u.resize.size.height-12); width = (event->u.resize.size.width-40)/2; height = (event->u.resize.size.height-sv->cv_y-sv->button_height-8); if ( width<70 || height<80 ) { if ( width<70 ) width = 70; width = 2*width+40; if ( height<80 ) height = 80; height += sv->cv_y+sv->button_height+8; GDrawResize(sv->gw,width,height); return; } if ( width!=sv->cv_width || height!=sv->cv_height ) { GDrawResize(sv->cv_srch.gw,width,height); GDrawResize(sv->cv_rpl.gw,width,height); sv->cv_width = width; sv->cv_height = height; sv->rpl_x = 30+width; GDrawMove(sv->cv_rpl.gw,sv->rpl_x,sv->cv_y); } GDrawSync(NULL); GDrawProcessPendingEvents(NULL); GDrawRequestExpose(sv->gw,NULL,false); }
static void _BdfP_Up(struct bdf_dlg *bd) { struct bdf_dlg_font *cur = bd->cur; BDFFont *bdf = cur->bdf; GRect r; BDFProperties prop; if ( cur->sel_prop<1 || cur->sel_prop>=bdf->prop_cnt ) return; prop = bdf->props[cur->sel_prop]; bdf->props[cur->sel_prop] = bdf->props[cur->sel_prop-1]; bdf->props[cur->sel_prop-1] = prop; --cur->sel_prop; GGadgetGetSize(bd->tf,&r); GGadgetMove(bd->tf,r.x,r.y-(bd->fh+1)); BdfP_EnableButtons(bd); GDrawRequestExpose(bd->v,NULL,false); }
static int warnings_e_h(GWindow gw, GEvent *event) { if (( event->type==et_mouseup || event->type==et_mousedown ) && (event->u.mouse.button>=4 && event->u.mouse.button<=7) ) { return( GGadgetDispatchEvent(errdata.vsb,event)); } switch ( event->type ) { case et_char: return( ErrChar(event)); break; case et_expose: break; case et_resize: { GRect size, sbsize; GDrawGetSize(gw,&size); GGadgetGetSize(errdata.vsb,&sbsize); GGadgetMove(errdata.vsb,size.width-sbsize.width,0); GGadgetResize(errdata.vsb,sbsize.width,size.height); GDrawResize(errdata.v,size.width-sbsize.width,size.height); errdata.linecnt = size.height/errdata.fh; GScrollBarSetBounds(errdata.vsb,0,errdata.cnt,errdata.linecnt); if ( errdata.offtop + errdata.linecnt > errdata.cnt ) { errdata.offtop = errdata.cnt-errdata.linecnt; if ( errdata.offtop < 0 ) errdata.offtop = 0; GScrollBarSetPos(errdata.vsb,errdata.offtop); } GDrawRequestExpose(errdata.v,NULL,false); } break; case et_controlevent: switch ( event->u.control.subtype ) { case et_scrollbarchange: ErrScroll(&event->u.control.u.sb); break; } break; case et_close: ErrHide(); break; case et_create: break; case et_destroy: break; } return( true ); }
static void BdfP_Mouse(struct bdf_dlg *bd, GEvent *e) { int line = e->u.mouse.y/(bd->fh+1) + bd->cur->top_prop; if ( line<0 || line>bd->cur->bdf->prop_cnt ) return; /* "New" happens when line==bd->cur->bdf->prop_cnt */ if ( e->type == et_mousedown ) { if ( !BdfP_FinishTextField(bd) ) { bd->press_pos = -1; return; } if ( e->u.mouse.x>=4 && e->u.mouse.x<= bd->value_x ) { bd->cur->sel_prop = line; BdfP_PopupMenuProps(bd,e); BdfP_EnableButtons(bd); } else if ( line>=bd->cur->bdf->prop_cnt ) return; else { bd->press_pos = line; bd->cur->sel_prop = -1; GDrawRequestExpose(bd->v,NULL,false ); } } else if ( e->type == et_mouseup ) { int pos = bd->press_pos; bd->press_pos = -1; if ( line>=bd->cur->bdf->prop_cnt || line!=pos ) return; if ( bd->active ) /* Should never happen */ return; bd->cur->sel_prop = line; if ( e->u.mouse.x > bd->value_x ) { BDFFont *bdf = bd->cur->bdf; GGadgetMove(bd->tf,bd->value_x+2,(line-bd->cur->top_prop)*(bd->fh+1)); if ( (bdf->props[line].type&~prt_property) == prt_int || (bdf->props[line].type&~prt_property) == prt_uint ) { char buffer[40]; sprintf( buffer,"%d",bdf->props[line].u.val ); GGadgetSetTitle8(bd->tf,buffer); } else GGadgetSetTitle8(bd->tf,bdf->props[line].u.str ); GGadgetSetVisible(bd->tf,true); bd->active = true; } GDrawRequestExpose(bd->v,NULL,false ); } }
static void BdfP_VScroll(struct bdf_dlg *bd,struct sbevent *sb) { int newpos = bd->cur->top_prop; int page = bd->vheight/(bd->fh+1); switch( sb->type ) { case et_sb_top: newpos = 0; break; case et_sb_uppage: newpos -= 9*page/10; break; case et_sb_up: newpos--; break; case et_sb_down: newpos++; break; case et_sb_downpage: newpos += 9*page/10; break; case et_sb_bottom: newpos = bd->cur->bdf->prop_cnt+1; break; case et_sb_thumb: case et_sb_thumbrelease: newpos = sb->pos; break; } if ( newpos + page > bd->cur->bdf->prop_cnt+1 ) newpos = bd->cur->bdf->prop_cnt+1 - page; if ( newpos<0 ) newpos = 0; if ( newpos!=bd->cur->top_prop ) { int diff = (newpos-bd->cur->top_prop)*(bd->fh+1); GRect r; bd->cur->top_prop = newpos; GScrollBarSetPos(bd->vsb,newpos); GGadgetGetSize(bd->tf,&r); GGadgetMove(bd->tf,r.x,r.y+diff); r.x = 0; r.y = 0; r.width = bd->vwidth; r.height = (bd->vheight/(bd->fh+1))*(bd->fh+1); GDrawScroll(bd->v,&r,0,diff); } }
static void AnchorD_Resize(AnchorDlg *a) { GRect size; int i, extra; int factor = a->magfactor; GDrawGetSize(a->gw,&size); a->full_width = size.width; a->full_height = size.height; a->sb_base = a->full_height - a->sb_height; if ( a->ctl_len+a->magfactor*a->char_size + 20 < a->full_width ) { a->sb_width = a->full_width - (a->ctl_len+a->magfactor*a->char_size); GGadgetResize(a->hsb,a->sb_width, a->sb_height); GGadgetMove(a->hsb,a->ctl_len+a->magfactor*a->char_size,a->sb_base); } AnchorD_SetSB(a); for ( i=0; i<a->cnt; ++i ) { if ( i==0 ) a->apmatch[i].xstart = a->ctl_len+a->char_size*factor; else a->apmatch[i].xstart = a->apmatch[i-1].xstart + a->apmatch[i-1].size*factor; } if ( i==0 ) a->xlen = 0; else a->xlen = a->apmatch[i-1].xstart - a->apmatch[0].xstart + a->apmatch[i-1].size*factor; if ( a->ymin>0 && a->sb_base- a->ymax*factor >=0 ) extra = (a->sb_base - a->ymax*factor)/2; else extra = (a->sb_base - (a->ymax-a->ymin)*factor)/2; a->baseline = a->ymax*factor + extra; GDrawRequestExpose(a->gw,NULL,false); }
static void GroupResize(struct groupdlg *grp,GEvent *event) { GRect size, wsize; int lcnt, offy; int sbsize = GDrawPointsToPixels(grp->gw,_GScrollBar_Width); GDrawGetSize(grp->gw,&size); lcnt = (size.height-grp->bmargin)/grp->fh; GGadgetResize(grp->vsb,sbsize,lcnt*grp->fh); GGadgetMove(grp->vsb,size.width-sbsize,0); GGadgetResize(grp->hsb,size.width-sbsize,sbsize); GGadgetMove(grp->hsb,0,lcnt*grp->fh); GDrawResize(grp->v,size.width-sbsize,lcnt*grp->fh); grp->page_width = size.width-sbsize; grp->lines_page = lcnt; GScrollBarSetBounds(grp->vsb,0,grp->open_cnt,grp->lines_page); GScrollBarSetBounds(grp->hsb,0,grp->maxl,grp->page_width); GGadgetGetSize(grp->cancel,&wsize); offy = size.height-wsize.height-6 - wsize.y; GGadgetMove(grp->cancel,size.width-wsize.width-30, wsize.y+offy); GGadgetMove(grp->ok , 30-3,wsize.y+offy-3); if ( grp->newsub!=NULL ) { GGadgetGetSize(grp->newsub,&wsize); GGadgetMove(grp->newsub,wsize.x,wsize.y+offy); GGadgetGetSize(grp->delete,&wsize); GGadgetMove(grp->delete,wsize.x,wsize.y+offy); GGadgetGetSize(grp->line1,&wsize); GGadgetMove(grp->line1,wsize.x,wsize.y+offy); GGadgetGetSize(grp->gpnamelab,&wsize); GGadgetMove(grp->gpnamelab,wsize.x,wsize.y+offy); GGadgetGetSize(grp->gpname,&wsize); GGadgetMove(grp->gpname,wsize.x,wsize.y+offy); GGadgetGetSize(grp->glyphslab,&wsize); GGadgetMove(grp->glyphslab,wsize.x,wsize.y+offy); GGadgetGetSize(grp->glyphs,&wsize); GGadgetMove(grp->glyphs,wsize.x,wsize.y+offy); GGadgetGetSize(grp->idlab,&wsize); GGadgetMove(grp->idlab,wsize.x,wsize.y+offy); GGadgetGetSize(grp->idname,&wsize); GGadgetMove(grp->idname,wsize.x,wsize.y+offy); GGadgetGetSize(grp->iduni,&wsize); GGadgetMove(grp->iduni,wsize.x,wsize.y+offy); GGadgetGetSize(grp->set,&wsize); GGadgetMove(grp->set,wsize.x,wsize.y+offy); GGadgetGetSize(grp->select,&wsize); GGadgetMove(grp->select,wsize.x,wsize.y+offy); GGadgetGetSize(grp->unique,&wsize); GGadgetMove(grp->unique,wsize.x,wsize.y+offy); GGadgetGetSize(grp->colour,&wsize); GGadgetMove(grp->colour,wsize.x,wsize.y+offy); GGadgetGetSize(grp->line2,&wsize); GGadgetMove(grp->line2,wsize.x,wsize.y+offy); } else {