libpurple/purpleprotocolactions.h

Fri, 29 Jul 2022 01:13:51 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 29 Jul 2022 01:13:51 -0500
changeset 41460
fccbea158b51
parent 41437
05ac40f0e0c4
child 42004
620d1adf91f2
permissions
-rw-r--r--

Add a get_prefix method to the PurpleProtocolActions interface

This make it much easier for protocol authors to keep track of things, but we
do fall back to using the id of the protocol for the prefix if get_prefix is
not implemented.

Testing Done:
Verified the fallback works, then changed the prefix in the demo protocol plugin and verified everything still functioned.

Reviewed at https://reviews.imfreedom.org/r/1547/

41437
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * source distribution.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 */
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23 #if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24 # error "only <purple.h> may be included directly"
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 #endif
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
27 #ifndef PURPLE_PROTOCOL_ACTIONS_H
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28 #define PURPLE_PROTOCOL_ACTIONS_H
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
29
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30 #include <glib.h>
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31 #include <glib-object.h>
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
33 #include <libpurple/connection.h>
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34 #include <libpurple/purpleprotocol.h>
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36 #define PURPLE_TYPE_PROTOCOL_ACTIONS (purple_protocol_actions_get_type())
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 G_DECLARE_INTERFACE(PurpleProtocolActions, purple_protocol_actions, PURPLE,
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38 PROTOCOL_ACTIONS, PurpleProtocol)
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
40 /**
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41 * PurpleProtocolActions:
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
42 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43 * The #PurpleProtocolActions interface defines the behavior of a protocol's
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44 * actions interface.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
45 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46 * Since: 3.0.0
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 */
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 /**
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 * PurpleProtocolActionsInterface:
41460
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
51 * @get_prefix: The prefix used for the actions in the group. If this isn't
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
52 * implemented, the id of the protocol will be used instead.
41437
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53 * @get_action_group: Returns the actions the protocol can perform. If actions
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 * depend on connectivity, connect to the relevant signals
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55 * on the @connection and signal the action has changed with
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 * [iface@GLib.ActionGroup] signals.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 * @get_menu: Get the menu used to display protocol actions. In Pidgin, these
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 * will show up in the Accounts menu, under a submenu with the name
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 * of the account.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61 * The protocol actions interface.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
62 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
63 * This interface provides a gateway between purple and the protocol.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
64 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
65 * Since: 3.0.0
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
66 */
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 struct _PurpleProtocolActionsInterface {
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68 /*< private >*/
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
69 GTypeInterface parent;
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 /*< public >*/
41460
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
72 const gchar *(*get_prefix)(PurpleProtocolActions *actions);
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
73
41437
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
74 GActionGroup *(*get_action_group)(PurpleProtocolActions *actions, PurpleConnection *connection);
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 GMenu *(*get_menu)(PurpleProtocolActions *actions);
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
77
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
78 /*< private >*/
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
79 gpointer reserved[4];
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 };
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
81
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
82 G_BEGIN_DECLS
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
83
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
84 /**
41460
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
85 * purple_protocol_actions_get_prefix:
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
86 * @actions: The PurpleProtocolActions instance.
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
87 *
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
88 * The prefix that should be used when inserting the action group into widgets.
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
89 *
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
90 * Returns: Gets the prefix for the name of the actions in @actions.
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
91 *
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
92 * Since: 3.0.0
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
93 */
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
94 const gchar *purple_protocol_actions_get_prefix(PurpleProtocolActions *actions);
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
95
fccbea158b51 Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents: 41437
diff changeset
96 /**
41437
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97 * purple_protocol_actions_get_action_group:
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 * @actions: The PurpleProtocolActions instance.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99 * @connection: The [class@Connection] instance.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 * Gets a group of actions for @connection.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103 * Returns: (transfer full): The group of actions for @connection.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
104 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 * Since: 3.0.0
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 */
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107 GActionGroup *purple_protocol_actions_get_action_group(PurpleProtocolActions *actions, PurpleConnection *connection);
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 /**
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110 * purple_protocol_actions_get_menu:
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 * @actions: The [iface@ProtocolActions] instance.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
112 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 * Gets the menu used to display the protocol actions.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
114 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115 * Returns: (transfer full): The menu to display or %NULL.
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
116 *
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
117 * Since: 3.0.0
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
118 */
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
119 GMenu *purple_protocol_actions_get_menu(PurpleProtocolActions *actions);
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
120
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
121 G_END_DECLS
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
122
05ac40f0e0c4 Add a protocol actions interface
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
123 #endif /* PURPLE_PROTOCOL_ACTIONS_H */

mercurial