Fri, 02 Jul 2021 21:33:49 -0500
Fix warnings about changing types on assignment.
Testing Done:
Compiled only.
Reviewed at https://reviews.imfreedom.org/r/786/
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * pidgin |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * Pidgin is the legal property of its developers, whose names are too numerous |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * source distribution. |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * This program is free software; you can redistribute it and/or modify |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * it under the terms of the GNU General Public License as published by |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * the Free Software Foundation; either version 2 of the License, or |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * (at your option) any later version. |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * This program is distributed in the hope that it will be useful, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * GNU General Public License for more details. |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | * |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | * along with this program; if not, write to the Free Software |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
23 | #include "pidginpluginsmenu.h" |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
25 | #include <gplugin.h> |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | #include <purple.h> |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | struct _PidginPluginsMenu { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | GtkMenu parent; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
31 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | GtkWidget *separator; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
33 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | GSimpleActionGroup *action_group; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | GHashTable *plugin_items; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | }; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | #define PIDGIN_PLUGINS_MENU_ACTION_PREFIX "plugins-menu" |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
41 | /****************************************************************************** |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | * Helpers |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | *****************************************************************************/ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | static void |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | pidgin_plugins_menu_action_activated(GSimpleAction *simple, GVariant *parameter, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
46 | gpointer data) |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
47 | { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
48 | PurplePluginAction *action = (PurplePluginAction *)data; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
49 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
50 | if(action != NULL && action->callback != NULL) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
51 | action->callback(action); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
52 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
53 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
54 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
55 | static void |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
56 | pidgin_plugins_menu_add_plugin_actions(PidginPluginsMenu *menu, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
57 | PurplePlugin *plugin) |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
58 | { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
59 | GPluginPluginInfo *info = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | PurplePluginActionsCb actions_cb = NULL; |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
61 | GList *actions = NULL; |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
62 | GtkWidget *submenu = NULL, *item = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
63 | gint i = 0; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
64 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
65 | info = gplugin_plugin_get_info(GPLUGIN_PLUGIN(plugin)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
66 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
67 | actions_cb = purple_plugin_info_get_actions_cb(PURPLE_PLUGIN_INFO(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
68 | if(actions_cb == NULL) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | g_object_unref(G_OBJECT(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
70 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | return; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
72 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
73 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
74 | actions = actions_cb(plugin); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
75 | if(actions == NULL) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
76 | g_object_unref(G_OBJECT(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
77 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
78 | return; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
79 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
80 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
81 | submenu = gtk_menu_new(); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
82 | |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
83 | for(i = 0; actions != NULL; i++) { |
|
40888
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
84 | PurplePluginAction *action = NULL; |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
85 | GSimpleAction *gaction = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
86 | GtkWidget *action_item = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
87 | gchar *action_base_name = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
88 | gchar *action_full_name = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
89 | |
|
40888
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
90 | action = (PurplePluginAction *)actions->data; |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
91 | if(action == NULL) { |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
92 | action_item = gtk_separator_menu_item_new(); |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
93 | gtk_widget_show(action_item); |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
94 | gtk_menu_shell_append(GTK_MENU_SHELL(submenu), action_item); |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
95 | |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
96 | actions = g_list_delete_link(actions, actions); |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
97 | |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
98 | continue; |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
99 | } |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
100 | |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
101 | if(action->label == NULL) { |
|
40888
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
102 | actions = g_list_delete_link(actions, actions); |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
103 | |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
104 | g_warn_if_reached(); |
|
b19789161e29
Add back support for menu separators in the menus for plugin actions
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
105 | |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
106 | continue; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
107 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
108 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
109 | action_base_name = g_strdup_printf("%s-%d", |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
110 | gplugin_plugin_info_get_id(info), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
111 | i); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
112 | action_full_name = g_strdup_printf("%s.%s", |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
113 | PIDGIN_PLUGINS_MENU_ACTION_PREFIX, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
114 | action_base_name); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
115 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
116 | /* create the menu item with the full action name */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
117 | action_item = gtk_menu_item_new_with_label(action->label); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
118 | gtk_actionable_set_action_name(GTK_ACTIONABLE(action_item), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
119 | action_full_name); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
120 | gtk_widget_show(action_item); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
121 | g_free(action_full_name); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
122 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
123 | /* add our action item to the menu */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
124 | gtk_menu_shell_append(GTK_MENU_SHELL(submenu), action_item); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
125 | |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
126 | /* now create the gaction with the base name */ |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
127 | gaction = g_simple_action_new(action_base_name, NULL); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
128 | g_free(action_base_name); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
129 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
130 | /* now connect to the activate signal of the action using |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
131 | * g_signal_connect_data with a destroy notify to free the plugin action |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
132 | * when the signal handler is removed. |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
133 | */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
134 | g_signal_connect_data(G_OBJECT(gaction), "activate", |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
135 | G_CALLBACK(pidgin_plugins_menu_action_activated), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
136 | action, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
137 | (GClosureNotify)purple_plugin_action_free, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
138 | 0); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
139 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
140 | /* finally add the action to the action group and remove our ref */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
141 | g_action_map_add_action(G_ACTION_MAP(menu->action_group), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
142 | G_ACTION(gaction)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
143 | g_object_unref(G_OBJECT(gaction)); |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
144 | |
|
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
145 | actions = g_list_delete_link(actions, actions); |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
146 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
147 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
148 | item = gtk_menu_item_new_with_label(gplugin_plugin_info_get_name(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
149 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
150 | gtk_widget_show(item); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
151 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
152 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
153 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
154 | g_hash_table_insert(menu->plugin_items, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
155 | g_object_ref(G_OBJECT(plugin)), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
156 | item); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
157 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
158 | g_object_unref(G_OBJECT(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
159 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
160 | /* make sure that our separator is visible */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
161 | gtk_widget_show(menu->separator); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
162 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
163 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
164 | static void |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
165 | pidgin_plugins_menu_remove_plugin_actions(PidginPluginsMenu *menu, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
166 | PurplePlugin *plugin) |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
167 | { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
168 | GPluginPluginInfo *info = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
169 | PurplePluginActionsCb actions_cb = NULL; |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
170 | GList *actions = NULL; |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
171 | gint i = 0; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
172 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
173 | /* try remove the menu item from plugin from the hash table. If we didn't |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
174 | * remove anything, we have nothing to do so bail. |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
175 | */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
176 | if(!g_hash_table_remove(menu->plugin_items, plugin)) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
177 | return; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
178 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
179 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
180 | info = gplugin_plugin_get_info(GPLUGIN_PLUGIN(plugin)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
181 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
182 | actions_cb = purple_plugin_info_get_actions_cb(PURPLE_PLUGIN_INFO(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
183 | if(actions_cb == NULL) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
184 | g_object_unref(G_OBJECT(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
185 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
186 | return; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
187 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
188 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
189 | actions = actions_cb(plugin); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
190 | if(actions == NULL) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
191 | g_object_unref(G_OBJECT(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
192 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
193 | return; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
194 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
195 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
196 | /* now walk through the actions and remove them from the action group. */ |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
197 | for(i = 0; actions != NULL; i++) { |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
198 | gchar *name = NULL; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
199 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
200 | name = g_strdup_printf("%s-%d", gplugin_plugin_info_get_id(info), i); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
201 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
202 | g_action_map_remove_action(G_ACTION_MAP(menu->action_group), name); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
203 | g_free(name); |
|
40391
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
204 | |
|
25835e61ad50
Fix a few more things found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40387
diff
changeset
|
205 | actions = g_list_delete_link(actions, actions); |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
206 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
207 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
208 | g_object_unref(G_OBJECT(info)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
209 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
210 | /* finally, if this was the last item in the list, hide the separator. */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
211 | if(g_hash_table_size(menu->plugin_items) == 0) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
212 | gtk_widget_hide(menu->separator); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
213 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
214 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
215 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
216 | /****************************************************************************** |
|
40896
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
217 | * Callbacks |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
218 | *****************************************************************************/ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
219 | static void |
|
40896
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
220 | pidgin_plugins_menu_plugin_loaded_cb(GObject *manager, GPluginPlugin *plugin, |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
221 | gpointer data) |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
222 | { |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
223 | pidgin_plugins_menu_add_plugin_actions(PIDGIN_PLUGINS_MENU(data), plugin); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
224 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
225 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
226 | static void |
|
40896
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
227 | pidgin_plugins_menu_plugin_unloaded_cb(GObject *manager, GPluginPlugin *plugin, |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
228 | gpointer data) |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
229 | { |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
230 | pidgin_plugins_menu_remove_plugin_actions(PIDGIN_PLUGINS_MENU(data), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
231 | plugin); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
232 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
233 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
234 | /****************************************************************************** |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
235 | * GObject Implementation |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
236 | *****************************************************************************/ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
237 | G_DEFINE_TYPE(PidginPluginsMenu, pidgin_plugins_menu, GTK_TYPE_MENU) |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
238 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
239 | static void |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
240 | pidgin_plugins_menu_init(PidginPluginsMenu *menu) { |
|
40978
2cb285cacbfd
Fix warnings about changing types on assignment.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40896
diff
changeset
|
241 | GPluginManager *manager = NULL; |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
242 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
243 | /* initialize our template */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
244 | gtk_widget_init_template(GTK_WIDGET(menu)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
245 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
246 | /* create our internal action group and assign it to ourself */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
247 | menu->action_group = g_simple_action_group_new(); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
248 | gtk_widget_insert_action_group(GTK_WIDGET(menu), |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
249 | PIDGIN_PLUGINS_MENU_ACTION_PREFIX, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
250 | G_ACTION_GROUP(menu->action_group)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
251 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
252 | /* create our storage for the items */ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
253 | menu->plugin_items = g_hash_table_new_full(g_direct_hash, g_direct_equal, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
254 | g_object_unref, |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
255 | (GDestroyNotify)gtk_widget_destroy); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
256 | |
|
40896
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
257 | /* Connect to the plugin manager's signals so we can stay up to date. */ |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
258 | manager = gplugin_manager_get_instance(); |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
259 | |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
260 | g_signal_connect_object(manager, "loaded-plugin", |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
261 | G_CALLBACK(pidgin_plugins_menu_plugin_loaded_cb), |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
262 | menu, 0); |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
263 | g_signal_connect_object(manager, "unloaded-plugin", |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
264 | G_CALLBACK(pidgin_plugins_menu_plugin_unloaded_cb), |
|
031172d26bef
Use GPluginManager directly in PidginPluginsMenu
Gary Kramlich <grim@reaperworld.com>
parents:
40888
diff
changeset
|
265 | menu, 0); |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
266 | }; |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
267 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
268 | static void |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
269 | pidgin_plugins_menu_class_init(PidginPluginsMenuClass *klass) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
270 | GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
271 | |
|
40387
4cdb2a681dc1
use g_list_index instead of manually searching a list and a bunch of whitespace fixes
Gary Kramlich <grim@reaperworld.com>
parents:
40373
diff
changeset
|
272 | gtk_widget_class_set_template_from_resource( |
|
4cdb2a681dc1
use g_list_index instead of manually searching a list and a bunch of whitespace fixes
Gary Kramlich <grim@reaperworld.com>
parents:
40373
diff
changeset
|
273 | widget_class, |
|
4cdb2a681dc1
use g_list_index instead of manually searching a list and a bunch of whitespace fixes
Gary Kramlich <grim@reaperworld.com>
parents:
40373
diff
changeset
|
274 | "/im/pidgin/Pidgin/Plugins/menu.ui" |
|
4cdb2a681dc1
use g_list_index instead of manually searching a list and a bunch of whitespace fixes
Gary Kramlich <grim@reaperworld.com>
parents:
40373
diff
changeset
|
275 | ); |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
276 | |
|
40387
4cdb2a681dc1
use g_list_index instead of manually searching a list and a bunch of whitespace fixes
Gary Kramlich <grim@reaperworld.com>
parents:
40373
diff
changeset
|
277 | gtk_widget_class_bind_template_child(widget_class, PidginPluginsMenu, |
|
4cdb2a681dc1
use g_list_index instead of manually searching a list and a bunch of whitespace fixes
Gary Kramlich <grim@reaperworld.com>
parents:
40373
diff
changeset
|
278 | separator); |
|
40373
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
279 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
280 | |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
281 | /****************************************************************************** |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
282 | * Public API |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
283 | *****************************************************************************/ |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
284 | GtkWidget * |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
285 | pidgin_plugins_menu_new(void) { |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
286 | return GTK_WIDGET(g_object_new(PIDGIN_TYPE_PLUGINS_MENU, NULL)); |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
287 | } |
|
5d2a493339f2
Add the new PidginPluginsMenu which manages itself when plugins and loaded/unloaded.
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
288 |