diff options
author | Ryan Lortie <desrt@desrt.ca> | 2013-06-16 16:29:50 -0400 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2013-10-15 09:24:11 -0400 |
commit | 3f0b9a7574a48fcbdd57e13ccf4a298dc7fc007b (patch) | |
tree | d6092f015fdc23ec412d06e7236013e4d0dd9aee | |
parent | d967266b772f3050dffae98aa449128f63055fc4 (diff) | |
download | gtk+-3f0b9a7574a48fcbdd57e13ccf4a298dc7fc007b.tar.gz |
GtkBuilder: add GtkApplication
Add a GtkApplication (private) field to GtkBuilder
-rw-r--r-- | docs/reference/gtk/gtk3-sections.txt | 2 | ||||
-rw-r--r-- | gtk/gtkbuilder.c | 61 | ||||
-rw-r--r-- | gtk/gtkbuilder.h | 9 |
3 files changed, 72 insertions, 0 deletions
diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index 88c251e4ab..b874138514 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -604,6 +604,8 @@ gtk_builder_add_callback_symbols gtk_builder_lookup_callback_symbol gtk_builder_set_translation_domain gtk_builder_get_translation_domain +gtk_builder_set_application +gtk_builder_get_application gtk_builder_get_type_from_name gtk_builder_value_from_string gtk_builder_value_from_string_type diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 5e3af21a7b..38d71f1bd1 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -286,6 +286,7 @@ struct _GtkBuilderPrivate gchar *filename; gchar *resource_prefix; GType template_type; + GtkApplication *application; }; G_DEFINE_TYPE_WITH_PRIVATE (GtkBuilder, gtk_builder, G_TYPE_OBJECT) @@ -2514,3 +2515,63 @@ gtk_builder_new_from_string (const gchar *string, return builder; } + +/** + * gtk_builder_set_application: + * @builder: a #GtkBuilder + * @application: a #GtkApplication + * + * Sets the application associated with @builder. + * + * You only need this function if there is more than one #GApplication + * in your process. @application cannot be %NULL. + * + * Since: 3.10 + **/ +void +gtk_builder_set_application (GtkBuilder *builder, + GtkApplication *application) +{ + g_return_if_fail (GTK_IS_BUILDER (builder)); + g_return_if_fail (GTK_IS_APPLICATION (application)); + + if (builder->priv->application) + g_object_unref (builder->priv->application); + + builder->priv->application = g_object_ref (application); +} + +/** + * gtk_builder_get_application: + * @builder: a #GtkBuilder + * + * Gets the #GtkApplication associated with the builder. + * + * The #GtkApplication is used for creating action proxies as requested + * from XML that the builder is loading. + * + * By default, the builder uses the default application: the one from + * g_application_get_default(). If you want to use another application + * for constructing proxies, use gtk_builder_set_application(). + * + * Returns: (transfer none): the application being used by the builder, + * or %NULL + * + * Since: 3.10 + **/ +GtkApplication * +gtk_builder_get_application (GtkBuilder *builder) +{ + g_return_if_fail (GTK_IS_BUILDER (builder)); + + if (!builder->priv->application) + { + GApplication *application; + + application = g_application_get_default (); + if (application && GTK_IS_APPLICATION (application)) + builder->priv->application = g_object_ref (GTK_APPLICATION (application)); + } + + return builder->priv->application; +} diff --git a/gtk/gtkbuilder.h b/gtk/gtkbuilder.h index 5bdbe0d1dd..de415646ee 100644 --- a/gtk/gtkbuilder.h +++ b/gtk/gtkbuilder.h @@ -23,6 +23,7 @@ #error "Only <gtk/gtk.h> can be included directly." #endif +#include <gtk/gtkapplication.h> #include <gtk/gtkwidget.h> G_BEGIN_DECLS @@ -200,6 +201,14 @@ GDK_AVAILABLE_IN_3_10 GCallback gtk_builder_lookup_callback_symbol (GtkBuilder *builder, const gchar *callback_name); +GDK_AVAILABLE_IN_3_10 +void gtk_builder_set_application (GtkBuilder *builder, + GtkApplication *application); + +GDK_AVAILABLE_IN_3_10 +GtkApplication * gtk_builder_get_application (GtkBuilder *builder); + + /** * GTK_BUILDER_WARN_INVALID_CHILD_TYPE: * @object: the #GtkBuildable on which the warning ocurred |