X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkfontchooserdialog.c;h=67244407c4ed6149c7ecda65bf1c4ca617ab4755;hb=bda5987335b8c7828ebf1d289a91accfe2e74dbe;hp=9d11292a132ad11d4fcf83f38366646ab9d3d197;hpb=5c5cdf23a8353eca5f5ea34e2b9ccb697fe17b14;p=~andy%2Fgtk diff --git a/gtk/gtkfontchooserdialog.c b/gtk/gtkfontchooserdialog.c index 9d11292a1..67244407c 100644 --- a/gtk/gtkfontchooserdialog.c +++ b/gtk/gtkfontchooserdialog.c @@ -12,9 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ #include "config.h" @@ -27,6 +25,9 @@ #include "gtkfontchooserdialog.h" #include "gtkfontchooser.h" +#include "gtkfontchooserwidget.h" +#include "gtkfontchooserutils.h" +#include "gtkbox.h" #include "gtkstock.h" #include "gtkintl.h" #include "gtkaccessible.h" @@ -43,26 +44,18 @@ struct _GtkFontChooserDialogPrivate }; /** - * SECTION:gtkfontchooserdlg - * @Short_description: A dialog box for selecting fonts + * SECTION:gtkfontchooserdialog + * @Short_description: A dialog for selecting fonts * @Title: GtkFontChooserDialog * @See_also: #GtkFontChooser, #GtkDialog * - * The #GtkFontChooserDialog widget is a dialog box for selecting a font. - * - * To set the font which is initially selected, use - * gtk_font_chooser_dialog_set_font_name(). - * - * To get the selected font use gtk_font_chooser_dialog_get_font_name(). - * - * To change the text which is shown in the preview area, use - * gtk_font_chooser_dialog_set_preview_text(). + * The #GtkFontChooserDialog widget is a dialog for selecting a font. + * It implements the #GtkFontChooser interface. * * * GtkFontChooserDialog as GtkBuildable * The GtkFontChooserDialog implementation of the GtkBuildable interface - * exposes the embedded #GtkFontChooser as internal child with the - * name "font_chooser". It also exposes the buttons with the names + * exposes the buttons with the names * "select_button" and "cancel_button. * * @@ -75,17 +68,70 @@ static GObject *gtk_font_chooser_dialog_buildable_get_internal_child (GtkBuildab const gchar *childname); G_DEFINE_TYPE_WITH_CODE (GtkFontChooserDialog, gtk_font_chooser_dialog, GTK_TYPE_DIALOG, + G_IMPLEMENT_INTERFACE (GTK_TYPE_FONT_CHOOSER, + _gtk_font_chooser_delegate_iface_init) G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_font_chooser_dialog_buildable_interface_init)) + gtk_font_chooser_dialog_buildable_interface_init)) static GtkBuildableIface *parent_buildable_iface; +static void +gtk_font_chooser_dialog_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkFontChooserDialog *dialog = GTK_FONT_CHOOSER_DIALOG (object); + GtkFontChooserDialogPrivate *priv = dialog->priv; + + switch (prop_id) + { + default: + g_object_set_property (G_OBJECT (priv->fontchooser), pspec->name, value); + break; + } +} + +static void +gtk_font_chooser_dialog_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkFontChooserDialog *dialog = GTK_FONT_CHOOSER_DIALOG (object); + GtkFontChooserDialogPrivate *priv = dialog->priv; + + switch (prop_id) + { + default: + g_object_get_property (G_OBJECT (priv->fontchooser), pspec->name, value); + break; + } +} + static void gtk_font_chooser_dialog_class_init (GtkFontChooserDialogClass *klass) { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->get_property = gtk_font_chooser_dialog_get_property; + gobject_class->set_property = gtk_font_chooser_dialog_set_property; + + _gtk_font_chooser_install_properties (gobject_class); + g_type_class_add_private (klass, sizeof (GtkFontChooserDialogPrivate)); } +static void +font_activated_cb (GtkFontChooser *fontchooser, + const gchar *fontname, + gpointer user_data) +{ + GtkDialog *dialog = user_data; + + gtk_dialog_response (dialog, GTK_RESPONSE_OK); +} + static void gtk_font_chooser_dialog_init (GtkFontChooserDialog *fontchooserdiag) { @@ -111,12 +157,15 @@ gtk_font_chooser_dialog_init (GtkFontChooserDialog *fontchooserdiag) gtk_window_set_resizable (GTK_WINDOW (fontchooserdiag), TRUE); /* Create the content area */ - priv->fontchooser = gtk_font_chooser_new (); + priv->fontchooser = gtk_font_chooser_widget_new (); gtk_container_set_border_width (GTK_CONTAINER (priv->fontchooser), 5); gtk_widget_show (priv->fontchooser); gtk_box_pack_start (GTK_BOX (content_area), priv->fontchooser, TRUE, TRUE, 0); + g_signal_connect (priv->fontchooser, "font-activated", + G_CALLBACK (font_activated_cb), dialog); + /* Create the action area */ priv->cancel_button = gtk_dialog_add_button (dialog, GTK_STOCK_CANCEL, @@ -127,19 +176,22 @@ gtk_font_chooser_dialog_init (GtkFontChooserDialog *fontchooserdiag) gtk_widget_grab_default (priv->select_button); gtk_dialog_set_alternative_button_order (GTK_DIALOG (fontchooserdiag), - GTK_RESPONSE_OK, - GTK_RESPONSE_CANCEL, - -1); + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); gtk_window_set_title (GTK_WINDOW (fontchooserdiag), _("Font Selection")); gtk_widget_pop_composite_child (); + + _gtk_font_chooser_set_delegate (GTK_FONT_CHOOSER (fontchooserdiag), + GTK_FONT_CHOOSER (priv->fontchooser)); } /** * gtk_font_chooser_dialog_new: * @title: (allow-none): Title of the dialog, or %NULL - * @parent: (allow-none): Trasient parent of the dialog, or %NULL + * @parent: (allow-none): Transient parent of the dialog, or %NULL * * Creates a new #GtkFontChooserDialog. * @@ -161,24 +213,6 @@ gtk_font_chooser_dialog_new (const gchar *title, return GTK_WIDGET (dialog); } -/** - * gtk_font_chooser_dialog_get_font_chooser: - * @fcd: a #GtkFontChooserDialog - * - * Retrieves the #GtkFontChooser widget embedded in the dialog. - * - * Returns: (transfer none): the embedded #GtkFontChooser - * - * Since: 3.2 - */ -GtkWidget* -gtk_font_chooser_dialog_get_font_chooser (GtkFontChooserDialog *fcd) -{ - g_return_val_if_fail (GTK_IS_FONT_CHOOSER_DIALOG (fcd), NULL); - - return fcd->priv->fontchooser; -} - static void gtk_font_chooser_dialog_buildable_interface_init (GtkBuildableIface *iface) { @@ -199,113 +233,6 @@ gtk_font_chooser_dialog_buildable_get_internal_child (GtkBuildable *buildable, return G_OBJECT (priv->select_button); else if (g_strcmp0 (childname, "cancel_button") == 0) return G_OBJECT (priv->cancel_button); - else if (g_strcmp0 (childname, "font_chooser") == 0) - return G_OBJECT (priv->fontchooser); return parent_buildable_iface->get_internal_child (buildable, builder, childname); } - -/** - * gtk_font_chooser_dialog_get_font_name: - * @fcd: a #GtkFontChooserDialog - * - * Gets the currently-selected font name. - * - * Note that this can be a different string than what you set with - * gtk_font_chooser_dialog_set_font_name(), as the font chooser widget - * may normalize font names and thus return a string with a different - * structure. For example, "Helvetica Italic Bold 12" could be normalized - * to "Helvetica Bold Italic 12". - * - * Use pango_font_description_equal() if you want to compare two - * font descriptions. - * - * Return value: A string with the name of the current font, or %NULL - * if no font is selected. You must free this string with g_free(). - * - * Since: 3.2 - */ -gchar* -gtk_font_chooser_dialog_get_font_name (GtkFontChooserDialog *fcd) -{ - GtkFontChooserDialogPrivate *priv; - - g_return_val_if_fail (GTK_IS_FONT_CHOOSER_DIALOG (fcd), NULL); - - priv = fcd->priv; - - return gtk_font_chooser_get_font_name (GTK_FONT_CHOOSER (priv->fontchooser)); -} - -/** - * gtk_font_chooser_dialog_set_font_name: - * @fcd: a #GtkFontChooserDialog - * @fontname: a font name like "Helvetica 12" or "Times Bold 18" - * - * Sets the currently selected font. - * - * Return value: %TRUE if the font selected in @fcd is now the - * @fontname specified, %FALSE otherwise. - * - * Since: 3.2 - */ -gboolean -gtk_font_chooser_dialog_set_font_name (GtkFontChooserDialog *fcd, - const gchar *fontname) -{ - GtkFontChooserDialogPrivate *priv; - - g_return_val_if_fail (GTK_IS_FONT_CHOOSER_DIALOG (fcd), FALSE); - g_return_val_if_fail (fontname, FALSE); - - priv = fcd->priv; - - return gtk_font_chooser_set_font_name (GTK_FONT_CHOOSER (priv->fontchooser), fontname); -} - -/** - * gtk_font_chooser_dialog_get_preview_text: - * @fcd: a #GtkFontChooserDialog - * - * Gets the text displayed in the preview area. - * - * Return value: the text displayed in the preview area. - * This string is owned by the widget and should not be - * modified or freed - * - * Since: 3.2 - */ -const gchar* -gtk_font_chooser_dialog_get_preview_text (GtkFontChooserDialog *fcd) -{ - GtkFontChooserDialogPrivate *priv; - - g_return_val_if_fail (GTK_IS_FONT_CHOOSER_DIALOG (fcd), NULL); - - priv = fcd->priv; - - return gtk_font_chooser_get_preview_text (GTK_FONT_CHOOSER (priv->fontchooser)); -} - -/** - * gtk_font_chooser_dialog_set_preview_text: - * @fcd: a #GtkFontChooserDialog - * @text: the text to display in the preview area - * - * Sets the text displayed in the preview area. - * - * Since: 3.2 - */ -void -gtk_font_chooser_dialog_set_preview_text (GtkFontChooserDialog *fcd, - const gchar *text) -{ - GtkFontChooserDialogPrivate *priv; - - g_return_if_fail (GTK_IS_FONT_CHOOSER_DIALOG (fcd)); - g_return_if_fail (text != NULL); - - priv = fcd->priv; - - gtk_font_chooser_set_preview_text (GTK_FONT_CHOOSER (priv->fontchooser), text); -}