summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2013-06-16 16:29:50 -0400
committerRyan Lortie <desrt@desrt.ca>2013-10-15 09:24:11 -0400
commit3f0b9a7574a48fcbdd57e13ccf4a298dc7fc007b (patch)
treed6092f015fdc23ec412d06e7236013e4d0dd9aee
parentd967266b772f3050dffae98aa449128f63055fc4 (diff)
downloadgtk+-3f0b9a7574a48fcbdd57e13ccf4a298dc7fc007b.tar.gz
GtkBuilder: add GtkApplication
Add a GtkApplication (private) field to GtkBuilder
-rw-r--r--docs/reference/gtk/gtk3-sections.txt2
-rw-r--r--gtk/gtkbuilder.c61
-rw-r--r--gtk/gtkbuilder.h9
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