{
GApplicationFlags flags;
gchar *id;
+ gchar *resource_path;
GActionGroup *actions;
GMenuModel *app_menu;
PROP_NONE,
PROP_APPLICATION_ID,
PROP_FLAGS,
+ PROP_RESOURCE_BASE_PATH,
PROP_IS_REGISTERED,
PROP_IS_REMOTE,
PROP_INACTIVITY_TIMEOUT,
g_application_set_flags (application, g_value_get_flags (value));
break;
+ case PROP_RESOURCE_BASE_PATH:
+ g_application_set_resource_base_path (application, g_value_get_string (value));
+ break;
+
case PROP_INACTIVITY_TIMEOUT:
g_application_set_inactivity_timeout (application,
g_value_get_uint (value));
g_application_get_flags (application));
break;
+ case PROP_RESOURCE_BASE_PATH:
+ g_value_set_string (value, g_application_get_resource_base_path (application));
+ break;
+
case PROP_IS_REGISTERED:
g_value_set_boolean (value,
g_application_get_is_registered (application));
if (g_application_get_default () == NULL)
g_application_set_default (application);
+
+ /* People should not set properties from _init... */
+ g_assert (application->priv->resource_path == NULL);
+
+ if (application->priv->id != NULL)
+ {
+ gint i;
+
+ application->priv->resource_path = g_strconcat ("/", application->priv->id, NULL);
+
+ for (i = 1; application->priv->resource_path[i]; i++)
+ if (application->priv->resource_path[i] == '.')
+ application->priv->resource_path[i] = '/';
+ }
}
static void
G_TYPE_APPLICATION_FLAGS, G_APPLICATION_FLAGS_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_RESOURCE_BASE_PATH,
+ g_param_spec_string ("resource-base-path",
+ P_("Resource base path"),
+ P_("The base resource path for the application"),
+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (object_class, PROP_IS_REGISTERED,
g_param_spec_boolean ("is-registered",
P_("Is registered"),
}
/**
+ * g_application_get_resource_base_path:
+ * @application: a #GApplication
+ *
+ * Gets the resource base path of @application.
+ *
+ * See g_application_set_resource_base_path() for more information.
+ *
+ * Returns: (nullable): the base resource path, if one is set
+ *
+ * Since: 2.42
+ */
+const gchar *
+g_application_get_resource_base_path (GApplication *application)
+{
+ g_return_val_if_fail (G_IS_APPLICATION (application), NULL);
+
+ return application->priv->resource_path;
+}
+
+/**
+ * g_application_set_resource_base_path:
+ * @application: a #GApplication
+ * @resource_path: (nullable): the resource path to use
+ *
+ * Sets (or unsets) the base resource path of @application.
+ *
+ * The path is used to automatically load various [application
+ * resources][gresource] such as menu layouts and action descriptions.
+ * The various types of resources will be found at fixed names relative
+ * to the given base path.
+ *
+ * By default, the resource base path is determined from the application
+ * ID by prefixing '/' and replacing each '.' with '/'. This is done at
+ * the time that the #GApplication object is constructed. Changes to
+ * the application ID after that point will not have an impact on the
+ * resource base path.
+ *
+ * As an example, if the application has an ID of "org.example.app" then
+ * the default resource base path will be "/org/example/app". If this
+ * is a #GtkApplication (and you have not manually changed the path)
+ * then Gtk will then search for the menus of the application at
+ * "/org/example/app/gtk/menus.ui".
+ *
+ * See #GResource for more information about adding resources to your
+ * application.
+ *
+ * You can disable automatic resource loading functionality by setting
+ * the path to %NULL.
+ *
+ * Changing the resource base path once the application is running is
+ * not recommended. The point at which the resource path is consulted
+ * for forming paths for various purposes is unspecified.
+ *
+ * Since: 2.42
+ */
+void
+g_application_set_resource_base_path (GApplication *application,
+ const gchar *resource_path)
+{
+ g_return_if_fail (G_IS_APPLICATION (application));
+ g_return_if_fail (resource_path == NULL || g_str_has_prefix (resource_path, "/"));
+
+ if (g_strcmp0 (application->priv->resource_path, resource_path) != 0)
+ {
+ g_free (application->priv->resource_path);
+
+ application->priv->resource_path = g_strdup (resource_path);
+
+ g_object_notify (G_OBJECT (application), "resource-base-path");
+ }
+}
+
+/**
* g_application_get_inactivity_timeout:
* @application: a #GApplication
*
return g_application_impl_get_dbus_object_path (application->priv->impl);
}
+
/* Register {{{1 */
/**
* g_application_register: