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); }
void CVMouseMoveHand(CharView *cv, GEvent *event) { cv->xoff += event->u.mouse.x-cv->handscroll_base.x; cv->handscroll_base.x = event->u.mouse.x; cv->yoff -= event->u.mouse.y-cv->handscroll_base.y; cv->handscroll_base.y = event->u.mouse.y; cv->back_img_out_of_date = true; GScrollBarSetPos(cv->hsb,-cv->xoff); GScrollBarSetPos(cv->vsb,cv->yoff-cv->height); GDrawRequestExpose(cv->v,NULL,false); if ( cv->showrulers ) GDrawRequestExpose(cv->gw,NULL,false); }
void SVMakeActive(SearchView *sv,CharView *cv) { GRect r; if ( sv==NULL ) return; sv->cv_srch.inactive = sv->cv_rpl.inactive = true; cv->inactive = false; GDrawSetUserData(sv->gw,cv); GDrawRequestExpose(sv->cv_srch.v,NULL,false); GDrawRequestExpose(sv->cv_rpl.v,NULL,false); GDrawGetSize(sv->gw,&r); r.x = 0; r.y = sv->mbh; r.height = sv->fh+10; GDrawRequestExpose(sv->gw,&r,false); }
static void GroupWMouse(struct groupdlg *grp,GEvent *event) { int x; int depth=0; Group *group; group = GroupFindLPos(grp->root,event->u.mouse.y/grp->fh+grp->off_top,&depth); if ( group==NULL ) return; x = 5+8*depth - grp->off_left; if ( event->u.mouse.x<x ) return; if ( event->u.mouse.x<=x+grp->as ) { if ( group->glyphs != NULL ) return; group->open = !group->open; GroupSBSizes(grp); } else { group->selected = !group->selected; if ( grp->select_kids_too ) GroupSelectKids(group,group->selected); else if ( group->selected && !grp->select_many ) GroupDeselectAllBut(grp->root,group); if ( grp->select_callback!=NULL ) (grp->select_callback)(grp); } GDrawRequestExpose(grp->v,NULL,false); }
static int ErrChar(GEvent *e) { int newpos = errdata.offtop; switch( e->u.chr.keysym ) { case GK_Home: newpos = 0; break; case GK_End: newpos = errdata.cnt-errdata.linecnt; break; case GK_Page_Up: case GK_KP_Page_Up: newpos -= errdata.linecnt; break; case GK_Page_Down: case GK_KP_Page_Down: newpos += errdata.linecnt; break; case GK_Up: case GK_KP_Up: --newpos; break; case GK_Down: case GK_KP_Down: ++newpos; break; } if ( newpos>errdata.cnt-errdata.linecnt ) newpos = errdata.cnt-errdata.linecnt; if ( newpos<0 ) newpos =0; if ( newpos!=errdata.offtop ) { errdata.offtop = newpos; GScrollBarSetPos(errdata.vsb,errdata.offtop); GDrawRequestExpose(errdata.v,NULL,false); return( true ); } return( false ); }
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 _DoFVCompare(FontView *fv,int from,int to,double errbound) { SplineFont *sf = fv->b.sf; int gid, enc; SplineChar *sc; int first=-1; memset(fv->b.selected,0,fv->b.map->enccount); for ( enc=0 ; enc<fv->b.map->enccount; ++enc ) { if ( /*fv->b.selected[enc] &&*/ (gid=fv->b.map->map[enc])!=-1 && (sc = sf->glyphs[gid])!=NULL && !sc->ticked ) { if ( !LayersSimilar(&sc->layers[from],&sc->layers[to],errbound)) { fv->b.selected[enc] = true; if ( first==-1 ) first = enc; } } } GDrawRequestExpose(fv->v,NULL,true); if ( first==-1 ) ff_post_notice(_("Match"),_("No significant differences found")); else { ff_post_notice(_("Differ"),_("The layers do not match")); FVScrollToChar(fv,first); fv->end_pos = fv->pressed_pos = first; /*FVShowInfo(fv);*/ } }
void GWidgetFlowGadgets(GWindow gw) { GGadget *gadget; GContainerD *gd = (GContainerD *) (gw->widget_data); if ( gd==NULL ) return; gadget = gd->gadgets; if ( gadget!=NULL ) { while ( gadget->prev!=NULL ) gadget=gadget->prev; } if ( gadget != NULL && GGadgetFillsWindow(gadget)) { GRect wsize; GDrawGetSize(gw, &wsize); /* Make any offset simmetrical */ if (wsize.width >= 2*gadget->r.x) wsize.width -= 2*gadget->r.x; else wsize.width = 0; if (wsize.height >= 2*gadget->r.y) wsize.height -= 2*gadget->r.y; else wsize.height = 0; GGadgetResize(gadget,wsize.width,wsize.height); GDrawRequestExpose(gw,NULL,false); } }
void CVMouseMoveKnife(CharView *cv, PressedOn *p) { #if defined(KNIFE_CONTINUOUS) ProcessKnife(cv,p); #else GDrawRequestExpose(cv->v,NULL,false); #endif }
void CVGridFitChar(CharView *cv) { void *single_glyph_context; SplineFont *sf = cv->b.sc->parent; int layer = CVLayer((CharViewBase *) cv); SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; single_glyph_context = _FreeTypeFontContext(sf,cv->b.sc,NULL,layer, sf->layers[layer].order2?ff_ttf:ff_otf,0,NULL); if ( single_glyph_context==NULL ) { LogError(_("Freetype rasterization failed.\n") ); return; } if ( cv->b.sc->layers[layer].refs!=NULL ) SCNumberPoints(cv->b.sc,layer); cv->raster = FreeType_GetRaster(single_glyph_context,cv->b.sc->orig_pos, cv->ft_pointsizey, cv->ft_pointsizex, cv->ft_dpi, cv->ft_depth ); cv->b.gridfit = FreeType_GridFitChar(single_glyph_context,cv->b.sc->orig_pos, cv->ft_pointsizey, cv->ft_pointsizex, cv->ft_dpi, &cv->b.ft_gridfitwidth, cv->b.sc, cv->ft_depth, true ); FreeTypeFreeContext(single_glyph_context); GDrawRequestExpose(cv->v,NULL,false); if ( cv->b.sc->instructions_out_of_date && cv->b.sc->ttf_instrs_len!=0 ) ff_post_notice(_("Instructions out of date"), _("The points have been changed. This may mean that the truetype instructions now refer to the wrong points and they may cause unexpected results.")); }
static int GProgressProcess(GProgress *p) { int width, amount; int tenpt; if ( !p->visible ) GProgressTimeCheck(); tenpt = GDrawPointsToPixels(p->gw,10); width = p->width-2*tenpt; if ( p->tot==0 ) amount = 0; else amount = width * (p->stage*p->tot + p->sofar)/(p->stages*p->tot); if ( amount!=p->last_amount ) { if ( amount<p->last_amount || p->last_amount==0 ) GDrawRequestExpose(p->gw,NULL,false); else { GRect r; r.height = tenpt-1; r.width = amount - p->last_amount; r.x = tenpt + p->last_amount; r.y = p->boxy+1; GDrawFillRect(p->gw,&r,progress_fillcol); } p->last_amount = amount; } GDrawProcessPendingEvents(NULL); return( !p->aborted ); }
static void DoFindAll(SearchView *sv) { int any; any = _DoFindAll(&sv->sd); GDrawRequestExpose(((FontView *) (sv->sd.fv))->v,NULL,false); if ( !any ) ff_post_notice(_("Not Found"),_("The search pattern was not found in the font %.100s"),sv->sd.fv->sf->fontname); }
static int QGSorter(GGadget *g, GEvent *e) { if ( e->u.control.subtype == et_listselected ) { QGData *qg = GDrawGetUserData(GGadgetGetWindow(g)); QGDoSort(qg); GDrawRequestExpose(qg->v,NULL,false); } return( true ); }
static int AnchorD_Mouse(AnchorDlg *a,GEvent *event) { int on_combo = -1; int on_ap = 0; int i; if ( event->u.mouse.x<a->ctl_len || event->u.mouse.y>=a->sb_base ) return( false ); if ( a->xlen>0 && event->u.mouse.x>=a->apmatch[0].xstart ) { int x = event->u.mouse.x + a->xoff; for ( i=0; i<a->cnt; ++i ) { if ( x>=a->apmatch[i].xstart && x<a->apmatch[i].xstart + a->apmatch[i].size*a->magfactor ) { on_combo = i; break; } } } else if ( event->u.mouse.x>=a->ctl_len && event->u.mouse.x<a->ctl_len+ a->magfactor*a->char_size ) { int x = event->u.mouse.x - a->ctl_len; int y = a->baseline - event->u.mouse.y; int ax = (a->char_off + (int) rint(a->apos.x*a->scale))*a->magfactor; int ay = (int) rint(a->apos.y*a->scale)*a->magfactor; if ( x>ax-4 && x<ax+4 && y>ay-4 && y<ay+4 ) on_ap = 2; else on_ap = 1; } if ( event->type == et_mousedown ) { if ( on_combo!=-1 ) a->combo = on_combo+1; else if ( on_ap==2 ) { a->on_ap = true; a->orig_pos = a->apos; } } else if ( event->type == et_mouseup ) { if ( on_combo!=-1 && on_combo+1==a->combo ) { AnchorPoint *ap = a->apmatch[on_combo].ap; a->combo = 0; AnchorD_ChangeGlyph(a,a->apmatch[on_combo].sc,a->apmatch[on_combo].ap); AnchorD_SelectGlyph(a,ap); } else if ( on_ap && a->on_ap ) { AnchorD_FigurePos(a,event); AnchorD_ClearCorrections(a); AnchorD_DrawPos(a); GDrawRequestExpose(a->gw,NULL,false); } else if ( a->combo!=0 ) { } else if ( a->on_ap ) { a->apos = a->orig_pos; AnchorD_DrawPos(a); } a->on_ap = 0; a->combo = 0; } else if ( a->on_ap ) { AnchorD_FigurePos(a,event); AnchorD_DrawPos(a); } 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 ); } }
void ShowErrorWindow(void) { if ( errdata.gw==NULL ) return; GDrawSetVisible(errdata.gw,true); GDrawRaise(errdata.gw); if ( errdata.showing ) GDrawRequestExpose(errdata.v,NULL,false); errdata.showing = true; }
static void KP_RefreshKP(KPData *kpd,int index) { GRect sel; if ( index<kpd->off_top || index>kpd->off_top+kpd->wh ) return; sel.x = 0; sel.width = kpd->vwidth; sel.y = (index-kpd->off_top)*kpd->uh; sel.height = kpd->uh; GDrawRequestExpose(kpd->v,&sel,false); }
static void KPV_Resize(KPData *kpd) { GRect size; GGadget *sb; GDrawGetSize(kpd->v,&size); kpd->wh = size.height/kpd->uh; sb = GWidgetGetControl(kpd->gw,CID_ScrollBar); GScrollBarSetBounds(sb,0,kpd->kcnt,kpd->wh); if ( kpd->off_top>kpd->kcnt-kpd->wh ) kpd->off_top = kpd->kcnt-kpd->wh; if ( kpd->off_top<0 ) kpd->off_top = 0; GScrollBarSetPos(sb,kpd->off_top); kpd->vwidth = size.width; GDrawRequestExpose(kpd->v,NULL,false); GDrawRequestExpose(kpd->gw,NULL,false); }
void SCDeGridFit(SplineChar *sc) { CharView *cv; for ( cv=(CharView *) (sc->views); cv!=NULL; cv=(CharView *) (cv->b.next) ) if ( cv->show_ft_results ) { SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; cv->show_ft_results = false; GDrawRequestExpose(cv->v,NULL,false); } }
static void WarnMenuClear(GWindow gw,struct gmenuitem *mi,GEvent *e) { int i; for ( i=0; i<errdata.cnt; ++i ) { free(errdata.errlines[i]); errdata.errlines[i] = NULL; } errdata.cnt = 0; GDrawRequestExpose(gw,NULL,false); }
static int wheel_e_h(GWindow gw, GEvent *event) { struct gcol_data *d = GDrawGetUserData(gw); GRect size; if ( event->type==et_expose ) { GRect circle; GDrawGetSize(d->wheelw,&size); if ( d->wheel==NULL || GImageGetHeight(d->wheel)!=size.height || GImageGetWidth(d->wheel)!=size.width ) { if ( d->wheel!=NULL ) GImageDestroy(d->wheel); d->wheel = ColorWheel(size.width,size.height); } GDrawDrawImage(gw,d->wheel,NULL,0,0); if ( d->col.hsv ) { double s = sin(d->col.h*3.1415926535897932/180.); double c = cos(d->col.h*3.1415926535897932/180.); int y = (int) rint(d->col.s*(size.height-1)*s/2.0) + size.height/2; int x = (int) rint(d->col.s*(size.width-1)*c/2.0) + size.width/2; circle.x = x-3; circle.y = y-3; circle.width = circle.height = 7; GDrawDrawElipse(gw,&circle,0x000000); } } else if ( event->type == et_mousedown || (event->type==et_mousemove && d->pressed) || event->type==et_mouseup ) { Color rgb; struct hslrgba temp; GDrawGetSize(d->wheelw,&size); if ( event->u.mouse.y>=0 && event->u.mouse.y<size.height && event->u.mouse.x>=0 && event->u.mouse.x<size.width ) { rgb = GImageGetPixelRGBA(d->wheel,event->u.mouse.x,event->u.mouse.y); temp.r = ((rgb>>16)&0xff)/255.; temp.g = ((rgb>>8)&0xff)/255.; temp.b = ((rgb )&0xff)/255.; gRGB2HSV((struct hslrgb *) &temp); d->col.h = temp.h; d->col.s = temp.s; GCol_ShowTexts(d); GDrawRequestExpose(d->colw,NULL,false); GDrawRequestExpose(d->wheelw,NULL,false); }
static void KPKPCloseup(KPData *kpd) { if ( kpd->selected!=-1 ) { struct kerns *k = &kpd->kerns[kpd->selected]; int oldoff = k->kp->off; k->kp->off = k->newoff; KernPairD(k->first->parent,k->first,k->second,kpd->layer,false); k->newoff = k->kp->off; k->kp->off = oldoff; GDrawRequestExpose(kpd->v,NULL,false); kpd->selected = -1; } }
void FVReplaceOutlineWithReference( FontView *fv, double fudge ) { if ( fv->v!=NULL ) GDrawSetCursor(fv->v,ct_watch); FVBReplaceOutlineWithReference((FontViewBase *) fv, fudge); if ( fv->v!=NULL ) { GDrawRequestExpose(fv->v,NULL,false); GDrawSetCursor(fv->v,ct_pointer); } }
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 void KP_ScrollTo(KPData *kpd,int where) { /* Make sure the line "where" is visible */ if ( where<kpd->off_top || where>=kpd->off_top+kpd->wh ) { where -= kpd->wh/4; if ( where>kpd->kcnt-kpd->wh ) where = kpd->kcnt-kpd->wh; if ( where<0 ) where = 0; kpd->off_top = where; GScrollBarSetPos(GWidgetGetControl(kpd->gw,CID_ScrollBar),where); GDrawRequestExpose(kpd->v,NULL,false); } }
void CVMouseMoveRuler(CharView *cv, GEvent *event) { if ( cv->autonomous_ruler_w ) return; if ( !cv->p.pressed && (event->u.mouse.state&ksm_alt) ) { if ( cv->ruler_w!=NULL && GDrawIsVisible(cv->ruler_w)) { GDrawDestroyWindow(cv->ruler_w); cv->ruler_w = NULL; } return; } if ( !cv->p.pressed ) CVMouseAtSpline(cv,event); RulerPlace(cv,event); if ( !cv->p.pressed ) GDrawSetVisible(cv->ruler_w,true); GDrawSync(NULL); GDrawProcessPendingEvents(NULL); /* The resize needs to happen before the expose */ if ( !cv->p.pressed && (event->u.mouse.state&ksm_alt) ) /* but a mouse up might sneak in... */ return; GDrawRequestExpose(cv->ruler_w,NULL,false); GDrawRequestExpose(cv->v,NULL,false); }
static int AnchorD_MagnificationChanged(GGadget *g, GEvent *e) { AnchorDlg *a = GDrawGetUserData(GGadgetGetWindow(g)); if ( e->type==et_controlevent && e->u.control.subtype == et_listselected ) { int mag = GGadgetGetFirstListSelectedItem(GWidgetGetControl(a->gw,CID_Mag)); if ( mag!=-1 && mag!=a->magfactor-1 ) { a->xoff = (mag+1)*a->xoff/a->magfactor; a->magfactor = mag+1; AnchorD_ChangeMag(a); GDrawRequestExpose(a->gw,NULL,false); } } return( true ); }
static void _BdfP_DefaultCurrent(struct bdf_dlg *bd) { struct bdf_dlg_font *cur = bd->cur; BDFFont *bdf = cur->bdf; if ( cur->sel_prop<0 || cur->sel_prop>=bdf->prop_cnt ) return; BdfP_HideTextField(bd); if ( strcmp(bdf->props[cur->sel_prop].name,"FONT")==0 ) { Default_XLFD(bdf,bd->map,-1); } else if ( strcmp(bdf->props[cur->sel_prop].name,"COMMENT")==0 ) return; else Default_Properties(bdf,bd->map,bdf->props[cur->sel_prop].name); GDrawRequestExpose(bd->v,NULL,false); return; }
static int Trans_TypeChange(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_listselected ) { GWindow bw = GGadgetGetWindow(g); int offset = GGadgetGetCid(g)-CID_Type; int index = GGadgetGetFirstListSelectedItem(g); int mask = (intpt) transformtypes[index].userdata; int i; if ( mask & 0x400 ) { real xoff = last_ruler_offset[0].x, yoff = last_ruler_offset[0].y; char buf[24]; unichar_t ubuf[24]; if ( mask & 0x20 ) index -= 4; /* skew */ else index -= 7; /* move or rotate */ GGadgetSelectOneListItem( g,index ); mask &= ~0x400; if ( mask&1 ) { /* Move */ sprintf( buf, "%.1f", (double) xoff ); uc_strcpy(ubuf,buf); GGadgetSetTitle(GWidgetGetControl(bw,CID_XMove+offset), ubuf ); sprintf( buf, "%.1f", (double) yoff ); uc_strcpy(ubuf,buf); GGadgetSetTitle(GWidgetGetControl(bw,CID_YMove+offset), ubuf ); } else { sprintf( buf, "%.0f", atan2(yoff,xoff)*180/3.1415926535897932 ); uc_strcpy(ubuf,buf); GGadgetSetTitle(GWidgetGetControl(bw,((mask&0x2)?CID_Angle:CID_SkewAng)+offset), ubuf ); GGadgetSetChecked(GWidgetGetControl(bw,CID_Clockwise+offset), false ); GGadgetSetChecked(GWidgetGetControl(bw,CID_CounterClockwise+offset), true ); } } for ( i=CID_First; i<=CID_Last; ++i ) { GGadget *sg; sg = GWidgetGetControl(bw,i+offset); GGadgetSetVisible(sg, ( ((intpt) GGadgetGetUserData(sg))&mask )?1:0); } if ( selcid[index]!=0 ) { GGadget *tf = GWidgetGetControl(bw,selcid[index]+offset); GWidgetIndicateFocusGadget(tf); GTextFieldSelect(tf,0,-1); } GWidgetToDesiredSize(bw); GDrawRequestExpose(bw,NULL,false); } return( true ); }
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 ); }