static void onTimerFontSelectClick(GtkWidget *widget, gpointer data) { /* Unused parameters. */ (void)widget; (void)data; GtkWidget *fontChooser = NULL; PangoFontDescription *font_desc = NULL; fontChooser = gtk_font_chooser_dialog_new("Select Timer Font", NULL); gtk_font_chooser_set_font( GTK_FONT_CHOOSER(fontChooser), prefs.font_timer); if (gtk_dialog_run(GTK_DIALOG(fontChooser)) == GTK_RESPONSE_OK) { if (prefs.font_timer != NULL) g_free(prefs.font_timer); prefs.font_timer = gtk_font_chooser_get_font( GTK_FONT_CHOOSER(fontChooser)); font_desc = pango_font_description_from_string(prefs.font_timer); gtk_widget_modify_font(timeElapsedLabel, font_desc); pango_font_description_free(font_desc); } gtk_widget_destroy(fontChooser); }
int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *box; GtkWidget *fontchooser; gtk_init (); fontchooser = gtk_font_chooser_widget_new (); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (window, 600, 600); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_container_add (GTK_CONTAINER (window), box); gtk_container_add (GTK_CONTAINER (box), fontchooser); gtk_widget_show (window); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (fontchooser, "notify::font", G_CALLBACK (notify_font_cb), NULL); g_signal_connect (fontchooser, "notify::preview-text", G_CALLBACK (notify_preview_text_cb), NULL); g_signal_connect (fontchooser, "font-activated", G_CALLBACK (font_activated_cb), NULL); gtk_font_chooser_set_font (GTK_FONT_CHOOSER (fontchooser), "Bitstream Vera Sans 45"); gtk_font_chooser_set_preview_text (GTK_FONT_CHOOSER (fontchooser), "[user@host ~]$ &>>"); gtk_font_chooser_set_show_preview_entry (GTK_FONT_CHOOSER (fontchooser), FALSE); gtk_main (); return 0; }
static gboolean font_fetch(void) { gchar *font_name; #if GTK_CHECK_VERSION(3,2,0) font_name = g_strdup(gtk_font_chooser_get_font( GTK_FONT_CHOOSER(font_browse_w))); #else font_name = g_strdup(gtk_font_selection_get_font_name( GTK_FONT_SELECTION(font_browse_w))); #endif /* GTK_CHECK_VERSION(3,2,0) */ if (font_name == NULL) { /* No font was selected; let the user know, but don't tear down the font selection dialog, so they can try again. */ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "You have not selected a font."); return FALSE; } if (!user_font_test(font_name)) { /* The font isn't usable; "user_font_test()" has already told the user why. Don't tear down the font selection dialog. */ g_free(font_name); return FALSE; } new_font_name = font_name; return TRUE; }
static void update (void) { GString *s; char *font_desc; char *font_settings; const char *text; gboolean has_feature; int i; text = gtk_entry_get_text (GTK_ENTRY (entry)); font_desc = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (font)); s = g_string_new (""); has_feature = FALSE; for (i = 0; i < 24; i++) { if (!gtk_widget_is_sensitive (toggle[i])) continue; if (GTK_IS_RADIO_BUTTON (toggle[i])) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle[i]))) { if (has_feature) g_string_append (s, ", "); g_string_append (s, gtk_buildable_get_name (GTK_BUILDABLE (toggle[i]))); g_string_append (s, " 1"); has_feature = TRUE; } } else { if (has_feature) g_string_append (s, ", "); g_string_append (s, gtk_buildable_get_name (GTK_BUILDABLE (toggle[i]))); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle[i]))) g_string_append (s, " 1"); else g_string_append (s, " 0"); has_feature = TRUE; } } font_settings = g_string_free (s, FALSE); gtk_label_set_text (GTK_LABEL (settings), font_settings); s = g_string_new (""); g_string_append_printf (s, "<span font_desc='%s' font_features='%s'>%s</span>", font_desc, font_settings, text); gtk_label_set_markup (GTK_LABEL (label), s->str); g_string_free (s, TRUE); g_free (font_desc); g_free (font_settings); }
int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *font_button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); font_button = gtk_font_button_new (); gtk_container_add (GTK_CONTAINER (window), font_button); gtk_widget_show_all (window); g_signal_connect (font_button, "notify::font", G_CALLBACK (notify_font_cb), NULL); g_signal_connect (font_button, "notify::preview-text", G_CALLBACK (notify_preview_text_cb), NULL); g_signal_connect (font_button, "font-activated", G_CALLBACK (font_activated_cb), NULL); if (argc >= 2 && strcmp (argv[1], "--monospace") == 0) { gtk_font_chooser_set_filter_func (GTK_FONT_CHOOSER (font_button), monospace_filter, NULL, NULL); } g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL); gtk_main (); return 0; }
static void font_changed (GObject *object, GParamSpec *pspec, gpointer data) { GtkFontChooser *fb = GTK_FONT_CHOOSER (data); GValue val = G_VALUE_INIT; const PangoFontDescription *font_desc; PangoFontDescription *fb_font_desc; g_value_init (&val, PANGO_TYPE_FONT_DESCRIPTION); get_property_value (object, pspec, &val); font_desc = g_value_get_boxed (&val); fb_font_desc = gtk_font_chooser_get_font_desc (fb); if (font_desc == NULL || (fb_font_desc != NULL && !pango_font_description_equal (fb_font_desc, font_desc))) { block_controller (G_OBJECT (fb)); gtk_font_chooser_set_font_desc (fb, font_desc); unblock_controller (G_OBJECT (fb)); } g_value_unset (&val); pango_font_description_free (fb_font_desc); }
static gchar * gnm_font_button_get_preview_text (GnmFontButton *font_button) { GnmFontButtonPrivate *priv = font_button->priv; if (priv->font_dialog) return gtk_font_chooser_get_preview_text (GTK_FONT_CHOOSER (priv->font_dialog)); return g_strdup (priv->preview_text); }
static gboolean gnm_font_button_get_show_preview_entry (GnmFontButton *font_button) { GnmFontButtonPrivate *priv = font_button->priv; if (priv->font_dialog) return gtk_font_chooser_get_show_preview_entry (GTK_FONT_CHOOSER (priv->font_dialog)); return priv->show_preview_entry; }
static void gnm_font_button_set_show_preview_entry (GnmFontButton *font_button, gboolean show) { GnmFontButtonPrivate *priv = font_button->priv; if (priv->font_dialog) gtk_font_chooser_set_show_preview_entry (GTK_FONT_CHOOSER (priv->font_dialog), show); else priv->show_preview_entry = show != FALSE; }
void x_font_select_callback (GtkWidget * widget, gpointer data) { XEditor * xeditor = (XEditor *)data; GtkResponseType answer; PangoFontDescription * font_desc; GtkWidget * dialog = gtk_font_chooser_dialog_new ("- EditroX - Font Selector -", GTK_WINDOW(xeditor->win->window)); gtk_font_chooser_set_preview_text (GTK_FONT_CHOOSER(dialog), "EditorX is the best text editor than ever."); answer = gtk_dialog_run(GTK_DIALOG(dialog)); if(answer == GTK_RESPONSE_OK) { font_desc = gtk_font_chooser_get_font_desc (GTK_FONT_CHOOSER(dialog)); x_scrolled_set_font_desc (xeditor->scrolled, font_desc); gtk_widget_override_font (GTK_WIDGET(x_scrolled_get_source_view (xeditor->scrolled)), x_scrolled_get_font_description (xeditor->scrolled)); x_toolbar_set_font_desc (xeditor->toolbar, pango_font_description_to_string (x_scrolled_get_font_description (xeditor->scrolled))); } gtk_widget_destroy(dialog); }
static void termomix_font_dialog (GtkWidget *widget, void *data) { GtkWidget *font_dialog; gint response; font_dialog=gtk_font_chooser_dialog_new(gettext("Select font"), GTK_WINDOW(termomix.main_window)); gtk_font_chooser_set_font_desc(GTK_FONT_CHOOSER(font_dialog), termomix.font); response=gtk_dialog_run(GTK_DIALOG(font_dialog)); if (response==GTK_RESPONSE_OK) { pango_font_description_free(termomix.font); termomix.font=gtk_font_chooser_get_font_desc(GTK_FONT_CHOOSER(font_dialog)); termomix_set_font(); termomix_set_size(termomix.columns, termomix.rows); termomix_set_config_string("font", pango_font_description_to_string(termomix.font)); } gtk_widget_destroy(font_dialog); }
void select_font(gpointer parent) { GtkWidget* dialog = gtk_font_chooser_dialog_new("Font", GTK_WINDOW(parent)); gtk_dialog_run(GTK_DIALOG (dialog)); PangoFontDescription *font_desc = gtk_font_chooser_get_font_desc(GTK_FONT_CHOOSER(dialog)); if (font_desc) gtk_widget_modify_font(gres.view_chat, font_desc); gtk_widget_destroy(dialog); }
void on_font_select_activate (GtkAction * menuitem, gpointer user_data) { GtkWidget *font_selection_dialog = NULL; const gchar *font_name = gui_editor_get_font (app->editor); gint action = 0; g_assert (app->editor); font_selection_dialog = gtk_font_chooser_dialog_new (_("Select font"), NULL); gtk_font_chooser_set_font (GTK_FONT_CHOOSER (font_selection_dialog), font_name); action = gtk_dialog_run (GTK_DIALOG (font_selection_dialog)); switch (action) { case GTK_RESPONSE_OK: font_name = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (font_selection_dialog)); if (font_name) { gui_editor_set_font (app->editor, font_name); } break; default: break; } gtk_widget_destroy(font_selection_dialog); }
static void gtk_font_button_set_show_preview_entry (GtkFontButton *font_button, gboolean show) { GtkFontButtonPrivate *priv = font_button->priv; show = show != FALSE; if (priv->show_preview_entry != show) { priv->show_preview_entry = show; if (priv->font_dialog) gtk_font_chooser_set_show_preview_entry (GTK_FONT_CHOOSER (priv->font_dialog), show); g_object_notify (G_OBJECT (font_button), "show-preview-entry"); } }
static void gnm_font_button_set_preview_text (GnmFontButton *font_button, const gchar *preview_text) { GnmFontButtonPrivate *priv = font_button->priv; if (priv->font_dialog) { gtk_font_chooser_set_preview_text (GTK_FONT_CHOOSER (priv->font_dialog), preview_text); return; } g_free (priv->preview_text); priv->preview_text = g_strdup (preview_text); }
static void response_cb (GtkDialog *dialog, gint response_id, gpointer data) { GnmFontButton *font_button = GNM_FONT_BUTTON (data); GnmFontButtonPrivate *priv = font_button->priv; GtkFontChooser *font_chooser; GObject *object; gtk_widget_hide (font_button->priv->font_dialog); if (response_id != GTK_RESPONSE_OK) return; font_chooser = GTK_FONT_CHOOSER (priv->font_dialog); object = G_OBJECT (font_chooser); g_object_freeze_notify (object); clear_font_data (font_button); priv->font_desc = gtk_font_chooser_get_font_desc (font_chooser); if (priv->font_desc) priv->fontname = pango_font_description_to_string (priv->font_desc); priv->font_family = gtk_font_chooser_get_font_family (font_chooser); if (priv->font_family) g_object_ref (priv->font_family); priv->font_face = gtk_font_chooser_get_font_face (font_chooser); if (priv->font_face) g_object_ref (priv->font_face); priv->font_size = gtk_font_chooser_get_font_size (font_chooser); /* Set label font */ gnm_font_button_update_font_info (font_button); g_object_notify (G_OBJECT (font_button), "font"); g_object_notify (G_OBJECT (font_button), "font-desc"); g_object_notify (G_OBJECT (font_button), "font-name"); g_object_thaw_notify (object); /* Emit font_set signal */ g_signal_emit (font_button, font_button_signals[FONT_SET], 0); }
static void gnm_font_button_take_font_desc (GnmFontButton *font_button, PangoFontDescription *font_desc) { GnmFontButtonPrivate *priv = font_button->priv; GObject *object = G_OBJECT (font_button); if (priv->font_desc && font_desc && pango_font_description_equal (priv->font_desc, font_desc)) { pango_font_description_free (font_desc); return; } g_object_freeze_notify (object); clear_font_data (font_button); if (font_desc) priv->font_desc = font_desc; /* adopted */ else priv->font_desc = pango_font_description_from_string (_("Sans 12")); if (pango_font_description_get_size_is_absolute (priv->font_desc)) priv->font_size = pango_font_description_get_size (priv->font_desc); else priv->font_size = pango_font_description_get_size (priv->font_desc) / PANGO_SCALE; gnm_font_button_update_font_data (font_button); gnm_font_button_update_font_info (font_button); if (priv->font_dialog) gtk_font_chooser_set_font_desc (GTK_FONT_CHOOSER (priv->font_dialog), priv->font_desc); g_object_notify (G_OBJECT (font_button), "font"); g_object_notify (G_OBJECT (font_button), "font-desc"); g_object_notify (G_OBJECT (font_button), "font-name"); g_object_thaw_notify (object); }
void calendar_select_font (GtkWidget *button, CalendarData *calendar) { const char *font = NULL; GtkCssProvider *provider; gchar *data; if (calendar->window) { provider = g_object_get_data (G_OBJECT (calendar->window), "css-provider"); if (!provider) { provider = gtk_css_provider_new (); gtk_style_context_add_provider (gtk_widget_get_style_context (calendar->window), GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_set_data_full (G_OBJECT (calendar->window), "css-provider", provider, g_object_unref); } font = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (button)); data = g_strdup_printf ("GtkCalendar { font: %s; }", font); gtk_css_provider_load_from_data (provider, data, -1); g_free (data); } }
static void gnm_font_button_font_chooser_set_filter_func (GtkFontChooser *chooser, GtkFontFilterFunc filter_func, gpointer filter_data, GDestroyNotify data_destroy) { GnmFontButton *font_button = GNM_FONT_BUTTON (chooser); GnmFontButtonPrivate *priv = font_button->priv; if (priv->font_dialog) { gtk_font_chooser_set_filter_func (GTK_FONT_CHOOSER (priv->font_dialog), filter_func, filter_data, data_destroy); return; } clear_font_filter_data (font_button); priv->font_filter = filter_func; priv->font_filter_data = filter_data; priv->font_filter_data_destroy = data_destroy; }
GtkFontChooser* cast_GtkFontChooser(GtkWidget* widget) { return GTK_FONT_CHOOSER(widget); }
static void value_icon_activate (GtkCellRendererToggle *cell_renderer, gchar *path, GladeEPropAttrs *eprop_attrs) { GtkWidget *dialog; GtkTreeIter iter; PangoAttrType type; AttrEditType edit_type; GdkRGBA color = {0,}; gchar *text = NULL, *new_text; /* Find type etc */ if (!gtk_tree_model_get_iter_from_string (eprop_attrs->model, &iter, path)) return; gtk_tree_model_get (eprop_attrs->model, &iter, COLUMN_TEXT, &text, COLUMN_TYPE, &type, COLUMN_EDIT_TYPE, &edit_type, -1); /* Launch dialog etc. */ switch (edit_type) { case EDIT_COLOR: dialog = gtk_color_chooser_dialog_new (_("Select a color"), GTK_WINDOW (glade_app_get_window ())); /* Get response etc... */ if (text && gdk_rgba_parse (&color, text)) gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (dialog), &color); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color); /* Use GdkColor string format */ if (((guint8)(color.red * 0xFF)) * 0x101 == (guint16)(color.red * 0xFFFF) && ((guint8)(color.green * 0xFF)) * 0x101 == (guint16)(color.green * 0xFFFF) && ((guint8)(color.blue * 0xFF)) * 0x101 == (guint16)(color.blue * 0xFFFF)) new_text = g_strdup_printf ("#%02X%02X%02X", (guint8)(color.red * 0xFF), (guint8)(color.green * 0xFF), (guint8)(color.blue * 0xFF)); else new_text = g_strdup_printf ("#%04X%04X%04X", (guint16)(color.red * 0xFFFF), (guint16)(color.green * 0xFFFF), (guint16)(color.blue * 0xFFFF)); gtk_list_store_set (GTK_LIST_STORE (eprop_attrs->model), &iter, COLUMN_TEXT, new_text, COLUMN_NAME_WEIGHT, PANGO_WEIGHT_BOLD, COLUMN_TEXT_STYLE, PANGO_STYLE_NORMAL, COLUMN_TEXT_FG, "Black", -1); g_free (new_text); gtk_widget_destroy (dialog); break; case EDIT_FONT: dialog = gtk_font_chooser_dialog_new (_("Select a font"), GTK_WINDOW (glade_app_get_window ())); /* Get response etc... */ if (text) gtk_font_chooser_set_font (GTK_FONT_CHOOSER (dialog), text); gtk_dialog_run (GTK_DIALOG (dialog)); new_text = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (dialog)); gtk_list_store_set (GTK_LIST_STORE (eprop_attrs->model), &iter, COLUMN_TEXT, new_text, COLUMN_NAME_WEIGHT, PANGO_WEIGHT_BOLD, COLUMN_TEXT_STYLE, PANGO_STYLE_NORMAL, COLUMN_TEXT_FG, "Black", -1); g_free (new_text); gtk_widget_destroy (dialog); break; default: break; } sync_object (eprop_attrs, FALSE); g_free (text); }
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; }
static void notify_preview_text_cb (GObject *fontchooser, GParamSpec *pspec, gpointer data) { g_debug ("Changed preview text %s", gtk_font_chooser_get_preview_text (GTK_FONT_CHOOSER (fontchooser))); }
static void gnm_font_button_clicked (GtkButton *button) { GtkFontChooser *font_dialog; GnmFontButton *font_button = GNM_FONT_BUTTON (button); GnmFontButtonPrivate *priv = font_button->priv; if (!font_button->priv->font_dialog) { GtkWidget *parent; parent = gtk_widget_get_toplevel (GTK_WIDGET (font_button)); priv->font_dialog = g_object_new (priv->dialog_type, NULL); font_dialog = GTK_FONT_CHOOSER (font_button->priv->font_dialog); gtk_font_chooser_set_show_preview_entry (font_dialog, priv->show_preview_entry); if (priv->preview_text) { gtk_font_chooser_set_preview_text (font_dialog, priv->preview_text); g_free (priv->preview_text); priv->preview_text = NULL; } if (priv->font_filter) { gtk_font_chooser_set_filter_func (font_dialog, priv->font_filter, priv->font_filter_data, priv->font_filter_data_destroy); priv->font_filter = NULL; priv->font_filter_data = NULL; priv->font_filter_data_destroy = NULL; } if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent)) { if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (font_dialog))) gtk_window_set_transient_for (GTK_WINDOW (font_dialog), GTK_WINDOW (parent)); gtk_window_set_modal (GTK_WINDOW (font_dialog), gtk_window_get_modal (GTK_WINDOW (parent))); } g_signal_connect (font_dialog, "notify", G_CALLBACK (gnm_font_button_font_chooser_notify), button); g_signal_connect (font_dialog, "response", G_CALLBACK (response_cb), font_button); g_signal_connect (font_dialog, "destroy", G_CALLBACK (dialog_destroy), font_button); } if (!gtk_widget_get_visible (font_button->priv->font_dialog)) { font_dialog = GTK_FONT_CHOOSER (font_button->priv->font_dialog); gtk_font_chooser_set_font_desc (font_dialog, font_button->priv->font_desc); } gtk_window_present (GTK_WINDOW (font_button->priv->font_dialog)); }