Mercurial > pidgin.yaz
annotate finch/gntplugin.c @ 26791:80437c891f92
Publish only 'new' xmlns of avatars and delete old.
Instead of publishing our avatar to both PEP nodes, publish only to the new
and delete anything at the old. We still support receiving both/either.
Backward compatibility is achieved through vcard-temp:x:update.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 27 Apr 2009 05:49:32 +0000 |
parents | f5f08111da52 |
children | f7c5bb2f6623 5391094529c6 |
rev | line source |
---|---|
15818 | 1 /** |
2 * @file gntplugin.c GNT Plugins API | |
16194
0f0832c13fcb
Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@wiktel.com>
parents:
15871
diff
changeset
|
3 * @ingroup finch |
20074
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19680
diff
changeset
|
4 */ |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19680
diff
changeset
|
5 |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19680
diff
changeset
|
6 /* finch |
15818 | 7 * |
15871
66dff3dfdea6
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
8 * Finch is the legal property of its developers, whose names are too numerous |
15818 | 9 * to list here. Please refer to the COPYRIGHT file distributed with this |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
23 * along with this program; if not, write to the Free Software | |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18345
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15818 | 25 */ |
26 #include <gnt.h> | |
27 #include <gntbox.h> | |
28 #include <gntbutton.h> | |
29 #include <gntlabel.h> | |
30 #include <gntline.h> | |
31 #include <gnttree.h> | |
21276
5321f283365e
Pressing 'insert' in the plugins window triggers the 'Install Plugin..' button.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21244
diff
changeset
|
32 #include <gntutils.h> |
15818 | 33 |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18099
diff
changeset
|
34 #include "finch.h" |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18099
diff
changeset
|
35 |
20716
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
36 #include "debug.h" |
15818 | 37 #include "notify.h" |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
38 #include "request.h" |
15818 | 39 |
40 #include "gntplugin.h" | |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
41 #include "gntrequest.h" |
15818 | 42 |
43 static struct | |
44 { | |
45 GntWidget *tree; | |
46 GntWidget *window; | |
47 GntWidget *aboot; | |
48 GntWidget *conf; | |
49 } plugins; | |
50 | |
51 static GHashTable *confwins; | |
52 | |
18222
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
53 static GntWidget *process_pref_frame(PurplePluginPrefFrame *frame); |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
54 |
15818 | 55 static void |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
56 free_stringlist(GList *list) |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
57 { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
58 g_list_foreach(list, (GFunc)g_free, NULL); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
59 g_list_free(list); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
60 } |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
61 |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
62 static void |
15823 | 63 decide_conf_button(PurplePlugin *plugin) |
15818 | 64 { |
15823 | 65 if (purple_plugin_is_loaded(plugin) && |
66 ((PURPLE_IS_GNT_PLUGIN(plugin) && | |
67 FINCH_PLUGIN_UI_INFO(plugin) != NULL) || | |
15818 | 68 (plugin->info->prefs_info && |
69 plugin->info->prefs_info->get_plugin_pref_frame))) | |
70 gnt_widget_set_visible(plugins.conf, TRUE); | |
71 else | |
72 gnt_widget_set_visible(plugins.conf, FALSE); | |
73 | |
74 gnt_box_readjust(GNT_BOX(plugins.window)); | |
75 gnt_widget_draw(plugins.window); | |
76 } | |
77 | |
78 static void | |
15823 | 79 plugin_toggled_cb(GntWidget *tree, PurplePlugin *plugin, gpointer null) |
15818 | 80 { |
81 if (gnt_tree_get_choice(GNT_TREE(tree), plugin)) | |
82 { | |
16254
c3052de39110
If a plugin failed to load/unload, don't pretend that it worked
Richard Nelson <wabz@pidgin.im>
parents:
16194
diff
changeset
|
83 if (!purple_plugin_load(plugin)) { |
17160
a924c94ce5da
Mark strings for translation
Richard Nelson <wabz@pidgin.im>
parents:
16952
diff
changeset
|
84 purple_notify_error(NULL, _("ERROR"), _("loading plugin failed"), NULL); |
16254
c3052de39110
If a plugin failed to load/unload, don't pretend that it worked
Richard Nelson <wabz@pidgin.im>
parents:
16194
diff
changeset
|
85 gnt_tree_set_choice(GNT_TREE(tree), plugin, FALSE); |
c3052de39110
If a plugin failed to load/unload, don't pretend that it worked
Richard Nelson <wabz@pidgin.im>
parents:
16194
diff
changeset
|
86 } |
15818 | 87 } |
88 else | |
89 { | |
90 GntWidget *win; | |
91 | |
16254
c3052de39110
If a plugin failed to load/unload, don't pretend that it worked
Richard Nelson <wabz@pidgin.im>
parents:
16194
diff
changeset
|
92 if (!purple_plugin_unload(plugin)) { |
17160
a924c94ce5da
Mark strings for translation
Richard Nelson <wabz@pidgin.im>
parents:
16952
diff
changeset
|
93 purple_notify_error(NULL, _("ERROR"), _("unloading plugin failed"), NULL); |
21202
e34e56eeb2da
Use purple_plugin_disable() to get the right behavior with plugins that
Richard Laager <rlaager@wiktel.com>
parents:
20716
diff
changeset
|
94 purple_plugin_disable(plugin); |
16254
c3052de39110
If a plugin failed to load/unload, don't pretend that it worked
Richard Nelson <wabz@pidgin.im>
parents:
16194
diff
changeset
|
95 gnt_tree_set_choice(GNT_TREE(tree), plugin, TRUE); |
c3052de39110
If a plugin failed to load/unload, don't pretend that it worked
Richard Nelson <wabz@pidgin.im>
parents:
16194
diff
changeset
|
96 } |
15818 | 97 |
18222
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
98 if (confwins && (win = g_hash_table_lookup(confwins, plugin)) != NULL) |
15818 | 99 { |
100 gnt_widget_destroy(win); | |
101 } | |
102 } | |
103 decide_conf_button(plugin); | |
104 finch_plugins_save_loaded(); | |
105 } | |
106 | |
107 /* Xerox */ | |
108 void | |
109 finch_plugins_save_loaded(void) | |
110 { | |
16427
4999bbc52881
Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents:
16310
diff
changeset
|
111 purple_plugins_save_loaded("/finch/plugins/loaded"); |
15818 | 112 } |
113 | |
114 static void | |
115 selection_changed(GntWidget *widget, gpointer old, gpointer current, gpointer null) | |
116 { | |
15823 | 117 PurplePlugin *plugin = current; |
15818 | 118 char *text; |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
119 GList *list = NULL, *iter = NULL; |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
120 |
18099
7be04c20bf22
Let's not crash if there's no plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17160
diff
changeset
|
121 if (!plugin) |
7be04c20bf22
Let's not crash if there's no plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17160
diff
changeset
|
122 return; |
7be04c20bf22
Let's not crash if there's no plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17160
diff
changeset
|
123 |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
124 /* If the selected plugin was unseen before, mark it as seen. But save the list |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
125 * only when the plugin list is closed. So if the user enables a plugin, and it |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
126 * crashes, it won't get marked as seen so the user can fix the bug and still |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
127 * quickly find the plugin in the list. |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
128 * I probably mean 'plugin developers' by 'users' here. */ |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
129 list = g_object_get_data(G_OBJECT(widget), "seen-list"); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
130 if (list) |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
131 iter = g_list_find_custom(list, plugin->path, (GCompareFunc)strcmp); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
132 if (!iter) { |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
133 list = g_list_prepend(list, g_strdup(plugin->path)); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
134 g_object_set_data(G_OBJECT(widget), "seen-list", list); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
135 } |
15818 | 136 |
137 /* XXX: Use formatting and stuff */ | |
138 gnt_text_view_clear(GNT_TEXT_VIEW(plugins.aboot)); | |
139 text = g_strdup_printf(_("Name: %s\nVersion: %s\nDescription: %s\nAuthor: %s\nWebsite: %s\nFilename: %s\n"), | |
20713
8ed95ae6441b
Translate plugin information, and top-align them.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20074
diff
changeset
|
140 SAFE(_(plugin->info->name)), SAFE(_(plugin->info->version)), SAFE(_(plugin->info->description)), |
8ed95ae6441b
Translate plugin information, and top-align them.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20074
diff
changeset
|
141 SAFE(_(plugin->info->author)), SAFE(_(plugin->info->homepage)), SAFE(plugin->path)); |
15818 | 142 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(plugins.aboot), |
143 text, GNT_TEXT_FLAG_NORMAL); | |
144 gnt_text_view_scroll(GNT_TEXT_VIEW(plugins.aboot), 0); | |
145 g_free(text); | |
146 decide_conf_button(plugin); | |
147 } | |
148 | |
149 static void | |
150 reset_plugin_window(GntWidget *window, gpointer null) | |
151 { | |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
152 GList *list = g_object_get_data(G_OBJECT(plugins.tree), "seen-list"); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
153 purple_prefs_set_path_list("/finch/plugins/seen", list); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
154 g_list_foreach(list, (GFunc)g_free, NULL); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
155 g_list_free(list); |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
156 |
15818 | 157 plugins.window = NULL; |
158 plugins.tree = NULL; | |
159 plugins.aboot = NULL; | |
160 } | |
161 | |
162 static int | |
15823 | 163 plugin_compare(PurplePlugin *p1, PurplePlugin *p2) |
15818 | 164 { |
165 char *s1 = g_utf8_strup(p1->info->name, -1); | |
166 char *s2 = g_utf8_strup(p2->info->name, -1); | |
167 int ret = g_utf8_collate(s1, s2); | |
168 g_free(s1); | |
169 g_free(s2); | |
170 return ret; | |
171 } | |
172 | |
173 static void | |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21809
diff
changeset
|
174 confwin_init(void) |
15818 | 175 { |
176 confwins = g_hash_table_new(g_direct_hash, g_direct_equal); | |
177 } | |
178 | |
179 static void | |
180 remove_confwin(GntWidget *window, gpointer plugin) | |
181 { | |
182 g_hash_table_remove(confwins, plugin); | |
183 } | |
184 | |
185 static void | |
186 configure_plugin_cb(GntWidget *button, gpointer null) | |
187 { | |
15823 | 188 PurplePlugin *plugin; |
15818 | 189 FinchPluginFrame callback; |
190 | |
191 g_return_if_fail(plugins.tree != NULL); | |
192 | |
193 plugin = gnt_tree_get_selection_data(GNT_TREE(plugins.tree)); | |
15823 | 194 if (!purple_plugin_is_loaded(plugin)) |
15818 | 195 { |
15823 | 196 purple_notify_error(plugin, _("Error"), |
15818 | 197 _("Plugin need to be loaded before you can configure it."), NULL); |
198 return; | |
199 } | |
200 | |
201 if (confwins && g_hash_table_lookup(confwins, plugin)) | |
202 return; | |
203 | |
15823 | 204 if (PURPLE_IS_GNT_PLUGIN(plugin) && |
205 (callback = FINCH_PLUGIN_UI_INFO(plugin)) != NULL) | |
15818 | 206 { |
207 GntWidget *window = gnt_vbox_new(FALSE); | |
208 GntWidget *box, *button; | |
209 | |
210 gnt_box_set_toplevel(GNT_BOX(window), TRUE); | |
211 gnt_box_set_title(GNT_BOX(window), plugin->info->name); | |
212 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
213 | |
214 box = callback(); | |
215 gnt_box_add_widget(GNT_BOX(window), box); | |
216 | |
217 box = gnt_hbox_new(FALSE); | |
218 gnt_box_add_widget(GNT_BOX(window), box); | |
219 | |
220 button = gnt_button_new(_("Close")); | |
221 gnt_box_add_widget(GNT_BOX(box), button); | |
222 g_signal_connect_swapped(G_OBJECT(button), "activate", | |
223 G_CALLBACK(gnt_widget_destroy), window); | |
224 g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(remove_confwin), plugin); | |
225 | |
226 gnt_widget_show(window); | |
227 | |
228 if (confwins == NULL) | |
229 confwin_init(); | |
230 g_hash_table_insert(confwins, plugin, window); | |
231 } | |
232 else if (plugin->info->prefs_info && | |
233 plugin->info->prefs_info->get_plugin_pref_frame) | |
234 { | |
18222
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
235 GntWidget *win = process_pref_frame(plugin->info->prefs_info->get_plugin_pref_frame(plugin)); |
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
236 if (confwins == NULL) |
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
237 confwin_init(); |
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
238 g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(remove_confwin), plugin); |
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
239 g_hash_table_insert(confwins, plugin, win); |
15818 | 240 return; |
241 } | |
242 else | |
243 { | |
15823 | 244 purple_notify_info(plugin, _("Error"), |
15818 | 245 _("No configuration options for this plugin."), NULL); |
246 return; | |
247 } | |
248 } | |
249 | |
20716
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
250 static void |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
251 install_selected_file_cb(gpointer handle, const char *filename) |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
252 { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
253 /* Try to init the selected file. |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
254 * If it succeeds, try to make a copy of the file in $USERDIR/plugins/. |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
255 * If the copy succeeds, unload and destroy the plugin in the original |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
256 * location and init+load the new one. |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
257 * Select the plugin in the plugin list. |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
258 */ |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
259 char *path; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
260 PurplePlugin *plugin; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
261 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
262 g_return_if_fail(plugins.window); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
263 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
264 plugin = purple_plugin_probe(filename); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
265 if (!plugin) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
266 purple_notify_error(handle, _("Error loading plugin"), |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
267 _("The selected file is not a valid plugin."), |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
268 _("Please open the debug window and try again to see the exact error message.")); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
269 return; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
270 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
271 if (g_list_find(gnt_tree_get_rows(GNT_TREE(plugins.tree)), plugin)) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
272 purple_plugin_load(plugin); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
273 gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin)); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
274 gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
275 return; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
276 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
277 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
278 path = g_build_filename(purple_user_dir(), "plugins", NULL); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
279 if (purple_build_dir(path, S_IRUSR | S_IWUSR | S_IXUSR) == 0) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
280 char *content = NULL; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
281 gsize length = 0; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
282 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
283 if (g_file_get_contents(filename, &content, &length, NULL)) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
284 char *file = g_path_get_basename(filename); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
285 g_free(path); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
286 path = g_build_filename(purple_user_dir(), "plugins", file, NULL); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
287 if (purple_util_write_data_to_file_absolute(path, content, length)) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
288 purple_plugin_destroy(plugin); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
289 plugin = purple_plugin_probe(path); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
290 if (!plugin) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
291 purple_debug_warning("gntplugin", "This is really strange. %s can be loaded, but %s can't!\n", |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
292 filename, path); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
293 g_unlink(path); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
294 plugin = purple_plugin_probe(filename); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
295 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
296 } else { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
297 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
298 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
299 g_free(content); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
300 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
301 g_free(path); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
302 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
303 purple_plugin_load(plugin); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
304 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
305 if (plugin->info->type == PURPLE_PLUGIN_LOADER) { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
306 GList *cur; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
307 for (cur = PURPLE_PLUGIN_LOADER_INFO(plugin)->exts; cur != NULL; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
308 cur = cur->next) |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
309 purple_plugins_probe(cur->data); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
310 return; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
311 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
312 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
313 if (plugin->info->type != PURPLE_PLUGIN_STANDARD || |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
314 (plugin->info->flags & PURPLE_PLUGIN_FLAG_INVISIBLE) || |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
315 plugin->error) |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
316 return; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
317 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
318 gnt_tree_add_choice(GNT_TREE(plugins.tree), plugin, |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
319 gnt_tree_create_row(GNT_TREE(plugins.tree), plugin->info->name), NULL, NULL); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
320 gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin)); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
321 gnt_tree_set_row_flags(GNT_TREE(plugins.tree), plugin, GNT_TEXT_FLAG_BOLD); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
322 gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
323 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
324 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
325 static void |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
326 install_plugin_cb(GntWidget *w, gpointer null) |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
327 { |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
328 static int handle; |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
329 |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
330 purple_request_close_with_handle(&handle); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
331 purple_request_file(&handle, _("Select plugin to install"), NULL, |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
332 FALSE, G_CALLBACK(install_selected_file_cb), NULL, |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
333 NULL, NULL, NULL, &handle); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
334 g_signal_connect_swapped(G_OBJECT(w), "destroy", G_CALLBACK(purple_request_close_with_handle), &handle); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
335 } |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
336 |
15818 | 337 void finch_plugins_show_all() |
338 { | |
339 GntWidget *window, *tree, *box, *aboot, *button; | |
340 GList *iter; | |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
341 GList *seen; |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
342 |
18345
2d4df5ef0090
If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18242
diff
changeset
|
343 if (plugins.window) { |
2d4df5ef0090
If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18242
diff
changeset
|
344 gnt_window_present(plugins.window); |
15818 | 345 return; |
18345
2d4df5ef0090
If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18242
diff
changeset
|
346 } |
15818 | 347 |
15823 | 348 purple_plugins_probe(G_MODULE_SUFFIX); |
15818 | 349 |
350 plugins.window = window = gnt_vbox_new(FALSE); | |
351 gnt_box_set_toplevel(GNT_BOX(window), TRUE); | |
352 gnt_box_set_title(GNT_BOX(window), _("Plugins")); | |
353 gnt_box_set_pad(GNT_BOX(window), 0); | |
354 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
355 | |
356 gnt_box_add_widget(GNT_BOX(window), | |
357 gnt_label_new(_("You can (un)load plugins from the following list."))); | |
358 gnt_box_add_widget(GNT_BOX(window), gnt_hline_new()); | |
359 | |
360 box = gnt_hbox_new(FALSE); | |
361 gnt_box_add_widget(GNT_BOX(window), box); | |
362 gnt_box_add_widget(GNT_BOX(window), gnt_hline_new()); | |
363 | |
364 gnt_box_set_pad(GNT_BOX(box), 0); | |
365 plugins.tree = tree = gnt_tree_new(); | |
366 gnt_tree_set_compare_func(GNT_TREE(tree), (GCompareFunc)plugin_compare); | |
367 GNT_WIDGET_SET_FLAGS(tree, GNT_WIDGET_NO_BORDER); | |
368 gnt_box_add_widget(GNT_BOX(box), tree); | |
369 gnt_box_add_widget(GNT_BOX(box), gnt_vline_new()); | |
370 | |
371 plugins.aboot = aboot = gnt_text_view_new(); | |
20713
8ed95ae6441b
Translate plugin information, and top-align them.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20074
diff
changeset
|
372 gnt_text_view_set_flag(GNT_TEXT_VIEW(aboot), GNT_TEXT_VIEW_TOP_ALIGN); |
15818 | 373 gnt_widget_set_size(aboot, 40, 20); |
374 gnt_box_add_widget(GNT_BOX(box), aboot); | |
375 | |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
376 seen = purple_prefs_get_path_list("/finch/plugins/seen"); |
15823 | 377 for (iter = purple_plugins_get_all(); iter; iter = iter->next) |
15818 | 378 { |
15823 | 379 PurplePlugin *plug = iter->data; |
15818 | 380 |
18242
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
381 if (plug->info->type == PURPLE_PLUGIN_LOADER) { |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
382 GList *cur; |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
383 for (cur = PURPLE_PLUGIN_LOADER_INFO(plug)->exts; cur != NULL; |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
384 cur = cur->next) |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
385 purple_plugins_probe(cur->data); |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
386 continue; |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
387 } |
2500e968be58
Load new non-native plugins when the plugins window opens.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18222
diff
changeset
|
388 |
15823 | 389 if (plug->info->type != PURPLE_PLUGIN_STANDARD || |
390 (plug->info->flags & PURPLE_PLUGIN_FLAG_INVISIBLE) || | |
15818 | 391 plug->error) |
392 continue; | |
393 | |
394 gnt_tree_add_choice(GNT_TREE(tree), plug, | |
395 gnt_tree_create_row(GNT_TREE(tree), plug->info->name), NULL, NULL); | |
15823 | 396 gnt_tree_set_choice(GNT_TREE(tree), plug, purple_plugin_is_loaded(plug)); |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
397 if (!g_list_find_custom(seen, plug->path, (GCompareFunc)strcmp)) |
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
398 gnt_tree_set_row_flags(GNT_TREE(tree), plug, GNT_TEXT_FLAG_BOLD); |
15818 | 399 } |
400 gnt_tree_set_col_width(GNT_TREE(tree), 0, 30); | |
401 g_signal_connect(G_OBJECT(tree), "toggled", G_CALLBACK(plugin_toggled_cb), NULL); | |
402 g_signal_connect(G_OBJECT(tree), "selection_changed", G_CALLBACK(selection_changed), NULL); | |
16952
beb960114f7d
I liked Etan's suggestion in devel. Now, Finch will bold unseen plugins in the plugin dialog. A plugin is considered 'seen' only after the details of the plugin is viewed by the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16442
diff
changeset
|
403 g_object_set_data(G_OBJECT(tree), "seen-list", seen); |
15818 | 404 |
405 box = gnt_hbox_new(FALSE); | |
406 gnt_box_add_widget(GNT_BOX(window), box); | |
407 | |
20716
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
408 button = gnt_button_new(_("Install Plugin...")); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
409 gnt_box_add_widget(GNT_BOX(box), button); |
21276
5321f283365e
Pressing 'insert' in the plugins window triggers the 'Install Plugin..' button.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21244
diff
changeset
|
410 gnt_util_set_trigger_widget(GNT_WIDGET(tree), GNT_KEY_INS, button); |
20716
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
411 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(install_plugin_cb), NULL); |
227e397d8e80
Add a 'Install plugin...' button in the plugins dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20713
diff
changeset
|
412 |
15818 | 413 button = gnt_button_new(_("Close")); |
414 gnt_box_add_widget(GNT_BOX(box), button); | |
415 g_signal_connect_swapped(G_OBJECT(button), "activate", | |
416 G_CALLBACK(gnt_widget_destroy), window); | |
417 | |
418 plugins.conf = button = gnt_button_new(_("Configure Plugin")); | |
419 gnt_box_add_widget(GNT_BOX(box), button); | |
420 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(configure_plugin_cb), NULL); | |
421 | |
422 g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(reset_plugin_window), NULL); | |
423 | |
424 gnt_widget_show(window); | |
425 | |
426 decide_conf_button(gnt_tree_get_selection_data(GNT_TREE(tree))); | |
427 } | |
428 | |
18222
ef65d43190e5
Fix a few runtime warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
429 static GntWidget* |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
430 process_pref_frame(PurplePluginPrefFrame *frame) |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
431 { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
432 PurpleRequestField *field; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
433 PurpleRequestFields *fields; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
434 PurpleRequestFieldGroup *group = NULL; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
435 GList *prefs; |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
436 GList *stringlist = NULL; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
437 GntWidget *ret = NULL; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
438 |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
439 fields = purple_request_fields_new(); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
440 |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
441 for (prefs = purple_plugin_pref_frame_get_prefs(frame); prefs; prefs = prefs->next) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
442 PurplePluginPref *pref = prefs->data; |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
443 PurplePrefType type; |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
444 const char *name = purple_plugin_pref_get_name(pref); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
445 const char *label = purple_plugin_pref_get_label(pref); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
446 if(name == NULL) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
447 if(label == NULL) |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
448 continue; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
449 |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
450 if(purple_plugin_pref_get_type(pref) == PURPLE_PLUGIN_PREF_INFO) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
451 field = purple_request_field_label_new("*", purple_plugin_pref_get_label(pref)); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
452 purple_request_field_group_add_field(group, field); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
453 } else { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
454 group = purple_request_field_group_new(label); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
455 purple_request_fields_add_group(fields, group); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
456 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
457 continue; |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
458 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
459 |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
460 field = NULL; |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
461 type = purple_prefs_get_type(name); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
462 if(purple_plugin_pref_get_type(pref) == PURPLE_PLUGIN_PREF_CHOICE) { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
463 GList *list = purple_plugin_pref_get_choices(pref); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
464 gpointer current_value = NULL; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
465 |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
466 switch(type) { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
467 case PURPLE_PREF_BOOLEAN: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
468 current_value = g_strdup_printf("%d", (int)purple_prefs_get_bool(name)); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
469 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
470 case PURPLE_PREF_INT: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
471 current_value = g_strdup_printf("%d", (int)purple_prefs_get_int(name)); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
472 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
473 case PURPLE_PREF_STRING: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
474 current_value = g_strdup(purple_prefs_get_string(name)); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
475 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
476 default: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
477 continue; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
478 } |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
479 |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
480 field = purple_request_field_list_new(name, label); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
481 purple_request_field_list_set_multi_select(field, FALSE); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
482 while (list && list->next) { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
483 const char *label = list->data; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
484 char *value = NULL; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
485 switch(type) { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
486 case PURPLE_PREF_BOOLEAN: |
26281
b23211876f47
Fix Finch warnings when building on 64-bit
Paul Aurich <paul@darkrain42.org>
parents:
22007
diff
changeset
|
487 value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data)); |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
488 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
489 case PURPLE_PREF_INT: |
26281
b23211876f47
Fix Finch warnings when building on 64-bit
Paul Aurich <paul@darkrain42.org>
parents:
22007
diff
changeset
|
490 value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data)); |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
491 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
492 case PURPLE_PREF_STRING: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
493 value = g_strdup(list->next->data); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
494 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
495 default: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
496 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
497 } |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
498 stringlist = g_list_prepend(stringlist, value); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
499 purple_request_field_list_add(field, label, value); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
500 if (strcmp(value, current_value) == 0) |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
501 purple_request_field_list_add_selected(field, label); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
502 list = list->next->next; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
503 } |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
504 g_free(current_value); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
505 } else { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
506 switch(type) { |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
507 case PURPLE_PREF_BOOLEAN: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
508 field = purple_request_field_bool_new(name, label, purple_prefs_get_bool(name)); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
509 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
510 case PURPLE_PREF_INT: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
511 field = purple_request_field_int_new(name, label, purple_prefs_get_int(name)); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
512 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
513 case PURPLE_PREF_STRING: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
514 field = purple_request_field_string_new(name, label, purple_prefs_get_string(name), |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
515 purple_plugin_pref_get_format_type(pref) & PURPLE_STRING_FORMAT_TYPE_MULTILINE); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
516 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
517 default: |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
518 break; |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
519 } |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
520 } |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
521 |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
522 if (field) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
523 if (group == NULL) { |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
524 group = purple_request_field_group_new(_("Preferences")); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
525 purple_request_fields_add_group(fields, group); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
526 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
527 purple_request_field_group_add_field(group, field); |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
528 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
529 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
530 |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
531 ret = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, |
16442
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16427
diff
changeset
|
532 _("Save"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL, |
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16427
diff
changeset
|
533 NULL, NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
534 NULL); |
21809
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
535 g_signal_connect_swapped(G_OBJECT(ret), "destroy", G_CALLBACK(free_stringlist), stringlist); |
0a5dcdbdc89a
Create a 'list' request-field for a 'choice' plugin pref.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21560
diff
changeset
|
536 return ret; |
16310
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
537 } |
8c89913276b3
Implement the plugin-pref ui using the request api. The preferences for the core plugins can now be modified from Finch. And no new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16254
diff
changeset
|
538 |