mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 08:22:16 +01:00 
			
		
		
		
	Move it to the struct docs. Signed-off-by: Philip Withnall <philip@tecnocode.co.uk> Helps: #3037
		
			
				
	
	
		
			135 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | ||
|  * Copyright © 2010 Codethink Limited
 | ||
|  *
 | ||
|  * SPDX-License-Identifier: LGPL-2.1-or-later
 | ||
|  *
 | ||
|  * This library 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.1 of the License, 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, see <http://www.gnu.org/licenses/>.
 | ||
|  *
 | ||
|  * Authors: Ryan Lortie <desrt@desrt.ca>
 | ||
|  */
 | ||
| 
 | ||
| #include "config.h"
 | ||
| 
 | ||
| #include "gsimpleaction.h"
 | ||
| #include "gactiongroup.h"
 | ||
| #include "gactionmap.h"
 | ||
| #include "gaction.h"
 | ||
| 
 | ||
| /**
 | ||
|  * GRemoteActionGroup:
 | ||
|  *
 | ||
|  * The `GRemoteActionGroup` interface is implemented by [iface@Gio.ActionGroup]
 | ||
|  * instances that either transmit action invocations to other processes
 | ||
|  * or receive action invocations in the local process from other
 | ||
|  * processes.
 | ||
|  *
 | ||
|  * The interface has `_full` variants of the two
 | ||
|  * methods on [iface@Gio.ActionGroup] used to activate actions:
 | ||
|  * [method@Gio.ActionGroup.activate_action] and
 | ||
|  * [method@Gio.ActionGroup.change_action_state]. These variants allow a
 | ||
|  * ‘platform data’ [struct@GLib.Variant] to be specified: a dictionary providing
 | ||
|  * context for the action invocation (for example: timestamps, startup
 | ||
|  * notification IDs, etc).
 | ||
|  *
 | ||
|  * [class@Gio.DBusActionGroup] implements `GRemoteActionGroup`.  This provides a
 | ||
|  * mechanism to send platform data for action invocations over D-Bus.
 | ||
|  *
 | ||
|  * Additionally, [method@Gio.DBusConnection.export_action_group] will check if
 | ||
|  * the exported [iface@Gio.ActionGroup] implements `GRemoteActionGroup` and use
 | ||
|  * the `_full` 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:
 | ||
|  * @remote: a #GDBusActionGroup
 | ||
|  * @action_name: the name of the action to activate
 | ||
|  * @parameter: (nullable): 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_change_action_state_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);
 | ||
| }
 |