static int e_h (GWindow gw, GEvent *event) { if (event->type == et_close) { struct gfc_data *d = GDrawGetUserData (gw); d->done = true; } else if (event->type == et_map) /* Above palettes */ GDrawRaise (gw); else if (event->type == et_char) return (false); else if (event->type == et_mousemove || (event->type == et_mousedown && event->u.mouse.button == 3)) { struct gfc_data *d = GDrawGetUserData (gw); GFileChooserPopupCheck (d->gfc, event); } else if ((event->type == et_mouseup || event->type == et_mousedown) && (event->u.mouse.button >= 4 && event->u.mouse.button <= 7)) { struct gfc_data *d = GDrawGetUserData (gw); return (GGadgetDispatchEvent ((GGadget *) (d->gfc), event)); } return (true); }
static int kpd_e_h(GWindow gw, GEvent *event) { if ( event->type==et_close ) { KPData *kpd = GDrawGetUserData(gw); kpd->done = true; } else if ( event->type == et_mousemove ) { kpdpopup(GDrawGetUserData(gw)); } else if ( event->type == et_expose ) { KPData *kpd = GDrawGetUserData(gw); GRect size, sbsize; GDrawGetSize(kpd->v,&size); GGadgetGetSize(GWidgetGetControl(kpd->gw,CID_ScrollBar),&sbsize); GDrawSetLineWidth(gw,0); GDrawDrawLine(gw,size.x,size.y-1,sbsize.x+sbsize.width-1,size.y-1,0x000000); GDrawDrawLine(gw,size.x,size.y+size.height,sbsize.x+sbsize.width-1,size.y+size.height,0x000000); GDrawDrawLine(gw,size.x-1,size.y-1,size.x-1,size.y+size.height,0x000000); } else if ( event->type == et_char ) { if ( event->u.chr.keysym == GK_F1 || event->u.chr.keysym == GK_Help ) { help("kernpairs.html"); return( true ); } if ( event->u.chr.chars[0]!='\0' && event->u.chr.chars[1]=='\0' ) { enum sortby sort = GGadgetGetFirstListSelectedItem(GWidgetGetControl(gw,CID_SortBy)); KPData *kpd = GDrawGetUserData(gw); if ( sort!=sb_kern ) { KPScrollTo(kpd,event->u.chr.chars[0],sort); return( true ); } else GDrawBeep(NULL); } return( false ); } else if ( event->type == et_resize && event->u.resize.sized ) { KP_Resize((KPData *) GDrawGetUserData(gw) ); } return( true ); }
static int e_h(GWindow gw, GEvent *event) { if ( event->type==et_close ) { struct gfc_data *d = GDrawGetUserData(gw); d->done = true; } else if ( event->type == et_map ) { /* Above palettes */ GDrawRaise(gw); } else if ( event->type == et_char ) { return( false ); } else if ( event->type == et_mousemove || (event->type==et_mousedown && event->u.mouse.button==3 )) { struct gfc_data *d = GDrawGetUserData(gw); if ( !WithinList(d,event) ) GFileChooserPopupCheck(d->gfc,event); } else if (( event->type==et_mouseup || event->type==et_mousedown ) && (event->u.mouse.button>=4 && event->u.mouse.button<=7) ) { struct gfc_data *d = GDrawGetUserData(gw); return( GGadgetDispatchEvent((GGadget *) (d->gfc),event)); } else if ( event->type == et_resize ) { GRect r, size; struct gfc_data *d = GDrawGetUserData(gw); if ( d->gfc!=NULL ) { GDrawGetSize(gw,&size); GGadgetGetSize(d->gfc,&r); GGadgetResize(d->gfc,size.width-2*r.x,r.height); } } return( event->type!=et_char ); }
static int nld_e_h(GWindow gw, GEvent *event) { if ( event->type==et_close ) { struct nldlg *d = GDrawGetUserData(gw); d->done = true; } else if ( event->type == et_char ) { return( false ); } else if ( event->type==et_controlevent && event->u.control.subtype==et_buttonactivate ) { struct nldlg *d = GDrawGetUserData(gw); d->done = true; d->ok = GGadgetGetCid(event->u.control.g); } 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 _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 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 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 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 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 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 delta_e_h(GWindow gw, GEvent *event) { if ( event->type==et_close ) { QGData *qg = GDrawGetUserData(gw); qg->done = true; } else if ( event->type == et_char ) { return( false ); } else if ( event->type == et_map ) { /* Above palettes */ GDrawRaise(gw); } else if ( event->type == et_destroy ) { QGData *qg = GDrawGetUserData(gw); free(qg->qg); free(qg); } 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 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 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 sv_e_h(GWindow gw, GEvent *event) { SearchView *sv = (SearchView *) ((CharViewBase *) GDrawGetUserData(gw))->container; switch ( event->type ) { case et_expose: SVDraw(sv,gw,event); break; case et_resize: if ( event->u.resize.sized ) SVResize(sv,event); break; case et_char: SVChar(sv,event); break; case et_timer: SVCheck(sv); break; case et_close: SV_DoClose((struct cvcontainer *) sv); break; case et_create: break; case et_destroy: SearchViewFree(sv); break; case et_map: if ( event->u.map.is_visible ) CVPaletteActivate(sv->cv_srch.inactive?&sv->cv_rpl:&sv->cv_srch); else CVPalettesHideIfMine(sv->cv_srch.inactive?&sv->cv_rpl:&sv->cv_srch); sv->isvisible = event->u.map.is_visible; break; } 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 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 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 progress_eh(GWindow gw, GEvent *event) { GProgress *p = GDrawGetUserData(gw); switch ( event->type ) { case et_destroy: free(p->line1); free(p->line2); free(p); break; case et_close: p->aborted = true; GDrawSetVisible(gw,false); break; case et_expose: GProgressDraw(p,gw,&event->u.expose.rect); break; case et_controlevent: if ( event->u.control.subtype == et_buttonactivate ) p->aborted = true; break; case et_char: if ( (event->u.chr.state&ksm_control) && event->u.chr.chars[0]=='.' ) p->aborted = true; break; case et_map: p->sawmap = true; break; } 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 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 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 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 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 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 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 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 ); }