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);