Tue, 17 Jan 2006 03:00:54 +0000
[gaim-migrate @ 15257]
Part of SF Patch #1406437 from Sadrul
This disconnects the signal handlers on the imhtml and its text buffer
that have the toolbar as the data parameter. As Sadrul put it, "It makes
sure that when an imhtml-attached toolbar is destroyed and the imhtml
still exists, the signal-callbacks don't get triggered."
committer: Richard Laager <rlaager@pidgin.im>
| 5205 | 1 | /** |
|
6927
528988ef2781
[gaim-migrate @ 7474]
Christian Hammond <chipx86@chipx86.com>
parents:
5982
diff
changeset
|
2 | * @file gtkplugin.c GTK+ Plugins support |
|
528988ef2781
[gaim-migrate @ 7474]
Christian Hammond <chipx86@chipx86.com>
parents:
5982
diff
changeset
|
3 | * @ingroup gtkui |
| 5205 | 4 | * |
| 5 | * gaim | |
| 6 | * | |
| 8046 | 7 | * Gaim is the legal property of its developers, whose names are too numerous |
| 8 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 9 | * source distribution. | |
|
6927
528988ef2781
[gaim-migrate @ 7474]
Christian Hammond <chipx86@chipx86.com>
parents:
5982
diff
changeset
|
10 | * |
| 5205 | 11 | * This program is free software; you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | */ | |
| 11740 | 25 | #include "internal.h" |
| 9791 | 26 | #include "gtkgaim.h" |
| 5205 | 27 | #include "gtkplugin.h" |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
28 | #include "gtkpluginpref.h" |
|
5981
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
29 | #include "debug.h" |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
30 | #include "prefs.h" |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
31 | |
| 5205 | 32 | #include <string.h> |
| 33 | ||
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
34 | #define GAIM_RESPONSE_CONFIGURE 98121 |
|
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
35 | |
|
12343
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
36 | static GtkWidget *expander = NULL; |
| 11740 | 37 | static GtkWidget *plugin_dialog = NULL; |
| 38 | static GtkWidget *plugin_details = NULL; | |
| 39 | static GtkWidget *pref_button = NULL; | |
| 11781 | 40 | static GHashTable *plugin_pref_dialogs = NULL; |
| 11747 | 41 | |
| 5205 | 42 | GtkWidget * |
| 43 | gaim_gtk_plugin_get_config_frame(GaimPlugin *plugin) | |
| 44 | { | |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
45 | GtkWidget *config = NULL; |
| 5205 | 46 | |
| 47 | g_return_val_if_fail(plugin != NULL, NULL); | |
| 48 | ||
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
49 | if (GAIM_IS_GTK_PLUGIN(plugin) && plugin->info->ui_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
50 | && GAIM_GTK_PLUGIN_UI_INFO(plugin)->get_config_frame) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
51 | { |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
52 | GaimGtkPluginUiInfo *ui_info; |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
53 | |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
54 | ui_info = GAIM_GTK_PLUGIN_UI_INFO(plugin); |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
55 | |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
56 | config = ui_info->get_config_frame(plugin); |
| 5205 | 57 | |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
58 | if (plugin->info->prefs_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
59 | && plugin->info->prefs_info->get_plugin_pref_frame) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
60 | { |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
61 | gaim_debug_warning("gtkplugin", |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
62 | "Plugin %s contains both, ui_info and " |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
63 | "prefs_info preferences; prefs_info will be " |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
64 | "ignored.", plugin->info->name); |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
65 | } |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
66 | } |
| 5205 | 67 | |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
68 | if (config == NULL && plugin->info->prefs_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
69 | && plugin->info->prefs_info->get_plugin_pref_frame) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
70 | { |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
71 | GaimPluginPrefFrame *frame; |
| 5205 | 72 | |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
73 | frame = plugin->info->prefs_info->get_plugin_pref_frame(plugin); |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
74 | |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
75 | config = gaim_gtk_plugin_pref_create_frame(frame); |
| 12870 | 76 | |
| 12889 | 77 | /* XXX According to bug #1407047 this broke saving pluging preferences, I'll look at fixing it correctly later. |
| 12870 | 78 | gaim_plugin_pref_frame_destroy(frame); |
| 12889 | 79 | */ |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
80 | } |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
81 | |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
82 | return config; |
| 5205 | 83 | } |
|
5981
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
84 | |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
85 | void |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
86 | gaim_gtk_plugins_save(void) |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
87 | { |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
88 | GList *pl; |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
89 | GList *files = NULL; |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
90 | GaimPlugin *p; |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
91 | |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
92 | for (pl = gaim_plugins_get_loaded(); pl != NULL; pl = pl->next) { |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
93 | p = pl->data; |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
94 | |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
95 | if (p->info->type != GAIM_PLUGIN_PROTOCOL && |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
96 | p->info->type != GAIM_PLUGIN_LOADER) { |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
97 | |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
98 | files = g_list_append(files, p->path); |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
99 | } |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
100 | } |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
101 | |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
102 | gaim_prefs_set_string_list("/gaim/gtk/plugins/loaded", files); |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
103 | g_list_free(files); |
|
c91ece01ad12
[gaim-migrate @ 6429]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
104 | } |
| 11740 | 105 | |
| 106 | static void | |
| 107 | update_plugin_list(void *data) | |
| 108 | { | |
| 109 | GtkListStore *ls = GTK_LIST_STORE(data); | |
| 110 | GtkTreeIter iter; | |
| 111 | GList *probes; | |
| 112 | GaimPlugin *plug; | |
| 113 | ||
| 114 | gtk_list_store_clear(ls); | |
|
12066
58ee6aa007c8
[gaim-migrate @ 14361]
Mark Doliner <markdoliner@pidgin.im>
parents:
11888
diff
changeset
|
115 | gaim_plugins_probe(G_MODULE_SUFFIX); |
| 11740 | 116 | |
| 117 | for (probes = gaim_plugins_get_all(); | |
| 118 | probes != NULL; | |
| 119 | probes = probes->next) | |
| 120 | { | |
|
12702
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
121 | char *name; |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
122 | char *version; |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
123 | char *summary; |
| 11740 | 124 | char *desc; |
| 125 | plug = probes->data; | |
| 126 | ||
| 127 | if (plug->info->type != GAIM_PLUGIN_STANDARD || | |
| 128 | (plug->info->flags & GAIM_PLUGIN_FLAG_INVISIBLE)) | |
| 129 | { | |
| 130 | continue; | |
| 131 | } | |
| 132 | ||
| 133 | gtk_list_store_append (ls, &iter); | |
|
12702
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
134 | |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
135 | name = g_markup_escape_text(plug->info->name ? _(plug->info->name) : g_basename(plug->path), -1); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
136 | version = g_markup_escape_text(plug->info->version, -1); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
137 | summary = g_markup_escape_text(_(plug->info->summary), -1); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
138 | |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
139 | desc = g_strdup_printf("<b>%s</b> %s\n%s", name, |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
140 | version, |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
141 | summary); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
142 | g_free(name); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
143 | g_free(version); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
144 | g_free(summary); |
|
fbd3bef47358
[gaim-migrate @ 15045]
Richard Laager <rlaager@pidgin.im>
parents:
12695
diff
changeset
|
145 | |
| 11740 | 146 | gtk_list_store_set(ls, &iter, |
| 147 | 0, gaim_plugin_is_loaded(plug), | |
| 148 | 1, desc, | |
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
149 | 2, plug, |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
150 | 3, gaim_plugin_is_unloadable(plug), |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
151 | -1); |
| 11740 | 152 | g_free(desc); |
| 153 | } | |
| 154 | } | |
| 155 | ||
| 11781 | 156 | static void pref_dialog_response_cb(GtkWidget *d, int response, GaimPlugin *plug) |
| 157 | { | |
| 158 | switch (response) { | |
| 159 | case GTK_RESPONSE_CLOSE: | |
| 160 | case GTK_RESPONSE_DELETE_EVENT: | |
| 161 | g_hash_table_remove(plugin_pref_dialogs, plug); | |
| 162 | if (g_hash_table_size(plugin_pref_dialogs) == 0) { | |
| 163 | g_hash_table_destroy(plugin_pref_dialogs); | |
| 164 | plugin_pref_dialogs = NULL; | |
| 165 | } | |
| 166 | gtk_widget_destroy(d); | |
| 167 | break; | |
| 168 | } | |
| 169 | } | |
| 170 | ||
| 11740 | 171 | static void plugin_load (GtkCellRendererToggle *cell, gchar *pth, gpointer data) |
| 172 | { | |
| 173 | GtkTreeModel *model = (GtkTreeModel *)data; | |
| 174 | GtkTreeIter iter; | |
| 175 | GtkTreePath *path = gtk_tree_path_new_from_string(pth); | |
| 176 | GaimPlugin *plug; | |
| 177 | gchar buf[1024]; | |
| 178 | gchar *name = NULL, *description = NULL; | |
| 11781 | 179 | GtkWidget *dialog = NULL; |
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
180 | GdkCursor *wait; |
| 11740 | 181 | |
| 182 | gtk_tree_model_get_iter (model, &iter, path); | |
| 183 | gtk_tree_model_get (model, &iter, 2, &plug, -1); | |
| 184 | ||
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
185 | /* Apparently, GTK+ won't honor the sensitive flag on cell renderers for booleans. */ |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
186 | if (gaim_plugin_is_unloadable(plug)) |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
187 | return; |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
188 | |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
189 | wait = gdk_cursor_new (GDK_WATCH); |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
190 | gdk_window_set_cursor(plugin_dialog->window, wait); |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
191 | gdk_cursor_unref(wait); |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
192 | |
| 11740 | 193 | if (!gaim_plugin_is_loaded(plug)) |
| 194 | gaim_plugin_load(plug); | |
| 11781 | 195 | else { |
| 196 | if (plugin_pref_dialogs != NULL && | |
| 197 | (dialog = g_hash_table_lookup(plugin_pref_dialogs, plug))) | |
| 198 | pref_dialog_response_cb(dialog, GTK_RESPONSE_DELETE_EVENT, plug); | |
| 11740 | 199 | gaim_plugin_unload(plug); |
| 11781 | 200 | } |
| 11740 | 201 | |
| 11781 | 202 | gtk_widget_set_sensitive(pref_button, |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
203 | gaim_plugin_is_loaded(plug) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
204 | && ((GAIM_IS_GTK_PLUGIN(plug) && plug->info->ui_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
205 | && GAIM_GTK_PLUGIN_UI_INFO(plug)->get_config_frame) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
206 | || (plug->info->prefs_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
207 | && plug->info->prefs_info->get_plugin_pref_frame))); |
| 11740 | 208 | |
| 11742 | 209 | gdk_window_set_cursor(plugin_dialog->window, NULL); |
| 11740 | 210 | |
| 211 | name = g_markup_escape_text(_(plug->info->name), -1); | |
| 212 | description = g_markup_escape_text(_(plug->info->description), -1); | |
| 11781 | 213 | |
| 11740 | 214 | if (plug->error != NULL) { |
| 215 | gchar *error = g_markup_escape_text(plug->error, -1); | |
| 216 | gchar *desc; | |
| 217 | g_snprintf(buf, sizeof(buf), | |
| 218 | "<span size=\"larger\">%s %s</span>\n\n" | |
| 219 | "<span weight=\"bold\" color=\"red\">%s</span>\n\n" | |
| 220 | "%s", | |
| 221 | name, plug->info->version, error, description); | |
| 222 | desc = g_strdup_printf("<b>%s</b> %s\n<span weight=\"bold\" color=\"red\"%s</span>", | |
| 223 | plug->info->name, plug->info->version, error); | |
| 11781 | 224 | gtk_list_store_set (GTK_LIST_STORE (model), &iter, |
| 11740 | 225 | 1, desc, |
| 226 | -1); | |
| 227 | g_free(desc); | |
| 228 | g_free(error); | |
|
11843
72bd7a3c9c3b
[gaim-migrate @ 14134]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11833
diff
changeset
|
229 | gtk_label_set_markup(GTK_LABEL(plugin_details), buf); |
| 11740 | 230 | } |
| 231 | g_free(name); | |
| 232 | g_free(description); | |
| 233 | ||
| 234 | ||
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
235 | gtk_list_store_set (GTK_LIST_STORE (model), &iter, |
|
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
236 | 0, gaim_plugin_is_loaded(plug), |
| 11740 | 237 | -1); |
| 238 | ||
| 239 | gtk_tree_path_free(path); | |
| 240 | gaim_gtk_plugins_save(); | |
| 241 | } | |
| 242 | ||
| 11877 | 243 | static gboolean ensure_plugin_visible(void *data) |
| 244 | { | |
| 245 | GtkTreeSelection *sel = GTK_TREE_SELECTION(data); | |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
246 | GtkTreeView *tv = gtk_tree_selection_get_tree_view(sel); |
| 11877 | 247 | GtkTreeModel *model = gtk_tree_view_get_model(tv); |
| 248 | GtkTreePath *path; | |
| 249 | GtkTreeIter iter; | |
| 250 | if (!gtk_tree_selection_get_selected (sel, &model, &iter)) | |
| 251 | return FALSE; | |
| 252 | path = gtk_tree_model_get_path(model, &iter); | |
| 253 | gtk_tree_view_scroll_to_cell(gtk_tree_selection_get_tree_view(sel), path, NULL, FALSE, 0, 0); | |
| 254 | gtk_tree_path_free(path); | |
| 255 | return FALSE; | |
| 256 | } | |
| 257 | ||
| 11740 | 258 | static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) |
| 259 | { | |
| 11741 | 260 | gchar *buf, *pname, *pdesc, *pauth, *pweb; |
| 11740 | 261 | GtkTreeIter iter; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12343
diff
changeset
|
262 | GValue val; |
| 11740 | 263 | GaimPlugin *plug; |
| 264 | ||
|
11833
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
265 | if (!gtk_tree_selection_get_selected (sel, &model, &iter)) |
|
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
266 | { |
|
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
267 | /* Clear the old plugin details */ |
|
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
268 | gtk_label_set_markup(GTK_LABEL(plugin_details), ""); |
|
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
269 | gtk_widget_set_sensitive(pref_button, FALSE); |
|
12343
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
270 | |
|
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
271 | /* Collapse and disable the expander widget */ |
|
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
272 | gtk_expander_set_expanded(GTK_EXPANDER(expander), FALSE); |
|
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
273 | gtk_widget_set_sensitive(expander, FALSE); |
|
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
274 | |
| 11740 | 275 | return; |
|
11833
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
276 | } |
|
119ea75db24b
[gaim-migrate @ 14124]
Mark Doliner <markdoliner@pidgin.im>
parents:
11817
diff
changeset
|
277 | |
|
12343
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
278 | gtk_widget_set_sensitive(expander, TRUE); |
|
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
279 | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12343
diff
changeset
|
280 | val.g_type = 0; |
| 11740 | 281 | gtk_tree_model_get_value (model, &iter, 2, &val); |
| 282 | plug = g_value_get_pointer(&val); | |
| 283 | ||
| 284 | pname = g_markup_escape_text(_(plug->info->name), -1); | |
| 285 | pdesc = (plug->info->description) ? | |
| 286 | g_markup_escape_text(_(plug->info->description), -1) : NULL; | |
| 287 | pauth = (plug->info->author) ? | |
| 288 | g_markup_escape_text(_(plug->info->author), -1) : NULL; | |
| 289 | pweb = (plug->info->homepage) ? | |
| 290 | g_markup_escape_text(_(plug->info->homepage), -1) : NULL; | |
| 291 | buf = g_strdup_printf( | |
|
11771
7e16b808a6ee
[gaim-migrate @ 14062]
Richard Laager <rlaager@pidgin.im>
parents:
11770
diff
changeset
|
292 | _("%s%s" |
| 11740 | 293 | "<span weight=\"bold\">Written by:</span>\t%s\n" |
|
12705
7780ec726bdb
[gaim-migrate @ 15048]
Richard Laager <rlaager@pidgin.im>
parents:
12702
diff
changeset
|
294 | "<span weight=\"bold\">Website:</span>\t\t%s\n" |
|
7780ec726bdb
[gaim-migrate @ 15048]
Richard Laager <rlaager@pidgin.im>
parents:
12702
diff
changeset
|
295 | "<span weight=\"bold\">Filename:</span>\t\t%s"), |
|
11771
7e16b808a6ee
[gaim-migrate @ 14062]
Richard Laager <rlaager@pidgin.im>
parents:
11770
diff
changeset
|
296 | pdesc ? pdesc : "", pdesc ? "\n\n" : "", |
| 11740 | 297 | pauth ? pauth : "", pweb ? pweb : "", plug->path); |
| 298 | ||
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
299 | if (plug->error != NULL) |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
300 | { |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
301 | char *tmp = g_strdup_printf( |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
302 | _("%s\n" |
|
12705
7780ec726bdb
[gaim-migrate @ 15048]
Richard Laager <rlaager@pidgin.im>
parents:
12702
diff
changeset
|
303 | "<span foreground=\"#ff0000\" weight=\"bold\">" |
|
7780ec726bdb
[gaim-migrate @ 15048]
Richard Laager <rlaager@pidgin.im>
parents:
12702
diff
changeset
|
304 | "Error: %s\n" |
|
7780ec726bdb
[gaim-migrate @ 15048]
Richard Laager <rlaager@pidgin.im>
parents:
12702
diff
changeset
|
305 | "Check the plugin website for an update." |
|
7780ec726bdb
[gaim-migrate @ 15048]
Richard Laager <rlaager@pidgin.im>
parents:
12702
diff
changeset
|
306 | "</span>"), |
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
307 | buf, plug->error); |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
308 | g_free(buf); |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
309 | buf = tmp; |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
310 | } |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
311 | |
|
11817
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
312 | gtk_widget_set_sensitive(pref_button, |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
313 | gaim_plugin_is_loaded(plug) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
314 | && ((GAIM_IS_GTK_PLUGIN(plug) && plug->info->ui_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
315 | && GAIM_GTK_PLUGIN_UI_INFO(plug)->get_config_frame) |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
316 | || (plug->info->prefs_info |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
317 | && plug->info->prefs_info->get_plugin_pref_frame))); |
|
b8622a510778
[gaim-migrate @ 14108]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11813
diff
changeset
|
318 | |
| 11740 | 319 | gtk_label_set_markup(GTK_LABEL(plugin_details), buf); |
| 11877 | 320 | |
| 321 | /* Make sure the selected plugin is still visible */ | |
| 322 | g_idle_add(ensure_plugin_visible, sel); | |
| 323 | ||
| 324 | ||
| 11740 | 325 | g_value_unset(&val); |
| 326 | g_free(buf); | |
| 327 | g_free(pname); | |
| 328 | g_free(pdesc); | |
| 329 | g_free(pauth); | |
| 330 | g_free(pweb); | |
| 331 | } | |
| 332 | ||
| 11741 | 333 | static void plugin_dialog_response_cb(GtkWidget *d, int response, GtkTreeSelection *sel) |
| 11740 | 334 | { |
| 335 | GaimPlugin *plug; | |
| 336 | GtkWidget *dialog, *box; | |
| 337 | GtkTreeModel *model; | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12343
diff
changeset
|
338 | GValue val; |
| 11740 | 339 | GtkTreeIter iter; |
| 340 | ||
| 341 | switch (response) { | |
| 342 | case GTK_RESPONSE_CLOSE: | |
| 343 | case GTK_RESPONSE_DELETE_EVENT: | |
| 344 | gtk_widget_destroy(d); | |
|
11888
525706b75438
[gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11886
diff
changeset
|
345 | if (plugin_pref_dialogs != NULL) { |
|
525706b75438
[gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11886
diff
changeset
|
346 | g_hash_table_destroy(plugin_pref_dialogs); |
|
525706b75438
[gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11886
diff
changeset
|
347 | plugin_pref_dialogs = NULL; |
|
525706b75438
[gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11886
diff
changeset
|
348 | } |
| 11740 | 349 | plugin_dialog = NULL; |
| 350 | break; | |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
351 | case GAIM_RESPONSE_CONFIGURE: |
| 11740 | 352 | if (! gtk_tree_selection_get_selected (sel, &model, &iter)) |
| 353 | return; | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12343
diff
changeset
|
354 | val.g_type = 0; |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12343
diff
changeset
|
355 | gtk_tree_model_get_value(model, &iter, 2, &val); |
| 11740 | 356 | plug = g_value_get_pointer(&val); |
| 357 | if (plug == NULL) | |
| 358 | break; | |
| 11781 | 359 | if (plugin_pref_dialogs != NULL && |
| 360 | g_hash_table_lookup(plugin_pref_dialogs, plug)) | |
| 11770 | 361 | break; |
| 11740 | 362 | box = gaim_gtk_plugin_get_config_frame(plug); |
| 363 | if (box == NULL) | |
| 364 | break; | |
| 365 | ||
| 11741 | 366 | dialog = gtk_dialog_new_with_buttons(GAIM_ALERT_TITLE, GTK_WINDOW(d), |
| 11744 | 367 | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT, |
| 11740 | 368 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
| 369 | NULL); | |
| 11781 | 370 | if (plugin_pref_dialogs == NULL) |
| 371 | plugin_pref_dialogs = g_hash_table_new(NULL, NULL); | |
| 372 | ||
| 373 | g_hash_table_insert(plugin_pref_dialogs, plug, dialog); | |
| 374 | ||
| 11770 | 375 | g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(pref_dialog_response_cb), plug); |
| 11740 | 376 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), box); |
| 11747 | 377 | gtk_window_set_role(GTK_WINDOW(dialog), "plugin_config"); |
|
12290
f2b2c5f855a1
[gaim-migrate @ 14594]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
12276
diff
changeset
|
378 | gtk_window_set_title(GTK_WINDOW(dialog), _(gaim_plugin_get_name(plug))); |
| 11740 | 379 | gtk_widget_show_all(dialog); |
| 11770 | 380 | g_value_unset(&val); |
| 11740 | 381 | break; |
| 382 | } | |
| 383 | } | |
| 384 | ||
|
12162
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
385 | static void |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
386 | show_plugin_prefs_cb(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer null) |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
387 | { |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
388 | GtkTreeSelection *sel; |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
389 | GtkTreeIter iter; |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
390 | GaimPlugin *plugin; |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
391 | GtkTreeModel *model; |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
392 | |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
393 | sel = gtk_tree_view_get_selection(view); |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
394 | |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
395 | if (!gtk_tree_selection_get_selected(sel, &model, &iter)) |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
396 | return; |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
397 | |
|
12162
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
398 | gtk_tree_model_get(model, &iter, 2, &plugin, -1); |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
399 | |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
400 | if (!gaim_plugin_is_loaded(plugin)) |
|
12174
3b0b53e84591
[gaim-migrate @ 14476]
Richard Laager <rlaager@pidgin.im>
parents:
12162
diff
changeset
|
401 | return; |
|
3b0b53e84591
[gaim-migrate @ 14476]
Richard Laager <rlaager@pidgin.im>
parents:
12162
diff
changeset
|
402 | |
|
12162
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
403 | /* Now show the pref-dialog for the plugin */ |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
404 | plugin_dialog_response_cb(NULL, GAIM_RESPONSE_CONFIGURE, sel); |
|
12162
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
405 | } |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
406 | |
| 11740 | 407 | void gaim_gtk_plugin_dialog_show() |
| 408 | { | |
| 11741 | 409 | GtkWidget *sw; |
| 11740 | 410 | GtkWidget *event_view; |
| 411 | GtkListStore *ls; | |
| 412 | GtkCellRenderer *rend, *rendt; | |
| 413 | GtkTreeViewColumn *col; | |
| 414 | GtkTreeSelection *sel; | |
| 415 | ||
| 416 | if (plugin_dialog != NULL) { | |
| 417 | gtk_window_present(GTK_WINDOW(plugin_dialog)); | |
| 418 | return; | |
| 419 | } | |
| 420 | ||
| 421 | plugin_dialog = gtk_dialog_new_with_buttons(_("Plugins"), | |
| 422 | NULL, | |
| 423 | GTK_DIALOG_NO_SEPARATOR, | |
| 424 | NULL); | |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
425 | pref_button = gtk_dialog_add_button(GTK_DIALOG(plugin_dialog), |
| 12276 | 426 | _("Configure Pl_ugin"), GAIM_RESPONSE_CONFIGURE); |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
427 | gtk_dialog_add_button(GTK_DIALOG(plugin_dialog), |
|
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
428 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); |
| 11813 | 429 | gtk_widget_set_sensitive(pref_button, FALSE); |
| 11747 | 430 | gtk_window_set_role(GTK_WINDOW(plugin_dialog), "plugins"); |
| 11740 | 431 | |
| 432 | sw = gtk_scrolled_window_new(NULL,NULL); | |
| 433 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); | |
| 434 | gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | |
| 435 | ||
| 436 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(plugin_dialog)->vbox), sw, TRUE, TRUE, 0); | |
| 437 | ||
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
438 | ls = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN); |
| 11740 | 439 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), |
| 440 | 1, GTK_SORT_ASCENDING); | |
| 441 | ||
| 442 | update_plugin_list(ls); | |
| 11813 | 443 | |
| 11740 | 444 | event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(ls)); |
| 445 | ||
|
12162
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
446 | g_signal_connect(G_OBJECT(event_view), "row-activated", |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
447 | G_CALLBACK(show_plugin_prefs_cb), event_view); |
|
449845a545ab
[gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12066
diff
changeset
|
448 | |
| 11740 | 449 | rend = gtk_cell_renderer_toggle_new(); |
| 450 | sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); | |
| 451 | ||
| 452 | col = gtk_tree_view_column_new_with_attributes (_("Enabled"), | |
| 453 | rend, | |
| 454 | "active", 0, | |
| 455 | NULL); | |
| 456 | gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
|
11794
6c39942d27a9
[gaim-migrate @ 14085]
Gary Kramlich <grim@reaperworld.com>
parents:
11783
diff
changeset
|
457 | gtk_tree_view_column_set_sort_column_id(col, 0); |
| 11740 | 458 | g_signal_connect (G_OBJECT(rend), "toggled", |
| 459 | G_CALLBACK(plugin_load), ls); | |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
460 | |
| 11740 | 461 | rendt = gtk_cell_renderer_text_new(); |
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
462 | g_object_set(rendt, |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
463 | "foreground", "#c0c0c0", |
|
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
464 | NULL); |
| 11740 | 465 | col = gtk_tree_view_column_new_with_attributes (_("Name"), |
| 466 | rendt, | |
| 467 | "markup", 1, | |
|
12695
0c93a42b7ee2
[gaim-migrate @ 15038]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
468 | "foreground-set", 3, |
| 11740 | 469 | NULL); |
| 470 | #if GTK_CHECK_VERSION(2,6,0) | |
| 471 | gtk_tree_view_column_set_expand (col, TRUE); | |
| 472 | g_object_set(rendt, "ellipsize", PANGO_ELLIPSIZE_END, NULL); | |
| 473 | #endif | |
| 474 | gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); | |
|
11794
6c39942d27a9
[gaim-migrate @ 14085]
Gary Kramlich <grim@reaperworld.com>
parents:
11783
diff
changeset
|
475 | gtk_tree_view_column_set_sort_column_id(col, 1); |
| 11740 | 476 | g_object_unref(G_OBJECT(ls)); |
| 477 | gtk_container_add(GTK_CONTAINER(sw), event_view); | |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
478 | |
| 11740 | 479 | expander = gtk_expander_new(_("<b>Plugin Details</b>")); |
| 480 | gtk_expander_set_use_markup(GTK_EXPANDER(expander), TRUE); | |
| 481 | plugin_details = gtk_label_new(NULL); | |
| 482 | gtk_label_set_line_wrap(GTK_LABEL(plugin_details), TRUE); | |
| 483 | gtk_container_add(GTK_CONTAINER(expander), plugin_details); | |
|
12343
0ede7c5a9465
[gaim-migrate @ 14647]
Mark Doliner <markdoliner@pidgin.im>
parents:
12290
diff
changeset
|
484 | gtk_widget_set_sensitive(expander, FALSE); |
| 11740 | 485 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(plugin_dialog)->vbox), expander, FALSE, FALSE, 0); |
| 486 | ||
| 487 | g_signal_connect (G_OBJECT (sel), "changed", G_CALLBACK (prefs_plugin_sel), NULL); | |
| 488 | g_signal_connect(G_OBJECT(plugin_dialog), "response", G_CALLBACK(plugin_dialog_response_cb), sel); | |
| 489 | gtk_window_set_default_size(GTK_WINDOW(plugin_dialog), 430, 430); | |
| 490 | gtk_widget_show_all(plugin_dialog); | |
| 491 | } |