static void datetime_font_selection_cb(GtkWidget *widget, gpointer data) { DatetimePlugin *datetime; GtkWidget *dialog; gint result; g_return_if_fail (data != NULL); datetime = (DatetimePlugin*)data; dialog = gtk_font_selection_dialog_new("Select font"); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dialog), datetime->font); gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(dialog), gtk_label_get_text(GTK_LABEL(datetime->label))); result = gtk_dialog_run(GTK_DIALOG(dialog)); if (result == GTK_RESPONSE_OK || result == GTK_RESPONSE_ACCEPT) { gchar *font_name; font_name = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dialog)); if (font_name != NULL) gtk_button_set_label(GTK_BUTTON(widget), font_name); } gtk_widget_destroy(dialog); }
//フォントを設定する void set_font(void) { GtkWidget *font_dialog = gtk_font_selection_dialog_new("フォント"); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_dialog), font_name); gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(font_dialog), "abcdefghij ABCDEFGHIJ あいうえお"); gtk_dialog_set_default_response(GTK_DIALOG(font_dialog), GTK_RESPONSE_OK); if (gtk_dialog_run(GTK_DIALOG(font_dialog)) == GTK_RESPONSE_OK) { char *name = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(font_dialog)); strcpy(font_name, name); gtk_widget_modify_font(view, pango_font_description_from_string(name)); free(name); } gtk_widget_destroy(font_dialog); }
/* Sets the text displayed in the preview area. */ int clip_GTK_FONTSELECTIONDIALOGSETPREVIEWTEXT(ClipMachine * ClipMachineMemory) { C_widget *cfsel = _fetch_cw_arg(ClipMachineMemory); gchar *preview_text = _clip_parc(ClipMachineMemory, 2); CHECKCWID(cfsel, GTK_IS_FONT_SELECTION_DIALOG); CHECKOPT(2, CHARACTER_type_of_ClipVarType); if (_clip_parinfo(ClipMachineMemory, 2) == UNDEF_type_of_ClipVarType) preview_text = "\0"; LOCALE_TO_UTF(preview_text); gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(cfsel->widget), preview_text); FREE_TEXT(preview_text); return 0; err: return 1; }
static int gtkFontDlgPopup(Ihandle* ih, int x, int y) { InativeHandle* parent = iupDialogGetNativeParent(ih); GtkFontSelectionDialog* dialog; int response; char* preview_text, *standardfont; iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ iupAttribSetInt(ih, "_IUPDLG_Y", y); dialog = (GtkFontSelectionDialog*)gtk_font_selection_dialog_new(iupgtkStrConvertToUTF8(iupAttribGet(ih, "TITLE"))); if (!dialog) return IUP_ERROR; if (parent) gtk_window_set_transient_for((GtkWindow*)dialog, (GtkWindow*)parent); standardfont = iupAttribGet(ih, "VALUE"); if (!standardfont) standardfont = IupGetGlobal("DEFAULTFONT"); gtk_font_selection_dialog_set_font_name(dialog, standardfont); preview_text = iupAttribGet(ih, "PREVIEWTEXT"); if (preview_text) gtk_font_selection_dialog_set_preview_text(dialog, preview_text); if (IupGetCallback(ih, "HELP_CB")) gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP); /* initialize the widget */ gtk_widget_realize(GTK_WIDGET(dialog)); ih->handle = GTK_WIDGET(dialog); iupDialogUpdatePosition(ih); ih->handle = NULL; do { response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_HELP) { Icallback cb = IupGetCallback(ih, "HELP_CB"); if (cb && cb(ih) == IUP_CLOSE) response = GTK_RESPONSE_CANCEL; } } while (response == GTK_RESPONSE_HELP); if (response == GTK_RESPONSE_OK) { char* fontname = gtk_font_selection_dialog_get_font_name(dialog); iupAttribStoreStr(ih, "VALUE", fontname); g_free(fontname); iupAttribSetStr(ih, "STATUS", "1"); } else { iupAttribSetStr(ih, "VALUE", NULL); iupAttribSetStr(ih, "STATUS", NULL); } gtk_widget_destroy(GTK_WIDGET(dialog)); return IUP_NOERROR; }
static void on_setup_fonts_button_clicked(GtkWidget *widget, COption *parent) { GtkWidget *dlg; gint result; gchar *font_name; if (widget==parent->font_button1) { dlg = gtk_font_selection_dialog_new(_("Choose the normal english font")); gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (parent->window)); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dlg),gtk_button_get_label(GTK_BUTTON(widget))); gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(dlg),"Normal english font"); result = gtk_dialog_run (GTK_DIALOG (dlg)); switch (result) { case GTK_RESPONSE_OK: font_name = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dlg)); if (font_name) { gtk_button_set_label(GTK_BUTTON(widget),font_name); rw_cfg_write_string (usercfgfile, "reciteword", "normal_english_font", font_name); } break; default: break; } gtk_widget_destroy (dlg); } else if (widget==parent->font_button2) { dlg = gtk_font_selection_dialog_new(_("Choose the big english font")); gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (parent->window)); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dlg),gtk_button_get_label(GTK_BUTTON(widget))); gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(dlg),"Big english font"); result = gtk_dialog_run (GTK_DIALOG (dlg)); switch (result) { case GTK_RESPONSE_OK: font_name = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dlg)); if (font_name) { gtk_button_set_label(GTK_BUTTON(widget),font_name); rw_cfg_write_string (usercfgfile, "reciteword", "big_english_font", font_name); } break; default: break; } gtk_widget_destroy (dlg); } else if (widget==parent->font_button3) { dlg = gtk_font_selection_dialog_new(_("Choose the local language font")); gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (parent->window)); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dlg),gtk_button_get_label(GTK_BUTTON(widget))); gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(dlg),_("Local language font")); result = gtk_dialog_run (GTK_DIALOG (dlg)); switch (result) { case GTK_RESPONSE_OK: font_name = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dlg)); if (font_name) { gtk_button_set_label(GTK_BUTTON(widget),font_name); rw_cfg_write_string (usercfgfile, "reciteword", "local_language_font", font_name); } break; default: break; } gtk_widget_destroy (dlg); } }
static int gtkFontDlgPopup(Ihandle* ih, int x, int y) { InativeHandle* parent = iupDialogGetNativeParent(ih); GtkWidget* dialog; int response; char* preview_text, *standardfont; iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ iupAttribSetInt(ih, "_IUPDLG_Y", y); #if GTK_CHECK_VERSION(3, 2, 0) dialog = gtk_font_chooser_dialog_new(iupgtkStrConvertToSystem(iupAttribGet(ih, "TITLE")), GTK_WINDOW(parent)); #else dialog = gtk_font_selection_dialog_new(iupgtkStrConvertToSystem(iupAttribGet(ih, "TITLE"))); #endif if (!dialog) return IUP_ERROR; #if !GTK_CHECK_VERSION(3, 2, 0) if (parent) gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); #endif standardfont = iupAttribGet(ih, "VALUE"); if (!standardfont) standardfont = IupGetGlobal("DEFAULTFONT"); #if GTK_CHECK_VERSION(3, 2, 0) gtk_font_chooser_set_font(GTK_FONT_CHOOSER(dialog), standardfont); #else gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dialog), standardfont); #endif preview_text = iupAttribGet(ih, "PREVIEWTEXT"); if (preview_text) { preview_text = iupgtkStrConvertToSystem(preview_text); #if GTK_CHECK_VERSION(3, 2, 0) if (iupStrEqualNoCase(preview_text, "NONE")) gtk_font_chooser_set_show_preview_entry(GTK_FONT_CHOOSER(dialog), FALSE); else gtk_font_chooser_set_preview_text(GTK_FONT_CHOOSER(dialog), preview_text); #else gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(dialog), preview_text); #endif } if (IupGetCallback(ih, "HELP_CB")) { #if GTK_CHECK_VERSION(3, 10, 0) const char* help = "_Help"; #else const char* help = GTK_STOCK_HELP; #endif gtk_dialog_add_button(GTK_DIALOG(dialog), help, GTK_RESPONSE_HELP); } /* initialize the widget */ gtk_widget_realize(GTK_WIDGET(dialog)); ih->handle = GTK_WIDGET(dialog); iupDialogUpdatePosition(ih); ih->handle = NULL; do { response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_HELP) { Icallback cb = IupGetCallback(ih, "HELP_CB"); if (cb && cb(ih) == IUP_CLOSE) response = GTK_RESPONSE_CANCEL; } } while (response == GTK_RESPONSE_HELP); if (response == GTK_RESPONSE_OK) { #if GTK_CHECK_VERSION(3, 2, 0) char* fontname = gtk_font_chooser_get_font(GTK_FONT_CHOOSER(dialog)); #else char* fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dialog)); #endif iupAttribSetStr(ih, "VALUE", fontname); g_free(fontname); iupAttribSet(ih, "STATUS", "1"); } else { iupAttribSet(ih, "VALUE", NULL); iupAttribSet(ih, "STATUS", NULL); } gtk_widget_destroy(GTK_WIDGET(dialog)); return IUP_NOERROR; }