void fontpane_popup(int *psfont_adr, int *latexfont_adr, int *psflag_adr, void (*showfont_fn) (/* ??? */), Widget show_widget) { DeclareArgs(2); Position xposn, yposn; Widget widg; font_ps_sel = psfont_adr; font_latex_sel = latexfont_adr; flag_sel = psflag_adr; font_setimage = showfont_fn; font_widget = show_widget; if (first_fontmenu) { first_fontmenu = False; /* don't reposition it if user has already popped it */ XtTranslateCoords(tool, CANVAS_WD/4, CANVAS_HT/4, &xposn, &yposn); FirstArg(XtNx, xposn); /* position about 1/4 from upper-left corner of canvas */ NextArg(XtNy, yposn); SetValues(ps_fontmenu); SetValues(latex_fontmenu); } widg = *flag_sel ? ps_fontmenu : latex_fontmenu; XtPopup(widg, XtGrabExclusive); /* if the file message window is up add it to the grab */ file_msg_add_grab(); /* insure that the most recent colormap is installed */ set_cmap(XtWindow(widg)); XSetWMProtocols(tool_d, XtWindow(widg), &wm_delete_window, 1); }
void launch_about(Widget w, XtPointer closure, XtPointer call_data) { DeclareArgs(10); Widget form, icon, ok; Position x, y; char info[400]; /* turn off Compose key LED */ setCompLED(0); /* don't make more than one */ if (!help_popup) { /* get the position of the help button */ XtTranslateCoords(w, (Position) 0, (Position) 0, &x, &y); FirstArg(XtNx, x); NextArg(XtNy, y); help_popup = XtCreatePopupShell("About Xfig",transientShellWidgetClass, tool, Args, ArgCount); XtOverrideTranslations(help_popup, XtParseTranslationTable(about_translations)); XtAppAddActions(tool_app, about_actions, XtNumber(about_actions)); FirstArg(XtNborderWidth, 0); form = XtCreateManagedWidget("help_form", formWidgetClass, help_popup, Args, ArgCount); /* put the xfig icon in a label and another label saying which version this is */ FirstArg(XtNbitmap, fig_icon); NextArg(XtNinternalHeight, 0); NextArg(XtNinternalWidth, 0); NextArg(XtNborderWidth, 0); icon = XtCreateManagedWidget("xfig_icon", labelWidgetClass, form, Args, ArgCount); /* make up some information */ strcpy(info,xfig_version); strcat(info,"\n Parts Copyright \251 1989-2013 by Brian V. Smith ([email protected])"); strcat(info,"\n Parts Copyright \251 1991 by Paul King"); strcat(info,"\n Copyright \251 1985-1988 by Supoj Sutanthavibul"); strcat(info,"\n See source files and man pages for other copyrights"); FirstArg(XtNlabel, info); NextArg(XtNfromHoriz, icon); NextArg(XtNhorizDistance, 20); NextArg(XtNborderWidth, 0); XtCreateManagedWidget("xfig_icon", labelWidgetClass, form, Args, ArgCount); FirstArg(XtNlabel, " Ok "); NextArg(XtNwidth, 50); NextArg(XtNheight, 30); NextArg(XtNfromVert, icon); NextArg(XtNvertDistance, 20); ok = XtCreateManagedWidget("help_ok", commandWidgetClass, form, Args, ArgCount); XtAddCallback(ok, XtNcallback, help_ok, (XtPointer) NULL); } XtPopup(help_popup,XtGrabNone); (void) XSetWMProtocols(tool_d, XtWindow(help_popup), &wm_delete_window, 1); }
void setup_fontmenu(void) { register int i; DeclareArgs(2); Pixel bg, fg; /* get the foreground/background of the widget */ FirstArg(XtNforeground, &fg); NextArg(XtNbackground, &bg); GetValues(ps_fontpane[0]); /* Create the bitmaps */ #ifdef I18N if (appres.international) { char *lang; lang = appres.font_menu_language; if (lang[0] == '\0') lang = setlocale(LC_CTYPE, NULL); if (strncasecmp(lang, "japanese", 2) == 0) { extern unsigned char Japanese_Times_Roman_bits[], Japanese_Roman_bits[]; extern unsigned char Japanese_Times_Bold_bits[], Japanese_Bold_bits[]; psfont_menu_bits[1] = Japanese_Times_Roman_bits; latexfont_menu_bits[1] = Japanese_Roman_bits; psfont_menu_bits[3] = Japanese_Times_Bold_bits; latexfont_menu_bits[2] = Japanese_Bold_bits; } else if (strncasecmp(lang, "korean", 2) == 0) { extern unsigned char Korean_Times_Roman_bits[], Korean_Roman_bits[]; extern unsigned char Korean_Times_Bold_bits[], Korean_Bold_bits[]; psfont_menu_bits[1] = Korean_Times_Roman_bits; latexfont_menu_bits[1] = Korean_Roman_bits; psfont_menu_bits[3] = Korean_Times_Bold_bits; latexfont_menu_bits[2] = Korean_Bold_bits; } } #endif /* I18N */ for (i = 0; i < NUM_FONTS + 1; i++) psfont_menu_bitmaps[i] = XCreatePixmapFromBitmapData(tool_d, XtWindow(ind_panel), (char *) psfont_menu_bits[i], PS_FONTPANE_WD, PS_FONTPANE_HT, fg, bg, tool_dpth); for (i = 0; i < NUM_LATEX_FONTS; i++) latexfont_menu_bitmaps[i] = XCreatePixmapFromBitmapData(tool_d, XtWindow(ind_panel), (char *) latexfont_menu_bits[i], LATEX_FONTPANE_WD, LATEX_FONTPANE_HT, fg, bg, tool_dpth); /* Store the bitmaps in the menu panes */ for (i = 0; i < NUM_FONTS + 1; i++) { FirstArg(XtNbitmap, psfont_menu_bitmaps[i]); SetValues(ps_fontpane[i]); } for (i = 0; i < NUM_LATEX_FONTS; i++) { FirstArg(XtNbitmap, latexfont_menu_bitmaps[i]); SetValues(latex_fontpane[i]); } XtRealizeWidget(ps_fontmenu); XtRealizeWidget(latex_fontmenu); /* at this point the windows are realized but not drawn */ XDefineCursor(tool_d, XtWindow(ps_fontpanes), arrow_cursor); XDefineCursor(tool_d, XtWindow(latex_fontpanes), arrow_cursor); }