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