diff --git a/ChangeLog b/ChangeLog index a7f236d2d8..259cfa2649 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-09-07 Matthias Clasen + + * gtk/gtkprintunixdialog.c: Add an internal child name for + the notebook, so that GtkBuilder can be used to add custom tabs. + (#472951, Christian Persch) + 2007-09-07 Matthias Clasen * gtk/updateiconcache.c (get_image_meta_data_size): Don't diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index d5065d2e6c..dc4ce0568f 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,7 @@ +2007-09-07 Matthias Clasen + + * gtk/tmpl/gtkprintunixdialog.sgml: Additions + 2007-09-06 Matthias Clasen * gdk-pixbuf/porting-from-imlib.sgml: diff --git a/docs/reference/gtk/tmpl/gtkprintunixdialog.sgml b/docs/reference/gtk/tmpl/gtkprintunixdialog.sgml index 111a28b1bc..cc1dbacaf5 100644 --- a/docs/reference/gtk/tmpl/gtkprintunixdialog.sgml +++ b/docs/reference/gtk/tmpl/gtkprintunixdialog.sgml @@ -39,6 +39,38 @@ gtk_print_job_new(). Printing support was added in GTK+ 2.10. +GtkPrintUnixDialog as GtkBuildable + +The GtkPrintUnixDialog implementation of the GtkBuildable interface exposes its +@notebook internal children with the name "notebook". + + +A <structname>GtkPrintUnixDialog</structname> UI definition fragment. + + + + + + Content on notebook tab + + + + + Tab label + + + False + False + + + + + +]]> + + + #GtkPageSetupUnixDialog, #GtkPrinter, #GtkPrintJob diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c index 66b65c8bdb..f5cc16809e 100644 --- a/gtk/gtkprintunixdialog.c +++ b/gtk/gtkprintunixdialog.c @@ -47,6 +47,7 @@ #include "gtkalignment.h" #include "gtklabel.h" #include "gtkeventbox.h" +#include "gtkbuildable.h" #include "gtkprintbackend.h" #include "gtkprinter-private.h" @@ -91,6 +92,12 @@ static gboolean dialog_get_collate (GtkPrintUnixDialog *dialog); static gboolean dialog_get_reverse (GtkPrintUnixDialog *dialog); static gint dialog_get_n_copies (GtkPrintUnixDialog *dialog); +/* GtkBuildable */ +static void gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface); +static GObject *gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable, + GtkBuilder *builder, + const gchar *childname); + enum { PROP_0, PROP_PAGE_SETUP, @@ -193,7 +200,11 @@ struct GtkPrintUnixDialogPrivate gint current_page; }; -G_DEFINE_TYPE (GtkPrintUnixDialog, gtk_print_unix_dialog, GTK_TYPE_DIALOG) +G_DEFINE_TYPE_WITH_CODE (GtkPrintUnixDialog, gtk_print_unix_dialog, GTK_TYPE_DIALOG, + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_print_unix_dialog_buildable_init)) + +static GtkBuildableIface *parent_buildable_iface; static gboolean is_default_printer (GtkPrintUnixDialog *dialog, @@ -390,6 +401,25 @@ printer_removed_cb (GtkPrintBackend *backend, gtk_list_store_remove (GTK_LIST_STORE (priv->printer_list), iter); } +static void +gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface) +{ + parent_buildable_iface = g_type_interface_peek_parent (iface); + + iface->get_internal_child = gtk_print_unix_dialog_buildable_get_internal_child; +} + +static GObject * +gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable, + GtkBuilder *builder, + const gchar *childname) +{ + if (strcmp (childname, "notebook") == 0) + return G_OBJECT (GTK_PRINT_UNIX_DIALOG (buildable)->priv->notebook); + + return parent_buildable_iface->get_internal_child (buildable, builder, childname); +} + static void printer_status_cb (GtkPrintBackend *backend, GtkPrinter *printer,