/** * gtk_font_button_set_font_name: * @font_button: a #GtkFontButton * @fontname: Name of font to display in font selection dialog * * Sets or updates the currently-displayed font in font picker dialog. * * Returns: Return value of gtk_font_selection_dialog_set_font_name() if the * font selection dialog exists, otherwise %FALSE. * * Since: 2.4 */ gboolean gtk_font_button_set_font_name (GtkFontButton *font_button, const gchar *fontname) { gboolean result; gchar *old_fontname; g_return_val_if_fail (GTK_IS_FONT_BUTTON (font_button), FALSE); g_return_val_if_fail (fontname != NULL, FALSE); if (g_ascii_strcasecmp (font_button->priv->fontname, fontname)) { old_fontname = font_button->priv->fontname; font_button->priv->fontname = g_strdup (fontname); g_free (old_fontname); } gtk_font_button_update_font_info (font_button); if (font_button->priv->font_dialog) result = gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (font_button->priv->font_dialog), font_button->priv->fontname); else result = FALSE; g_object_notify (G_OBJECT (font_button), "font-name"); return result; }
/** * gtk_font_button_set_show_style: * @font_button: a #GtkFontButton * @show_style: %TRUE if font style should be displayed in label. * * If @show_style is %TRUE, the font style will be displayed along with name of the selected font. * * Since: 2.4 */ void gtk_font_button_set_show_style (GtkFontButton *font_button, gboolean show_style) { g_return_if_fail (GTK_IS_FONT_BUTTON (font_button)); show_style = (show_style != FALSE); if (font_button->priv->show_style != show_style) { font_button->priv->show_style = show_style; gtk_font_button_update_font_info (font_button); g_object_notify (G_OBJECT (font_button), "show-style"); } }
static void response_cb (GtkDialog *dialog, gint response_id, gpointer data) { GtkFontButton *font_button = GTK_FONT_BUTTON (data); GtkFontButtonPrivate *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 */ gtk_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 dialog_ok_clicked (GtkWidget *widget, gpointer data) { GtkFontButton *font_button = GTK_FONT_BUTTON (data); gtk_widget_hide (font_button->priv->font_dialog); g_free (font_button->priv->fontname); font_button->priv->fontname = gtk_font_selection_dialog_get_font_name (GTK_FONT_SELECTION_DIALOG (font_button->priv->font_dialog)); /* Set label font */ gtk_font_button_update_font_info (font_button); g_object_notify (G_OBJECT (font_button), "font-name"); /* Emit font_set signal */ g_signal_emit (font_button, font_button_signals[FONT_SET], 0); }
static void gtk_font_button_init (GtkFontButton *font_button) { font_button->priv = GTK_FONT_BUTTON_GET_PRIVATE (font_button); /* Initialize fields */ font_button->priv->fontname = g_strdup (_("Sans 12")); font_button->priv->use_font = FALSE; font_button->priv->use_size = FALSE; font_button->priv->show_style = TRUE; font_button->priv->show_size = TRUE; font_button->priv->font_dialog = NULL; font_button->priv->title = g_strdup (_("Pick a Font")); font_button->priv->inside = gtk_font_button_create_inside (font_button); gtk_container_add (GTK_CONTAINER (font_button), font_button->priv->inside); gtk_font_button_update_font_info (font_button); }
static void gtk_font_button_take_font_desc (GtkFontButton *font_button, PangoFontDescription *font_desc) { GtkFontButtonPrivate *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; gtk_font_button_update_font_data (font_button); gtk_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); }
/** * gtk_font_button_set_show_size: * @font_button: a #GtkFontButton * @show_size: %TRUE if font size should be displayed in dialog. * * If @show_size is %TRUE, the font size will be displayed along with the name of the selected font. * * Since: 2.4 */ void gtk_font_button_set_show_size (GtkFontButton *font_button, gboolean show_size) { g_return_if_fail (GTK_IS_FONT_BUTTON (font_button)); show_size = (show_size != FALSE); if (font_button->priv->show_size != show_size) { font_button->priv->show_size = show_size; gtk_container_remove (GTK_CONTAINER (font_button), font_button->priv->inside); font_button->priv->inside = gtk_font_button_create_inside (font_button); gtk_container_add (GTK_CONTAINER (font_button), font_button->priv->inside); gtk_font_button_update_font_info (font_button); g_object_notify (G_OBJECT (font_button), "show-size"); } }
/** * gtk_font_button_set_show_size: * @font_button: a #GtkFontButton * @show_size: %TRUE if font size should be displayed in dialog. * * If @show_size is %TRUE, the font size will be displayed along with the name of the selected font. * * Since: 2.4 */ void gtk_font_button_set_show_size (GtkFontButton *font_button, gboolean show_size) { g_return_if_fail (GTK_IS_FONT_BUTTON (font_button)); show_size = (show_size != FALSE); if (font_button->priv->show_size != show_size) { font_button->priv->show_size = show_size; if (font_button->priv->show_size) gtk_widget_show (font_button->priv->font_size_box); else gtk_widget_hide (font_button->priv->font_size_box); gtk_font_button_update_font_info (font_button); g_object_notify (G_OBJECT (font_button), "show-size"); } }