mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-09 04:15:49 +01:00
introduce GRemoteActionGroup
This interfaceifies the extra functions that were on GDBusActionGroup for dealing with platform data. The two main benefits of doing this: - no longer have to do a silly song and dance in GApplication to avoid calling GDBusActionGroup API from non-dbus-aware code - the interface can be reused by the action group exporter to avoid ugly and unbindable hook callbacks https://bugzilla.gnome.org/show_bug.cgi?id=665737
This commit is contained in:
parent
ee9f104432
commit
eefd08996f
@ -199,6 +199,7 @@
|
||||
<xi:include href="xml/gsimpleactiongroup.xml"/>
|
||||
<xi:include href="xml/gaction.xml"/>
|
||||
<xi:include href="xml/gsimpleaction.xml"/>
|
||||
<xi:include href="xml/gremoteactiongroup.xml"/>
|
||||
<xi:include href="xml/gactiongroupexporter.xml"/>
|
||||
<xi:include href="xml/gdbusactiongroup.xml"/>
|
||||
<xi:include href="xml/gmenumodel.xml"/>
|
||||
|
@ -2940,6 +2940,22 @@ G_DBUS_ACTION_GROUP_GET_CLASS
|
||||
g_dbus_action_group_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gremoteactiongroup</FILE>
|
||||
GRemoteActionGroup
|
||||
GRemoteActionGroupInterface
|
||||
|
||||
<SUBSECTION>
|
||||
g_remote_action_group_activate_action_full
|
||||
g_remote_action_group_change_action_state_full
|
||||
|
||||
<SUBSECTION Standard>
|
||||
G_TYPE_REMOTE_ACTION_GROUP
|
||||
G_REMOTE_ACTION_GROUP
|
||||
G_IS_REMOTE_ACTION_GROUP
|
||||
G_REMOTE_ACTION_GROUP_GET_IFACE
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gaction</FILE>
|
||||
<TITLE>GAction</TITLE>
|
||||
|
@ -131,6 +131,7 @@ application_headers = \
|
||||
gactiongroup.h \
|
||||
gactionmap.h \
|
||||
gsimpleactiongroup.h \
|
||||
gremoteactiongroup.h \
|
||||
gactiongroupexporter.h \
|
||||
gdbusactiongroup.h \
|
||||
gaction.h \
|
||||
@ -152,6 +153,7 @@ application_sources = \
|
||||
gactiongroup.c \
|
||||
gactionmap.c \
|
||||
gsimpleactiongroup.c \
|
||||
gremoteactiongroup.c \
|
||||
gactiongroupexporter.c \
|
||||
gdbusactiongroup.c \
|
||||
gaction.c \
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
#include "gapplicationcommandline.h"
|
||||
#include "gsimpleactiongroup.h"
|
||||
#include "gremoteactiongroup.h"
|
||||
#include "gapplicationimpl.h"
|
||||
#include "gactiongroup.h"
|
||||
#include "gactionmap.h"
|
||||
@ -213,8 +214,8 @@ struct _GApplicationPrivate
|
||||
guint did_startup : 1;
|
||||
guint did_shutdown : 1;
|
||||
|
||||
GActionGroup *remote_actions;
|
||||
GApplicationImpl *impl;
|
||||
GRemoteActionGroup *remote_actions;
|
||||
GApplicationImpl *impl;
|
||||
};
|
||||
|
||||
enum
|
||||
@ -1590,7 +1591,7 @@ g_application_list_actions (GActionGroup *action_group)
|
||||
g_return_val_if_fail (application->priv->is_registered, NULL);
|
||||
|
||||
if (application->priv->remote_actions != NULL)
|
||||
return g_action_group_list_actions (application->priv->remote_actions);
|
||||
return g_action_group_list_actions (G_ACTION_GROUP (application->priv->remote_actions));
|
||||
|
||||
else if (application->priv->actions != NULL)
|
||||
return g_action_group_list_actions (application->priv->actions);
|
||||
@ -1614,7 +1615,7 @@ g_application_query_action (GActionGroup *group,
|
||||
g_return_val_if_fail (application->priv->is_registered, FALSE);
|
||||
|
||||
if (application->priv->remote_actions != NULL)
|
||||
return g_action_group_query_action (application->priv->remote_actions,
|
||||
return g_action_group_query_action (G_ACTION_GROUP (application->priv->remote_actions),
|
||||
action_name,
|
||||
enabled,
|
||||
parameter_type,
|
||||
@ -1646,8 +1647,8 @@ g_application_change_action_state (GActionGroup *action_group,
|
||||
g_return_if_fail (application->priv->is_registered);
|
||||
|
||||
if (application->priv->remote_actions)
|
||||
g_application_impl_change_action_state (application->priv->impl, action_name, value,
|
||||
get_platform_data (application));
|
||||
g_remote_action_group_change_action_state_full (application->priv->remote_actions,
|
||||
action_name, value, get_platform_data (application));
|
||||
|
||||
else
|
||||
g_action_group_change_action_state (application->priv->actions, action_name, value);
|
||||
@ -1664,9 +1665,9 @@ g_application_activate_action (GActionGroup *action_group,
|
||||
application->priv->actions != NULL);
|
||||
g_return_if_fail (application->priv->is_registered);
|
||||
|
||||
if (application->priv->is_remote)
|
||||
g_application_impl_activate_action (application->priv->impl, action_name, parameter,
|
||||
get_platform_data (application));
|
||||
if (application->priv->remote_actions)
|
||||
g_remote_action_group_activate_action_full (application->priv->remote_actions,
|
||||
action_name, parameter, get_platform_data (application));
|
||||
|
||||
else
|
||||
g_action_group_activate_action (application->priv->actions, action_name, parameter);
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
#include "gactiongroup.h"
|
||||
#include "gactiongroupexporter.h"
|
||||
#include "gremoteactiongroup.h"
|
||||
#include "gdbusactiongroup.h"
|
||||
#include "gapplication.h"
|
||||
#include "gfile.h"
|
||||
@ -86,7 +87,6 @@ static GDBusInterfaceInfo *org_gtk_private_CommandLine;
|
||||
struct _GApplicationImpl
|
||||
{
|
||||
GDBusConnection *session_bus;
|
||||
GDBusActionGroup *remote_actions;
|
||||
const gchar *bus_name;
|
||||
|
||||
gchar *object_path;
|
||||
@ -474,12 +474,12 @@ g_application_impl_destroy (GApplicationImpl *impl)
|
||||
}
|
||||
|
||||
GApplicationImpl *
|
||||
g_application_impl_register (GApplication *application,
|
||||
const gchar *appid,
|
||||
GApplicationFlags flags,
|
||||
GActionGroup **remote_actions,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
g_application_impl_register (GApplication *application,
|
||||
const gchar *appid,
|
||||
GApplicationFlags flags,
|
||||
GRemoteActionGroup **remote_actions,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
GDBusActionGroup *actions;
|
||||
GApplicationImpl *impl;
|
||||
@ -543,8 +543,7 @@ g_application_impl_register (GApplication *application,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*remote_actions = G_ACTION_GROUP (actions);
|
||||
impl->remote_actions = actions;
|
||||
*remote_actions = G_REMOTE_ACTION_GROUP (actions);
|
||||
|
||||
return impl;
|
||||
}
|
||||
@ -593,24 +592,6 @@ g_application_impl_open (GApplicationImpl *impl,
|
||||
NULL, 0, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
g_application_impl_activate_action (GApplicationImpl *impl,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
g_dbus_action_group_activate_action_full (impl->remote_actions, action_name, parameter, platform_data);
|
||||
}
|
||||
|
||||
void
|
||||
g_application_impl_change_action_state (GApplicationImpl *impl,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
g_dbus_action_group_change_action_state_full (impl->remote_actions, action_name, value, platform_data);
|
||||
}
|
||||
|
||||
static void
|
||||
g_application_impl_cmdline_method_call (GDBusConnection *connection,
|
||||
const gchar *sender,
|
||||
|
@ -18,7 +18,7 @@ G_GNUC_INTERNAL
|
||||
GApplicationImpl * g_application_impl_register (GApplication *application,
|
||||
const gchar *appid,
|
||||
GApplicationFlags flags,
|
||||
GActionGroup **remote_actions,
|
||||
GRemoteActionGroup**remote_actions,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
||||
@ -33,18 +33,6 @@ void g_application_impl_open (GApplic
|
||||
const gchar *hint,
|
||||
GVariant *platform_data);
|
||||
|
||||
G_GNUC_INTERNAL
|
||||
void g_application_impl_activate_action (GApplicationImpl *impl,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data);
|
||||
|
||||
G_GNUC_INTERNAL
|
||||
void g_application_impl_change_action_state (GApplicationImpl *impl,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data);
|
||||
|
||||
G_GNUC_INTERNAL
|
||||
int g_application_impl_command_line (GApplicationImpl *impl,
|
||||
gchar **arguments,
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
#include "gdbusactiongroup.h"
|
||||
|
||||
#include "gremoteactiongroup.h"
|
||||
#include "gdbusconnection.h"
|
||||
#include "gactiongroup.h"
|
||||
|
||||
@ -122,9 +123,11 @@ action_info_new_from_iter (GVariantIter *iter)
|
||||
return info;
|
||||
}
|
||||
|
||||
static void g_dbus_action_group_iface_init (GActionGroupInterface *);
|
||||
static void g_dbus_action_group_remote_iface_init (GRemoteActionGroupInterface *iface);
|
||||
static void g_dbus_action_group_iface_init (GActionGroupInterface *iface);
|
||||
G_DEFINE_TYPE_WITH_CODE (GDBusActionGroup, g_dbus_action_group, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, g_dbus_action_group_iface_init))
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, g_dbus_action_group_iface_init)
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_REMOTE_ACTION_GROUP, g_dbus_action_group_remote_iface_init))
|
||||
|
||||
static void
|
||||
g_dbus_action_group_changed (GDBusConnection *connection,
|
||||
@ -363,23 +366,53 @@ g_dbus_action_group_query_action (GActionGroup *g_group,
|
||||
}
|
||||
|
||||
static void
|
||||
g_dbus_action_group_change_state (GActionGroup *g_group,
|
||||
const gchar *action_name,
|
||||
GVariant *value)
|
||||
g_dbus_action_group_activate_action_full (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
GDBusActionGroup *group = G_DBUS_ACTION_GROUP (g_group);
|
||||
GDBusActionGroup *group = G_DBUS_ACTION_GROUP (remote);
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_dbus_action_group_change_action_state_full (group, action_name, value, g_variant_new ("a{sv}", NULL));
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
|
||||
if (parameter)
|
||||
g_variant_builder_add (&builder, "v", parameter);
|
||||
|
||||
g_dbus_connection_call (group->connection, group->bus_name, group->object_path, "org.gtk.Actions", "Activate",
|
||||
g_variant_new ("(sav@a{sv})", action_name, &builder, platform_data),
|
||||
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
g_dbus_action_group_activate (GActionGroup *g_group,
|
||||
g_dbus_action_group_change_action_state_full (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
GDBusActionGroup *group = G_DBUS_ACTION_GROUP (remote);
|
||||
|
||||
g_dbus_connection_call (group->connection, group->bus_name, group->object_path, "org.gtk.Actions", "SetState",
|
||||
g_variant_new ("(sv@a{sv})", action_name, value, platform_data),
|
||||
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
g_dbus_action_group_change_state (GActionGroup *group,
|
||||
const gchar *action_name,
|
||||
GVariant *value)
|
||||
{
|
||||
g_dbus_action_group_change_action_state_full (G_REMOTE_ACTION_GROUP (group),
|
||||
action_name, value, g_variant_new ("a{sv}", NULL));
|
||||
}
|
||||
|
||||
static void
|
||||
g_dbus_action_group_activate (GActionGroup *group,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter)
|
||||
{
|
||||
GDBusActionGroup *group = G_DBUS_ACTION_GROUP (g_group);
|
||||
|
||||
g_dbus_action_group_activate_action_full (group, action_name, parameter, g_variant_new ("a{sv}", NULL));
|
||||
g_dbus_action_group_activate_action_full (G_REMOTE_ACTION_GROUP (group),
|
||||
action_name, parameter, g_variant_new ("a{sv}", NULL));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -414,6 +447,13 @@ g_dbus_action_group_class_init (GDBusActionGroupClass *class)
|
||||
object_class->finalize = g_dbus_action_group_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
g_dbus_action_group_remote_iface_init (GRemoteActionGroupInterface *iface)
|
||||
{
|
||||
iface->activate_action_full = g_dbus_action_group_activate_action_full;
|
||||
iface->change_action_state_full = g_dbus_action_group_change_action_state_full;
|
||||
}
|
||||
|
||||
static void
|
||||
g_dbus_action_group_iface_init (GActionGroupInterface *iface)
|
||||
{
|
||||
@ -496,81 +536,3 @@ g_dbus_action_group_sync (GDBusActionGroup *group,
|
||||
|
||||
return reply != NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* g_dbus_action_group_activate_action_full:
|
||||
* @action_group: a #GDBusActionGroup
|
||||
* @action_name: the name of the action to activate
|
||||
* @parameter: (allow none): the optional parameter to the activation
|
||||
* @platform_data: the platform data to send
|
||||
*
|
||||
* Activates the remote action.
|
||||
*
|
||||
* This is the same as g_action_group_activate_action() except that it
|
||||
* allows for provision of "platform data" to be sent along with the
|
||||
* activation request. This typically contains details such as the user
|
||||
* interaction timestamp or startup notification information.
|
||||
*
|
||||
* @platform_data must be non-%NULL and must have the type
|
||||
* %G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
void
|
||||
g_dbus_action_group_activate_action_full (GDBusActionGroup *action_group,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_return_if_fail (G_IS_DBUS_ACTION_GROUP (action_group));
|
||||
g_return_if_fail (action_name != NULL);
|
||||
g_return_if_fail (platform_data != NULL);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
|
||||
if (parameter)
|
||||
g_variant_builder_add (&builder, "v", parameter);
|
||||
|
||||
g_dbus_connection_call (action_group->connection, action_group->bus_name, action_group->object_path,
|
||||
"org.gtk.Actions", "Activate",
|
||||
g_variant_new ("(sav@a{sv})", action_name, &builder, platform_data),
|
||||
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* g_dbus_action_group_activate_action_full:
|
||||
* @action_group: a #GDBusActionGroup
|
||||
* @action_name: the name of the action to change the state of
|
||||
* @value: the new requested value for the state
|
||||
* @platform_data: the platform data to send
|
||||
*
|
||||
* Changes the state of a remote action.
|
||||
*
|
||||
* This is the same as g_action_group_change_action_state() except that
|
||||
* it allows for provision of "platform data" to be sent along with the
|
||||
* state change request. This typically contains details such as the
|
||||
* user interaction timestamp or startup notification information.
|
||||
*
|
||||
* @platform_data must be non-%NULL and must have the type
|
||||
* %G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
void
|
||||
g_dbus_action_group_change_action_state_full (GDBusActionGroup *action_group,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
g_return_if_fail (G_IS_DBUS_ACTION_GROUP (action_group));
|
||||
g_return_if_fail (action_name != NULL);
|
||||
g_return_if_fail (value != NULL);
|
||||
g_return_if_fail (platform_data != NULL);
|
||||
|
||||
g_dbus_connection_call (action_group->connection, action_group->bus_name, action_group->object_path,
|
||||
"org.gtk.Actions", "SetState",
|
||||
g_variant_new ("(sv@a{sv})", action_name, value, platform_data),
|
||||
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
@ -49,15 +49,6 @@ GDBusActionGroup * g_dbus_action_group_get (GDBusConn
|
||||
const gchar *bus_name,
|
||||
const gchar *object_path);
|
||||
|
||||
void g_dbus_action_group_activate_action_full (GDBusActionGroup *action_group,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data);
|
||||
void g_dbus_action_group_change_action_state_full (GDBusActionGroup *action_group,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __G_DBUS_ACTION_GROUP_H__ */
|
||||
|
@ -147,6 +147,7 @@
|
||||
#include <gio/gdbusobjectmanagerclient.h>
|
||||
#include <gio/gdbusobjectmanagerserver.h>
|
||||
#include <gio/gdbusactiongroup.h>
|
||||
#include <gio/gremoteactiongroup.h>
|
||||
#include <gio/gmenumodel.h>
|
||||
#include <gio/gmenu.h>
|
||||
#include <gio/gmenuexporter.h>
|
||||
|
@ -1443,8 +1443,9 @@ g_simple_action_set_enabled
|
||||
g_simple_action_set_state
|
||||
g_dbus_action_group_get_type
|
||||
g_dbus_action_group_get
|
||||
g_dbus_action_group_activate_action_full
|
||||
g_dbus_action_group_change_action_state_full
|
||||
g_remote_action_group_get_type
|
||||
g_remote_action_group_activate_action_full
|
||||
g_remote_action_group_change_action_state_full
|
||||
g_dbus_menu_model_get_type
|
||||
g_dbus_menu_model_get
|
||||
g_dbus_connection_export_action_group
|
||||
|
@ -48,6 +48,7 @@ typedef struct _GZlibCompressor GZlibCompressor;
|
||||
typedef struct _GZlibDecompressor GZlibDecompressor;
|
||||
|
||||
typedef struct _GSimpleActionGroup GSimpleActionGroup;
|
||||
typedef struct _GRemoteActionGroup GRemoteActionGroup;
|
||||
typedef struct _GDBusActionGroup GDBusActionGroup;
|
||||
typedef struct _GActionMap GActionMap;
|
||||
typedef struct _GActionGroup GActionGroup;
|
||||
|
136
gio/gremoteactiongroup.c
Normal file
136
gio/gremoteactiongroup.c
Normal file
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Copyright © 2010 Codethink Limited
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the licence or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* 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.
|
||||
*
|
||||
* Authors: Ryan Lortie <desrt@desrt.ca>
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "gsimpleaction.h"
|
||||
#include "gactiongroup.h"
|
||||
#include "gactionmap.h"
|
||||
#include "gaction.h"
|
||||
|
||||
/**
|
||||
* SECTION:gremoteactiongroup
|
||||
* @title: GRemoteActionGroup
|
||||
* @short_description: a #GActionGroup that interacts with other processes
|
||||
*
|
||||
* The GRemoteActionGroup interface is implemented by #GActionGroup
|
||||
* instances that either transmit action invocations to other processes
|
||||
* or receive action invocations in the local process from other
|
||||
* processes.
|
||||
*
|
||||
* The interface has <literal>_full</literal> variants of the two
|
||||
* methods on #GActionGroup used to activate actions:
|
||||
* g_action_group_activate_action() and
|
||||
* g_action_group_change_action_state(). These variants allow a
|
||||
* "platform data" #GVariant to be specified: a dictionary providing
|
||||
* context for the action invocation (for example: timestamps, startup
|
||||
* notification IDs, etc).
|
||||
*
|
||||
* #GDBusActionGroup implements #GRemoteActionGroup. This provides a
|
||||
* mechanism to send platform data for action invocations over D-Bus.
|
||||
*
|
||||
* Additionally, g_dbus_connection_export_action_group() will check if
|
||||
* the exported #GActionGroup implements #GRemoteActionGroup and use the
|
||||
* <literal>_full</literal> variants of the calls if available. This
|
||||
* provides a mechanism by which to receive platform data for action
|
||||
* invocations that arrive by way of D-Bus.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
|
||||
/**
|
||||
* GRemoteActionGroupInterface:
|
||||
* @activate_action_full: the virtual function pointer for g_remote_action_group_activate_action_full()
|
||||
* @change_action_state_full: the virtual function pointer for g_remote_action_group_change_action_state_full()
|
||||
*
|
||||
* The virtual function table for #GRemoteActionGroup.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "gremoteactiongroup.h"
|
||||
|
||||
G_DEFINE_INTERFACE (GRemoteActionGroup, g_remote_action_group, G_TYPE_ACTION_GROUP)
|
||||
|
||||
static void
|
||||
g_remote_action_group_default_init (GRemoteActionGroupInterface *iface)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* g_remote_action_group_activate_action_full:
|
||||
* @action_group: a #GDBusActionGroup
|
||||
* @action_name: the name of the action to activate
|
||||
* @parameter: (allow none): the optional parameter to the activation
|
||||
* @platform_data: the platform data to send
|
||||
*
|
||||
* Activates the remote action.
|
||||
*
|
||||
* This is the same as g_action_group_activate_action() except that it
|
||||
* allows for provision of "platform data" to be sent along with the
|
||||
* activation request. This typically contains details such as the user
|
||||
* interaction timestamp or startup notification information.
|
||||
*
|
||||
* @platform_data must be non-%NULL and must have the type
|
||||
* %G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
void
|
||||
g_remote_action_group_activate_action_full (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
G_REMOTE_ACTION_GROUP_GET_IFACE (remote)
|
||||
->activate_action_full (remote, action_name, parameter, platform_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* g_remote_action_group_activate_action_full:
|
||||
* @remote: a #GRemoteActionGroup
|
||||
* @action_name: the name of the action to change the state of
|
||||
* @value: the new requested value for the state
|
||||
* @platform_data: the platform data to send
|
||||
*
|
||||
* Changes the state of a remote action.
|
||||
*
|
||||
* This is the same as g_action_group_change_action_state() except that
|
||||
* it allows for provision of "platform data" to be sent along with the
|
||||
* state change request. This typically contains details such as the
|
||||
* user interaction timestamp or startup notification information.
|
||||
*
|
||||
* @platform_data must be non-%NULL and must have the type
|
||||
* %G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
void
|
||||
g_remote_action_group_change_action_state_full (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data)
|
||||
{
|
||||
G_REMOTE_ACTION_GROUP_GET_IFACE (remote)
|
||||
->change_action_state_full (remote, action_name, value, platform_data);
|
||||
}
|
74
gio/gremoteactiongroup.h
Normal file
74
gio/gremoteactiongroup.h
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright © 2011 Canonical Limited
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the licence or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* 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.
|
||||
*
|
||||
* Authors: Ryan Lortie <desrt@desrt.ca>
|
||||
*/
|
||||
|
||||
#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
|
||||
#error "Only <gio/gio.h> can be included directly."
|
||||
#endif
|
||||
|
||||
#ifndef __G_REMOTE_ACTION_GROUP_H__
|
||||
#define __G_REMOTE_ACTION_GROUP_H__
|
||||
|
||||
#include <gio/giotypes.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
#define G_TYPE_REMOTE_ACTION_GROUP (g_remote_action_group_get_type ())
|
||||
#define G_REMOTE_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
|
||||
G_TYPE_REMOTE_ACTION_GROUP, GRemoteActionGroup))
|
||||
#define G_IS_REMOTE_ACTION_GROUP(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \
|
||||
G_TYPE_REMOTE_ACTION_GROUP))
|
||||
#define G_REMOTE_ACTION_GROUP_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \
|
||||
G_TYPE_REMOTE_ACTION_GROUP, \
|
||||
GRemoteActionGroupInterface))
|
||||
|
||||
typedef struct _GRemoteActionGroupInterface GRemoteActionGroupInterface;
|
||||
|
||||
struct _GRemoteActionGroupInterface
|
||||
{
|
||||
GTypeInterface g_iface;
|
||||
|
||||
void (* activate_action_full) (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data);
|
||||
|
||||
void (* change_action_state_full) (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data);
|
||||
};
|
||||
|
||||
GType g_remote_action_group_get_type (void) G_GNUC_CONST;
|
||||
|
||||
void g_remote_action_group_activate_action_full (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *parameter,
|
||||
GVariant *platform_data);
|
||||
|
||||
void g_remote_action_group_change_action_state_full (GRemoteActionGroup *remote,
|
||||
const gchar *action_name,
|
||||
GVariant *value,
|
||||
GVariant *platform_data);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __G_REMOTE_ACTION_GROUP_H__ */
|
Loading…
x
Reference in New Issue
Block a user