Mercurial > pidgin.yaz
comparison src/gtkplugin.c @ 11817:1bb0efbd4394
[gaim-migrate @ 14108]
Patch from sadrul to show the preferences of non-gtk plugins. If this is broken, it is my fault.
committer: Tailor Script <tailor@pidgin.im>
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 25 Oct 2005 16:05:26 +0000 |
parents | 1f7f4f850db5 |
children | 9d3ab7919ee0 |
comparison
equal
deleted
inserted
replaced
11816:60fcaea41fc0 | 11817:1bb0efbd4394 |
---|---|
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
24 */ | 24 */ |
25 #include "internal.h" | 25 #include "internal.h" |
26 #include "gtkgaim.h" | 26 #include "gtkgaim.h" |
27 #include "gtkplugin.h" | 27 #include "gtkplugin.h" |
28 #include "gtkpluginpref.h" | |
28 #include "debug.h" | 29 #include "debug.h" |
29 #include "prefs.h" | 30 #include "prefs.h" |
30 | 31 |
31 #include <string.h> | 32 #include <string.h> |
32 | 33 |
36 static GHashTable *plugin_pref_dialogs = NULL; | 37 static GHashTable *plugin_pref_dialogs = NULL; |
37 | 38 |
38 GtkWidget * | 39 GtkWidget * |
39 gaim_gtk_plugin_get_config_frame(GaimPlugin *plugin) | 40 gaim_gtk_plugin_get_config_frame(GaimPlugin *plugin) |
40 { | 41 { |
41 GaimGtkPluginUiInfo *ui_info; | 42 GtkWidget *config = NULL; |
42 | 43 |
43 g_return_val_if_fail(plugin != NULL, NULL); | 44 g_return_val_if_fail(plugin != NULL, NULL); |
44 g_return_val_if_fail(GAIM_IS_GTK_PLUGIN(plugin), NULL); | 45 |
45 | 46 if (GAIM_IS_GTK_PLUGIN(plugin) && plugin->info->ui_info |
46 if (plugin->info->ui_info == NULL) | 47 && GAIM_GTK_PLUGIN_UI_INFO(plugin)->get_config_frame) |
47 return NULL; | 48 { |
48 | 49 GaimGtkPluginUiInfo *ui_info; |
49 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plugin); | 50 |
50 | 51 ui_info = GAIM_GTK_PLUGIN_UI_INFO(plugin); |
51 if (ui_info->get_config_frame == NULL) | 52 |
52 return NULL; | 53 config = ui_info->get_config_frame(plugin); |
53 | 54 |
54 return ui_info->get_config_frame(plugin); | 55 if (plugin->info->prefs_info |
56 && plugin->info->prefs_info->get_plugin_pref_frame) | |
57 { | |
58 gaim_debug_warning("gtkplugin", | |
59 "Plugin %s contains both, ui_info and " | |
60 "prefs_info preferences; prefs_info will be " | |
61 "ignored.", plugin->info->name); | |
62 } | |
63 } | |
64 | |
65 if (config == NULL && plugin->info->prefs_info | |
66 && plugin->info->prefs_info->get_plugin_pref_frame) | |
67 { | |
68 GaimPluginPrefFrame *frame; | |
69 | |
70 frame = plugin->info->prefs_info->get_plugin_pref_frame(plugin); | |
71 | |
72 config = gaim_gtk_plugin_pref_create_frame(frame); | |
73 } | |
74 | |
75 return config; | |
55 } | 76 } |
56 | 77 |
57 void | 78 void |
58 gaim_gtk_plugins_save(void) | 79 gaim_gtk_plugins_save(void) |
59 { | 80 { |
151 pref_dialog_response_cb(dialog, GTK_RESPONSE_DELETE_EVENT, plug); | 172 pref_dialog_response_cb(dialog, GTK_RESPONSE_DELETE_EVENT, plug); |
152 gaim_plugin_unload(plug); | 173 gaim_plugin_unload(plug); |
153 } | 174 } |
154 | 175 |
155 gtk_widget_set_sensitive(pref_button, | 176 gtk_widget_set_sensitive(pref_button, |
156 plug->info->ui_info != NULL && | 177 gaim_plugin_is_loaded(plug) |
157 GAIM_GTK_PLUGIN_UI_INFO(plug)->get_config_frame != NULL && | 178 && ((GAIM_IS_GTK_PLUGIN(plug) && plug->info->ui_info |
158 gaim_plugin_is_loaded(plug)); | 179 && GAIM_GTK_PLUGIN_UI_INFO(plug)->get_config_frame) |
180 || (plug->info->prefs_info | |
181 && plug->info->prefs_info->get_plugin_pref_frame))); | |
159 | 182 |
160 gdk_window_set_cursor(plugin_dialog->window, NULL); | 183 gdk_window_set_cursor(plugin_dialog->window, NULL); |
161 | 184 |
162 name = g_markup_escape_text(_(plug->info->name), -1); | 185 name = g_markup_escape_text(_(plug->info->name), -1); |
163 description = g_markup_escape_text(_(plug->info->description), -1); | 186 description = g_markup_escape_text(_(plug->info->description), -1); |
220 "<span weight=\"bold\">Web site:</span>\t\t%s\n" | 243 "<span weight=\"bold\">Web site:</span>\t\t%s\n" |
221 "<span weight=\"bold\">File name:</span>\t%s"), | 244 "<span weight=\"bold\">File name:</span>\t%s"), |
222 pdesc ? pdesc : "", pdesc ? "\n\n" : "", | 245 pdesc ? pdesc : "", pdesc ? "\n\n" : "", |
223 pauth ? pauth : "", pweb ? pweb : "", plug->path); | 246 pauth ? pauth : "", pweb ? pweb : "", plug->path); |
224 | 247 |
225 gtk_widget_set_sensitive(pref_button, | 248 gtk_widget_set_sensitive(pref_button, |
226 plug->info->ui_info != NULL && | 249 gaim_plugin_is_loaded(plug) |
227 GAIM_GTK_PLUGIN_UI_INFO(plug)->get_config_frame != NULL && | 250 && ((GAIM_IS_GTK_PLUGIN(plug) && plug->info->ui_info |
228 gaim_plugin_is_loaded(plug)); | 251 && GAIM_GTK_PLUGIN_UI_INFO(plug)->get_config_frame) |
252 || (plug->info->prefs_info | |
253 && plug->info->prefs_info->get_plugin_pref_frame))); | |
254 | |
229 gtk_label_set_markup(GTK_LABEL(plugin_details), buf); | 255 gtk_label_set_markup(GTK_LABEL(plugin_details), buf); |
230 g_value_unset(&val); | 256 g_value_unset(&val); |
231 g_free(buf); | 257 g_free(buf); |
232 g_free(pname); | 258 g_free(pname); |
233 g_free(pdesc); | 259 g_free(pdesc); |