static int RH_HVStem(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_radiochanged ) { ReviewHintData *hd = GDrawGetUserData(GGadgetGetWindow(g)); hd->ishstem = GGadgetIsChecked(GWidgetGetControl(GGadgetGetWindow(g),CID_HStem)); hd->active = hd->ishstem ? hd->cv->b.sc->hstem : hd->cv->b.sc->vstem; RH_SetupHint(hd); } return( true ); }
static int GFD_New(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); d->done = true; GDrawSetVisible(GGadgetGetWindow(g),false); FontNew(); } return( true ); }
static int RH_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { ReviewHintData *hd = GDrawGetUserData(GGadgetGetWindow(g)); Do_OKRegen(hd); } return( true ); }
static int _BdfP_VScroll(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_scrollbarchange ) { struct bdf_dlg *bd = (struct bdf_dlg *) GDrawGetUserData(GGadgetGetWindow(g)); BdfP_VScroll(bd,&e->u.control.u.sb); } return( true ); }
static int BdfP_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct bdf_dlg *bd = GDrawGetUserData(GGadgetGetWindow(g)); BdfP_DoCancel(bd); } return( true ); }
static int Filter_OK(GGadget *g, GEvent *e) { struct filter_d *d; struct matrix_data *md; int rows,i,cnt; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { if ( user_font_filters!=NULL ) { for ( i=0; user_font_filters[i].name!=NULL; ++i ) { free(user_font_filters[i].name); free(user_font_filters[i].filter); } free(user_font_filters); user_font_filters = NULL; } d = GDrawGetUserData(GGadgetGetWindow(g)); md = GMatrixEditGet(d->gme,&rows); for ( i=cnt=0; i<rows; ++i ) if ( !md[2*i].frozen ) ++cnt; if ( cnt!=0 ) { user_font_filters = malloc((cnt+1)*sizeof(struct openfilefilters)); for ( i=cnt=0; i<rows; ++i ) if ( !md[2*i].frozen ) { user_font_filters[cnt].name = copy(md[2*i].u.md_str); user_font_filters[cnt].filter = copy(md[2*i+1].u.md_str); ++cnt; } user_font_filters[cnt].name = user_font_filters[cnt].filter = NULL; } SavePrefs(true); d->done = true; } return( true ); }
static int OD_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { OutlineData *od = GDrawGetUserData(GGadgetGetWindow(g)); od->done = true; } return( true ); }
static int FtPpem_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { FtSizeData *fsd = GDrawGetUserData(GGadgetGetWindow(g)); fsd->done = true; } return( true ); }
static int Goto_OK(GGadget *g, GEvent *e) { GWindow gw; GotoData *d; char *ret; int i; if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { gw = GGadgetGetWindow(g); d = GDrawGetUserData(gw); ret = GGadgetGetTitle8(GWidgetGetControl(gw,CID_Name)); if ( d->ranges!=NULL ) { for ( i=0; d->ranges[i].text!=NULL; ++i ) { if ( strcmp(ret,(char *) d->ranges[i].text)==0 ) { d->ret = (intpt) d->ranges[i].userdata; break; } } } if ( d->ret==-1 ) { d->ret = NameToEncoding(d->sf,d->map,ret); if ( d->ret<0 || (d->ret>=d->map->enccount && d->sf->cidmaster==NULL )) d->ret = -1; if ( d->ret==-1 ) { ff_post_notice(_("Goto"),_("Could not find the glyph: %.70s"),ret); } else d->done = true; } else d->done = true; } return( true ); }
static int DE_Delete(GGadget *g, GEvent *e) { GWindow gw; int *done; GGadget *list; int sel,i; Encoding *item; if ( e->type==et_controlevent && (e->u.control.subtype == et_buttonactivate || e->u.control.subtype == et_listdoubleclick )) { gw = GGadgetGetWindow(g); done = GDrawGetUserData(gw); list = GWidgetGetControl(gw,CID_Encodings); sel = GGadgetGetFirstListSelectedItem(list); i=0; for ( item=enclist; item!=NULL; item=item->next ) { if ( item->builtin ) /* Do Nothing */; else if ( i==sel ) break; else ++i; } if ( item!=NULL ) DeleteEncoding(item); *done = true; } return( true ); }
static int CW_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { CreateWidthDlg *wd = GDrawGetUserData(GGadgetGetWindow(g)); wd->wd.done = true; } return( true ); }
static int CW_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { int err = false; CreateWidthDlg *wd = GDrawGetUserData(GGadgetGetWindow(g)); if ( GGadgetIsChecked(GWidgetGetControl(wd->gw,CID_Set)) ) { wd->wd.type = st_set; wd->wd.setto = GetReal8(wd->gw,CID_SetVal,rb1[wd->wd.wtype],&err); if ( wd->wd.setto<0 && wd->wd.wtype==wt_width ) { char *yesno[3]; yesno[0] = _("_Yes"); yesno[1] = _("_No"); yesno[2] = NULL; if ( gwwv_ask(_("Negative Width"), (const char **) yesno, 0, 1, _("Negative glyph widths are not allowed in TrueType\nDo you really want a negative width?") )==1 ) return( true ); } } else if ( GGadgetIsChecked(GWidgetGetControl(wd->gw,CID_Incr)) ) { wd->wd.type = st_incr; wd->wd.increment = GetReal8(wd->gw,CID_IncrVal,rb2[wd->wd.wtype],&err); } else { wd->wd.type = st_scale; wd->wd.scale = GetReal8(wd->gw,CID_ScaleVal,rb2[wd->wd.wtype],&err); } if ( err ) return(true); (wd->wd.doit)((CreateWidthData *) wd); } return( true ); }
static int CH_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { CreateHintData *hd = GDrawGetUserData(GGadgetGetWindow(g)); hd->done = true; } return( true ); }
static int RH_Remove(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { ReviewHintData *hd = GDrawGetUserData(GGadgetGetWindow(g)); StemInfo *prev; if ( hd->active==NULL ) return( true ); /* Eh? */ if ( hd->active==hd->cv->b.sc->hstem ) { hd->cv->b.sc->hstem = hd->active->next; prev = hd->cv->b.sc->hstem; } else if ( hd->active==hd->cv->b.sc->vstem ) { hd->cv->b.sc->vstem = hd->active->next; prev = hd->cv->b.sc->vstem; } else { prev = hd->ishstem ? hd->cv->b.sc->hstem : hd->cv->b.sc->vstem; for ( ; prev->next!=hd->active && prev->next!=NULL; prev = prev->next ); prev->next = hd->active->next; } if ( hd->ishstem ) hd->cv->b.sc->hconflicts = StemListAnyConflicts(hd->cv->b.sc->hstem); else hd->cv->b.sc->vconflicts = StemListAnyConflicts(hd->cv->b.sc->vstem); hd->cv->b.sc->manualhints = true; hd->changed = true; StemInfoFree( hd->active ); hd->active = prev; SCOutOfDateBackground(hd->cv->b.sc); RH_SetupHint(hd); /*SCUpdateAll(hd->cv->b.sc);*/ /* Done in RH_SetupHint now */ } return( true ); }
static int JSTF_Script_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { Jstf_Dlg *jd = GDrawGetUserData(GGadgetGetWindow(g)); SplineFont *sf = jd->sf; Justify *head=NULL, *last=NULL, *cur; int rows, i; int cols = GMatrixEditGetColCnt(GWidgetGetControl(jd->gw,CID_Scripts)); struct matrix_data *strings = GMatrixEditGet(GWidgetGetControl(jd->gw,CID_Scripts), &rows); for ( i=0; i<rows; ++i ) { cur = chunkalloc(sizeof(Justify)); cur->script = Str2Tag(strings[cols*i+0].u.md_str); cur->extenders = copy(strings[cols*i+1].u.md_str); cur->langs = strings[cols*i+3].u.md_addr; if ( head==NULL ) head = cur; else last->next = cur; last = cur; } JustifyFree(sf->justify); sf->justify = head; jd->done = true; } return( true ); }
static int Delta_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { QGData *qg = GDrawGetUserData(GGadgetGetWindow(g)); qg->done = true; } return( true ); }
static int PoV_Vanish(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_textchanged ) { struct nldlg *d = GDrawGetUserData(GGadgetGetWindow(g)); PoV_DoVanish(d); } return( true ); }
static int AnchorD_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { AnchorDlg *a = GDrawGetUserData(GGadgetGetWindow(g)); AnchorD_DoCancel(a); } return( true ); }
static int OD_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { OutlineData *od = GDrawGetUserData(GGadgetGetWindow(g)); real width, gap; int err = 0; width = GetReal8(od->gw,CID_Width,_("Outline Width"),&err); if ( od->isinline ) gap = GetReal8(od->gw,CID_Gap,_("_Gap:"),&err); if ( err ) return(true); def_outline_width = width; if ( od->isinline ) { def_gap_width = gap; if ( od->fv!=NULL ) FVInline((FontViewBase *) od->fv,width,gap); else if ( od->cv!=NULL ) CVInline(od->cv,width,gap); else if ( od->mv!=NULL ) MVInline(od->mv,width,gap); } else { if ( od->fv!=NULL ) FVOutline((FontViewBase *) od->fv,width); else if ( od->cv!=NULL ) CVOutline(od->cv,width); else if ( od->mv!=NULL ) MVOutline(od->mv,width); } od->done = true; } return( true ); }
static int BaseLang_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { BaseLangDlg *b = GDrawGetUserData(GGadgetGetWindow(g)); GGadget *g = GWidgetGetControl(b->gw,CID_Languages); int r, rows, cols = GMatrixEditGetColCnt(g); struct matrix_data *md = GMatrixEditGet(g,&rows); struct baselangextent *cur, *last; if ( md==NULL ) return( true ); b->old = last = NULL; for ( r=0; r<rows; ++r ) { cur = XZALLOC(struct baselangextent); cur->lang = TagFromString(md[r*cols+0].u.md_str); cur->descent = md[r*cols+1].u.md_ival; cur->ascent = md[r*cols+2].u.md_ival; cur->features = (struct baselangextent *) md[r*cols+3].u.md_str; md[r*cols+3].u.md_str = NULL; if ( last==NULL ) b->old = cur; else last->next = cur; last = cur; } b->done = true; }
static int SD_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { OutlineData *od = GDrawGetUserData(GGadgetGetWindow(g)); real width, angle, len; int err = 0; width = GetReal8(od->gw,CID_Width,_("Outline Width"),&err); len = GetReal8(od->gw,CID_ShadowLen,_("Shadow Length:"),&err); angle = GetReal8(od->gw,CID_LightAngle,_("Light Angle:"),&err); if ( err ) return(true); def_outline_width = width; def_shadow_len = len; def_sun_angle = angle; angle *= -3.1415926535897932/180; angle -= 3.1415926535897932/2; if ( od->fv!=NULL ) FVShadow((FontViewBase *) od->fv,angle,width,len,od->wireframe); else if ( od->cv!=NULL ) CVShadow(od->cv,angle,width,len,od->wireframe); else if ( od->mv!=NULL ) MVShadow(od->mv,angle,width,len,od->wireframe); od->done = true; } return( true ); }
static int L2L_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { L2LDlg *d = GDrawGetUserData(GGadgetGetWindow(g)); int from, to, clear; int err=0; double errbound; from = GGadgetGetFirstListSelectedItem(GWidgetGetControl(d->gw,CID_FromLayer)); to = GGadgetGetFirstListSelectedItem(GWidgetGetControl(d->gw,CID_ToLayer)); if ( d->l2l==l2l_copy ) { clear = GGadgetIsChecked(GWidgetGetControl(d->gw,CID_ClearOld)); if ( d->cv ) _DoCVCopy(d->cv,from,to,clear); else _DoFVCopy(d->fv,from,to,clear); } else { errbound = GetReal8(d->gw,CID_ErrorBound,_("Error Bound"),&err); if ( err ) return( true ); if ( d->cv ) _DoCVCompare(d->cv,from,to,errbound); else _DoFVCompare(d->fv,from,to,errbound); } d->done = true; } return( true ); }
static int GFD_Ok(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); GGadget *tf; GFileChooserGetChildren(d->gfc,NULL,NULL,&tf); if ( *_GGadgetGetTitle(tf)!='\0' ) { extern int allow_utf8_glyphnames; GTextInfo *ti = GGadgetGetListItemSelected(d->rename); char *nlname = u2utf8_copy(ti->text); force_names_when_opening = NameListByName(nlname); free(nlname); if ( force_names_when_opening!=NULL && force_names_when_opening->uses_unicode && !allow_utf8_glyphnames) { ff_post_error(_("Namelist contains non-ASCII names"),_("Glyph names should be limited to characters in the ASCII character set, but there are names in this namelist which use characters outside that range.")); return(true); } d->done = true; d->ret = GGadgetGetTitle(d->gfc); // Trim trailing '/' if its there and put that string back as // the d->gfc string. int tmplen = u_strlen( d->ret ); if( tmplen > 0 ) { if( d->ret[ tmplen-1 ] == '/' ) { unichar_t* tmp = u_copy( d->ret ); tmp[ tmplen-1 ] = '\0'; GGadgetSetTitle(d->gfc, tmp); free(tmp); d->ret = GGadgetGetTitle(d->gfc); } } } } return( true ); }
static int GCol_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gcol_data *d = GDrawGetUserData(GGadgetGetWindow(g)); double *offs[7] = { &d->col.h, &d->col.s, &d->col.v, &d->col.r, &d->col.g, &d->col.b, &d->col.alpha }; int err = false, i; double val; for ( i=0; i<7; ++i ) { val = GetReal8(d->gw,cids[i],_(labnames[i]),&err); if ( err ) return( true ); if ( i==0 ) { val = fmod(val,360); if ( val<0 ) val += 360; } else { if ( val<0 || val>1 ) { gwwv_post_error(_("Value out of bounds"), _("Saturation and Value, and the three colors must be between 0 and 1")); return( true ); } } *offs[i] = val; } d->done = true; } return( true ); }
static int GFD_Cancel(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct gfc_data *d = GDrawGetUserData(GGadgetGetWindow(g)); d->done = true; } return( true ); }
static int JSTF_Glyph_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct glyph_list_dlg *gld = GDrawGetUserData(GGadgetGetWindow(g)); int rows, i, len; struct matrix_data *strings = GMatrixEditGet(GWidgetGetControl(gld->gw,CID_Glyphs), &rows); char *ret; if ( rows==0 ) gld->ret = NULL; else { len = 0; for ( i=0; i<rows; ++i ) len += strlen(strings[1*i+0].u.md_str) +1; ret = galloc(len+1); for ( i=0; i<rows; ++i ) { strcpy(ret,strings[1*i+0].u.md_str); strcat(ret," "); ret += strlen(ret); } if ( ret>gld->ret && ret[-1] == ' ' ) ret[-1] = '\0'; gld->ret = GlyphNameListDeUnicode(ret); free(ret); } gld->done = true; } return( true ); }
static int BdfP_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct bdf_dlg *bd = GDrawGetUserData(GGadgetGetWindow(g)); int i; struct xlfd_components components; char *xlfd; if ( !BdfP_FinishTextField(bd)) return( true ); for ( i=0; i<bd->fcnt; ++i ) { BDFFont *bdf = bd->fonts[i].bdf; BDFProperties *temp = bdf->props; int pc = bdf->prop_cnt; bdf->props = bd->fonts[i].old_props; bdf->prop_cnt = bd->fonts[i].old_prop_cnt; BDFPropsFree(bdf); bdf->props = temp; bdf->prop_cnt = pc; xlfd = BdfPropHasString(bdf,"FONT",NULL); if ( xlfd!=NULL ) XLFD_GetComponents(xlfd,&components); else XLFD_CreateComponents(bdf,bd->map, -1, &components); bdf->res = components.res_y; } free(bd->fonts); bd->sf->changed = true; bd->done = true; } return( true ); }
static int JSTF_Lookup_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { struct glyph_list_dlg *gld = GDrawGetUserData(GGadgetGetWindow(g)); int rows, i, len; struct matrix_data *strings = GMatrixEditGet(GWidgetGetControl(gld->gw,CID_Lookups), &rows); char *ret; if ( rows==0 ) gld->ret = NULL; else { len = 0; for ( i=0; i<rows; ++i ) { OTLookup *otl = (OTLookup *) strings[1*i+0].u.md_ival; len += strlen(otl->lookup_name) +2; } gld->ret = ret = galloc(len+1); for ( i=0; i<rows; ++i ) { OTLookup *otl = (OTLookup *) strings[1*i+0].u.md_ival; strcpy(ret,otl->lookup_name); strcat(ret,", "); ret += strlen(ret); } if ( ret>gld->ret && ret[-1] == ' ' ) *--ret = '\0'; if ( ret>gld->ret && ret[-1] == ',' ) *--ret = '\0'; } gld->done = true; } return( true ); }
static int SD_LangChanged(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_radiochanged ) { struct sd_data *sd = GDrawGetUserData(GGadgetGetWindow(g)); _SD_LangChanged(sd); } return( true ); }
static int AW2_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { GWindow gw = GGadgetGetWindow(g); struct widthinfo *wi = GDrawGetUserData(gw); int err = false; int separation, min_side, max_side, height, loop; separation = GetInt8(gw,CID_Separation, _("Separation"),&err); min_side = GetInt8(gw,CID_MinSep, _("Min Bearing"),&err); max_side = GetInt8(gw,CID_MaxSep, _("Max Bearing"),&err); height = GetInt8(gw,CID_Height, _("Height"),&err); loop = GetInt8(gw,CID_Loop, _("Loop Count"),&err); if ( err ) return( true ); GDrawSetVisible(gw,false); GDrawSync(NULL); GDrawProcessPendingEvents(NULL); width_last_em_size = wi->sf->ascent + wi->sf->descent; width_separation = separation; wi->sf->width_separation=separation; if ( wi->sf->italicangle==0 ) width_min_side_bearing = min_side; width_max_side_bearing = max_side; width_chunk_height = height; width_loop_cnt = loop; AutoWidth2((FontViewBase *) wi->fv,separation,min_side,max_side, height, loop); wi->done = true; } return( true ); }