pidgin/pidginactiongroup.c

Sat, 29 Oct 2022 01:14:13 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 29 Oct 2022 01:14:13 -0500
changeset 41859
ed82ab63d15a
parent 41411
c2969c67490e
child 41947
7b3312d0760c
permissions
-rw-r--r--

Convert PidginProxyPrefs to Adwaita 1.2

Testing Done:
Set all the values via the ui and the config file and tested bad values in the port in both as well. Bad values in the ui will store whatever atoi returned, but bad values in the config file will fallback to the default.

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

40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * pidgin
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 *
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * source distribution.
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 *
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * (at your option) any later version.
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 *
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * GNU General Public License for more details.
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 *
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "pidginactiongroup.h"
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
40364
55483ee6710f Migrate the rest of the static menu items to the new PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40363
diff changeset
25 #include <purple.h>
55483ee6710f Migrate the rest of the static menu items to the new PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40363
diff changeset
26
40496
6941fece679b phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents: 40444
diff changeset
27 #include "pidgincore.h"
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 struct _PidginActionGroup {
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 GSimpleActionGroup parent;
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 };
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 /******************************************************************************
40366
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
34 * Helpers
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
35 *****************************************************************************/
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
36
40368
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
37 /*< private >
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
38 * pidgin_action_group_string_pref_handler:
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
39 * @group: The #PidginActionGroup instance.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
40 * @action_name: The name of the action to update.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
41 * @value: The value of the preference.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
42 *
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
43 * Changes the state of the action named @action_name to match @value.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
44 *
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
45 * This function is meant to be called from a #PurplePrefCallback function as
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
46 * there isn't a good way to have a #PurplePrefCallback with multiple items in
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
47 * the data parameter without leaking them forever.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
48 */
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
49 static void
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
50 pidgin_action_group_string_pref_handler(PidginActionGroup *group,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
51 const gchar *action_name,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
52 const gchar *value)
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
53 {
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
54 GAction *action = NULL;
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
55
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
56 action = g_action_map_lookup_action(G_ACTION_MAP(group), action_name);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
57 if(action != NULL) {
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
58 g_simple_action_set_state(G_SIMPLE_ACTION(action),
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
59 g_variant_new_string(value));
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
60 }
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
61 }
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
62
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
63 /*< private >
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
64 * pidgin_action_group_setup_string:
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
65 * @group: The #PidginActionGroup instance.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
66 * @action_name: The name of the action to setup.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
67 * @pref_name: The name of the preference that @action_name is tied to.
40388
3f2e9e346f6f Fix a bunch of stuff that was found in review.
Gary Kramlich <grim@reaperworld.com>
parents: 40385
diff changeset
68 * @callback: (scope notified): A #PurplePrefCallback to call when the
3f2e9e346f6f Fix a bunch of stuff that was found in review.
Gary Kramlich <grim@reaperworld.com>
parents: 40385
diff changeset
69 * preference is changed.
40368
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
70 *
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
71 * Initializes the string action named @action_name to the value of @pref_name
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
72 * and setups up a preference change callback to @callback to maintain the
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
73 * state of the action.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
74 */
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
75 static void
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
76 pidgin_action_group_setup_string(PidginActionGroup *group,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
77 const gchar *action_name,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
78 const gchar *pref_name,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
79 PurplePrefCallback callback)
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
80 {
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
81 GAction *action = NULL;
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
82 const gchar *value = NULL;
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
83
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
84 /* find the action, if we can't find it, bail */
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
85 action = g_action_map_lookup_action(G_ACTION_MAP(group), action_name);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
86 g_return_if_fail(action != NULL);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
87
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
88 /* change the state of the action to match the preference value. */
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
89 value = purple_prefs_get_string(pref_name);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
90 g_simple_action_set_state(G_SIMPLE_ACTION(action),
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
91 g_variant_new_string(value));
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
92
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
93 /* finally add a preference callback to update the state based on the
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
94 * preference.
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
95 */
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
96 purple_prefs_connect_callback(group, pref_name, callback, group);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
97 }
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
98
40366
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
99 /******************************************************************************
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
100 * Preference Callbacks
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
101 *****************************************************************************/
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
102 static void
40368
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
103 pidgin_action_group_sort_method_callback(const gchar *name,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
104 PurplePrefType type,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
105 gconstpointer value,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
106 gpointer data)
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
107 {
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
108 PidginActionGroup *group = PIDGIN_ACTION_GROUP(data);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
109
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
110 pidgin_action_group_string_pref_handler(group,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
111 PIDGIN_ACTION_SORT_METHOD,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
112 value);
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
113 }
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
114
40366
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
115 /******************************************************************************
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 * Action Callbacks
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 *****************************************************************************/
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 static void
40368
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
119 pidgin_action_group_sort_method(GSimpleAction *action, GVariant *value,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
120 gpointer data)
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
121 {
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
122 purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/sort_type",
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
123 g_variant_get_string(value, NULL));
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
124 }
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
125
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 /******************************************************************************
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 * GObject Implementation
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 *****************************************************************************/
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 G_DEFINE_TYPE(PidginActionGroup, pidgin_action_group,
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 G_TYPE_SIMPLE_ACTION_GROUP)
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 static void
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 pidgin_action_group_init(PidginActionGroup *group) {
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 GActionEntry entries[] = {
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 {
40368
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
136 .name = PIDGIN_ACTION_SORT_METHOD,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
137 .parameter_type = "s",
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
138 .state = "'none'",
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
139 .change_state = pidgin_action_group_sort_method,
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 },
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 };
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 g_action_map_add_action_entries(G_ACTION_MAP(group), entries,
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 G_N_ELEMENTS(entries), NULL);
40366
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
145
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
146 /* now add some handlers for preference changes and set actions to the
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
147 * correct value.
5c78f6c9a36b Implement mute sounds to prove out the action state code
Gary Kramlich <grim@reaperworld.com>
parents: 40364
diff changeset
148 */
40368
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
149 pidgin_action_group_setup_string(group, PIDGIN_ACTION_SORT_METHOD,
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
150 PIDGIN_PREFS_ROOT "/blist/sort_type",
cb9a81e8845a Port the sort-method items to GMenu and GAction and display in the new menubar
Gary Kramlich <grim@reaperworld.com>
parents: 40367
diff changeset
151 pidgin_action_group_sort_method_callback);
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 };
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 static void
40370
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
155 pidgin_action_group_finalize(GObject *obj) {
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
156 purple_signals_disconnect_by_handle(obj);
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
157
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
158 G_OBJECT_CLASS(pidgin_action_group_parent_class)->finalize(obj);
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
159 }
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
160
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
161 static void
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 pidgin_action_group_class_init(PidginActionGroupClass *klass) {
40370
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
163 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
164
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
165 obj_class->finalize = pidgin_action_group_finalize;
40363
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 }
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 /******************************************************************************
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 * Public API
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 *****************************************************************************/
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 GSimpleActionGroup *
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 pidgin_action_group_new(void) {
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 return G_SIMPLE_ACTION_GROUP(g_object_new(PIDGIN_TYPE_ACTION_GROUP, NULL));
c8b010d1d430 Start to migrate the buddy list from GtkActionEntry and UiManager to GActionEntry and a custom widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 }
40370
74c0f140048d Use the new online and offline signals to manage the state of actions in PidginActionGroup
Gary Kramlich <grim@reaperworld.com>
parents: 40368
diff changeset
175

mercurial