Mercurial > pidgin
annotate src/gtknotify.c @ 12167:5851a9219bc7
[gaim-migrate @ 14468]
Some SILC fixes from Pekka for whiteboard support, preferences, and
documentation. Let's hear a big thanks to Pekka for keeping up with
this stuff!
Enclosed patch fixes couple crashbugs from the SILC whiteboard code,
fixes the preferences (which are not used anymore in Gaim) by
eliminating some of the old preferences and moving some of the
preferences to account options, and introduces Create SILC Key Pair
protocol action which can be used to generate new SILC key pair from
Gaim.
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Sun, 20 Nov 2005 00:59:36 +0000 |
parents | 9537977703bb |
children | 64254fbabc7b |
rev | line source |
---|---|
5437 | 1 /** |
2 * @file gtknotify.c GTK+ Notification API | |
3 * @ingroup gtkui | |
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. | |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
10 * |
5437 | 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 */ | |
9791 | 25 #include "internal.h" |
26 #include "gtkgaim.h" | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
27 |
7455 | 28 #include <gdk/gdkkeysyms.h> |
29 | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
30 #include "connection.h" |
8284 | 31 #include "debug.h" |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
32 #include "prefs.h" |
10297
ec140184437b
[gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
10260
diff
changeset
|
33 #include "gtkstock.h" |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
34 #include "util.h" |
5437 | 35 |
10439 | 36 #include "gtkblist.h" |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
37 #include "gtkimhtml.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
38 #include "gtknotify.h" |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
39 #include "gtkutils.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
40 |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
41 typedef struct |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
42 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5543
diff
changeset
|
43 GaimConnection *gc; |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
44 char *url; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
45 GtkWidget *dialog; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
46 GtkWidget *label; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
47 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
48 } GaimNotifyMailData; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
49 |
10439 | 50 typedef struct |
51 { | |
52 GaimAccount *account; | |
53 GtkListStore *model; | |
54 GtkWidget *treeview; | |
55 GtkWidget *window; | |
56 | |
57 } GaimNotifySearchResultsData; | |
58 | |
11359 | 59 typedef struct |
10439 | 60 { |
11359 | 61 GaimNotifySearchButton *button; |
62 GaimNotifySearchResultsData *data; | |
63 | |
64 } GaimNotifySearchResultsButtonData; | |
10439 | 65 |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
66 static void *gaim_gtk_notify_emails(size_t count, gboolean detailed, |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
67 const char **subjects, |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
68 const char **froms, const char **tos, |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
69 const char **urls, GCallback cb, |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
70 void *user_data); |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
71 |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
72 static void |
6354
76af8c066f8c
[gaim-migrate @ 6853]
Christian Hammond <chipx86@chipx86.com>
parents:
6106
diff
changeset
|
73 message_response_cb(GtkDialog *dialog, gint id, GtkWidget *widget) |
6104 | 74 { |
6357 | 75 gaim_notify_close(GAIM_NOTIFY_MESSAGE, widget); |
6104 | 76 } |
77 | |
78 static void | |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
79 email_response_cb(GtkDialog *dialog, gint id, GaimNotifyMailData *data) |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
80 { |
10260 | 81 if (id == GTK_RESPONSE_YES) |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
82 gaim_notify_uri(NULL, data->url); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
83 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
84 gaim_notify_close(GAIM_NOTIFY_EMAILS, data); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
85 } |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
86 |
7007
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
87 static void |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
88 formatted_close_cb(GtkWidget *win, GdkEvent *event, void *user_data) |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
89 { |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
90 gaim_notify_close(GAIM_NOTIFY_FORMATTED, win); |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
91 } |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
92 |
10439 | 93 static void |
94 searchresults_close_cb(GaimNotifySearchResultsData *data, GdkEvent *event, void *user_data) | |
95 { | |
96 gaim_notify_close(GAIM_NOTIFY_SEARCHRESULTS, data); | |
97 } | |
98 | |
99 static void | |
11359 | 100 searchresults_callback_wrapper_cb(GtkWidget *widget, GaimNotifySearchResultsButtonData *bd) |
10439 | 101 { |
11359 | 102 GaimNotifySearchResultsData *data = bd->data; |
103 | |
10439 | 104 GtkTreeSelection *selection; |
105 GtkTreeModel *model; | |
106 GtkTreeIter iter; | |
11359 | 107 GaimNotifySearchButton *button; |
108 GList *row = NULL; | |
109 gchar *str; | |
110 int i; | |
10439 | 111 |
112 g_return_if_fail(data != NULL); | |
113 | |
114 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->treeview)); | |
115 | |
116 if (gtk_tree_selection_get_selected(selection, &model, &iter)) | |
117 { | |
11359 | 118 for (i = 1; i < gtk_tree_model_get_n_columns(GTK_TREE_MODEL(model)); i++) { |
119 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, i, &str, -1); | |
120 row = g_list_append(row, str); | |
121 } | |
10439 | 122 } |
11359 | 123 |
124 button = bd->button; | |
125 button->callback(gaim_account_get_connection(data->account), row); | |
10439 | 126 } |
127 | |
5437 | 128 static void * |
129 gaim_gtk_notify_message(GaimNotifyMsgType type, const char *title, | |
130 const char *primary, const char *secondary, | |
131 GCallback cb, void *user_data) | |
132 { | |
133 GtkWidget *dialog; | |
134 GtkWidget *hbox; | |
135 GtkWidget *label; | |
136 GtkWidget *img = NULL; | |
137 char label_text[2048]; | |
138 const char *icon_name = NULL; | |
10774 | 139 char *primary_esc, *secondary_esc; |
5437 | 140 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
141 switch (type) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
142 { |
5437 | 143 case GAIM_NOTIFY_MSG_ERROR: |
144 icon_name = GAIM_STOCK_DIALOG_ERROR; | |
145 break; | |
146 | |
147 case GAIM_NOTIFY_MSG_WARNING: | |
148 icon_name = GAIM_STOCK_DIALOG_WARNING; | |
149 break; | |
150 | |
151 case GAIM_NOTIFY_MSG_INFO: | |
152 icon_name = GAIM_STOCK_DIALOG_INFO; | |
153 break; | |
154 | |
155 default: | |
156 icon_name = NULL; | |
157 break; | |
158 } | |
159 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
160 if (icon_name != NULL) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
161 { |
5437 | 162 img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_DIALOG); |
163 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
164 } | |
165 | |
7678 | 166 dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE, |
10260 | 167 NULL, 0, GTK_STOCK_CLOSE, |
168 GTK_RESPONSE_CLOSE, NULL); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
169 |
8523
013d256e8ded
[gaim-migrate @ 9262]
Christian Hammond <chipx86@chipx86.com>
parents:
8356
diff
changeset
|
170 gtk_window_set_role(GTK_WINDOW(dialog), "notify_dialog"); |
013d256e8ded
[gaim-migrate @ 9262]
Christian Hammond <chipx86@chipx86.com>
parents:
8356
diff
changeset
|
171 |
5437 | 172 g_signal_connect(G_OBJECT(dialog), "response", |
6104 | 173 G_CALLBACK(message_response_cb), dialog); |
5437 | 174 |
11243 | 175 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER); |
5437 | 176 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
177 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); | |
11243 | 178 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER); |
179 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); | |
5437 | 180 |
11243 | 181 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); |
5437 | 182 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
183 | |
184 if (img != NULL) | |
185 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
186 | |
10774 | 187 primary_esc = g_markup_escape_text(primary, -1); |
188 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; | |
5437 | 189 g_snprintf(label_text, sizeof(label_text), |
190 "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", | |
10774 | 191 primary_esc, (secondary ? secondary_esc : "")); |
192 g_free(primary_esc); | |
193 g_free(secondary_esc); | |
5437 | 194 |
195 label = gtk_label_new(NULL); | |
196 | |
197 gtk_label_set_markup(GTK_LABEL(label), label_text); | |
198 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
199 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
200 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
201 | |
202 gtk_widget_show_all(dialog); | |
203 | |
204 return dialog; | |
205 } | |
206 | |
207 static void * | |
208 gaim_gtk_notify_email(const char *subject, const char *from, | |
209 const char *to, const char *url, | |
210 GCallback cb, void *user_data) | |
211 { | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
212 return gaim_gtk_notify_emails(1, TRUE, |
5524
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
213 (subject == NULL ? NULL : &subject), |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
214 (from == NULL ? NULL : &from), |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
215 (to == NULL ? NULL : &to), |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
216 (url == NULL ? NULL : &url), |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
217 cb, user_data); |
5437 | 218 } |
219 | |
220 static void * | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
221 gaim_gtk_notify_emails(size_t count, gboolean detailed, |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
222 const char **subjects, const char **froms, |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
223 const char **tos, const char **urls, |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
224 GCallback cb, void *user_data) |
5437 | 225 { |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
226 GaimNotifyMailData *data; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
227 GtkWidget *dialog; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
228 GtkWidget *vbox; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
229 GtkWidget *hbox; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
230 GtkWidget *label; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
231 GtkWidget *img; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
232 char *detail_text; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
233 char *label_text; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
234 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
235 data = g_new0(GaimNotifyMailData, 1); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
236 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
237 data->url = g_strdup(urls[0]); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
238 |
10260 | 239 /* Create the dialog */ |
240 dialog = gtk_dialog_new_with_buttons("New Mail", NULL, 0, | |
241 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | |
242 NULL); | |
243 data->dialog = dialog; | |
5524
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
244 |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
245 if (urls != NULL) |
10260 | 246 gtk_dialog_add_button(GTK_DIALOG(dialog), |
247 GAIM_STOCK_OPEN_MAIL, GTK_RESPONSE_YES); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
248 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
249 g_signal_connect(G_OBJECT(dialog), "response", |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
250 G_CALLBACK(email_response_cb), data); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
251 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
252 /* Setup the dialog */ |
11243 | 253 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BOX_SPACE); |
254 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
255 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
256 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); |
11243 | 257 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
258 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
259 /* Setup the main horizontal box */ |
11243 | 260 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
261 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
262 |
10260 | 263 /* Dialog icon */ |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
264 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_INFO, |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
265 GTK_ICON_SIZE_DIALOG); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
266 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
267 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
268 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
269 /* Vertical box */ |
11243 | 270 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
271 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
272 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
273 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
274 /* Descriptive label */ |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
275 detail_text = g_strdup_printf(ngettext("%s has %d new message.", |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
276 "%s has %d new messages.", |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
277 (int)count), |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
278 *tos, (int)count); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
279 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
280 if (count == 1) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
281 { |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
282 char *from_text = NULL, *subject_text = NULL; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
283 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
284 if (froms != NULL) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
285 { |
8920 | 286 char *from_enc; |
287 from_enc = g_markup_escape_text(*froms, -1); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
288 from_text = g_strdup_printf( |
8920 | 289 _("<span weight=\"bold\">From:</span> %s\n"), from_enc); |
290 g_free(from_enc); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
291 } |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
292 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
293 if (subjects != NULL) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
294 { |
8920 | 295 char *subject_enc; |
296 subject_enc = g_markup_escape_text(*subjects, -1); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
297 subject_text = g_strdup_printf( |
8920 | 298 _("<span weight=\"bold\">Subject:</span> %s\n"), subject_enc); |
299 g_free(subject_enc); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
300 } |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
301 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
302 label_text = g_strdup_printf( |
5543 | 303 _("<span weight=\"bold\" size=\"larger\">You have mail!</span>" |
304 "\n\n%s%s%s%s"), | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
305 detail_text, |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
306 (from_text == NULL && subject_text == NULL ? "" : "\n\n"), |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
307 (from_text == NULL ? "" : from_text), |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
308 (subject_text == NULL ? "" : subject_text)); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
309 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
310 if (from_text != NULL) |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
311 g_free(from_text); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
312 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
313 if (subject_text != NULL) |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
314 g_free(subject_text); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
315 } |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
316 else |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
317 { |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
318 label_text = g_strdup_printf( |
5543 | 319 _("<span weight=\"bold\" size=\"larger\">You have mail!</span>" |
320 "\n\n%s"), detail_text); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
321 } |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
322 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
323 g_free(detail_text); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
324 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
325 label = gtk_label_new(NULL); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
326 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
327 gtk_label_set_markup(GTK_LABEL(label), label_text); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
328 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
329 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
330 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
331 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
332 g_free(label_text); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
333 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
334 /* Show everything. */ |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
335 gtk_widget_show_all(dialog); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
336 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
337 return data; |
5437 | 338 } |
339 | |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
340 static gboolean |
10875
a118e50116df
[gaim-migrate @ 12566]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10774
diff
changeset
|
341 formatted_input_cb(GtkWidget *win, GdkEventKey *event, gpointer data) |
7455 | 342 { |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
343 if (event->keyval == GDK_Escape) |
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
344 { |
10875
a118e50116df
[gaim-migrate @ 12566]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10774
diff
changeset
|
345 gaim_notify_close(GAIM_NOTIFY_FORMATTED, win); |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
346 |
7455 | 347 return TRUE; |
348 } | |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
349 |
7455 | 350 return FALSE; |
351 } | |
352 | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
353 static void * |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
354 gaim_gtk_notify_formatted(const char *title, const char *primary, |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
355 const char *secondary, const char *text, |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
356 GCallback cb, void *user_data) |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
357 { |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
358 GtkWidget *window; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
359 GtkWidget *vbox; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
360 GtkWidget *label; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
361 GtkWidget *button; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
362 GtkWidget *imhtml; |
10181 | 363 GtkWidget *frame; |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
364 int options = 0; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
365 char label_text[2048]; |
10774 | 366 char *linked_text, *primary_esc, *secondary_esc; |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
367 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
368 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
8345 | 369 gtk_window_set_title(GTK_WINDOW(window), title); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
370 gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); |
11243 | 371 gtk_container_set_border_width(GTK_CONTAINER(window), GAIM_HIG_BORDER); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
372 |
7007
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
373 g_signal_connect(G_OBJECT(window), "delete_event", |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
374 G_CALLBACK(formatted_close_cb), NULL); |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
375 |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
376 /* Setup the main vbox */ |
11243 | 377 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
378 gtk_container_add(GTK_CONTAINER(window), vbox); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
379 gtk_widget_show(vbox); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
380 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
381 /* Setup the descriptive label */ |
10774 | 382 primary_esc = g_markup_escape_text(primary, -1); |
383 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
384 g_snprintf(label_text, sizeof(label_text), |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
385 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", |
10774 | 386 primary_esc, |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
387 (secondary ? "\n" : ""), |
10774 | 388 (secondary ? secondary_esc : "")); |
389 g_free(primary_esc); | |
390 g_free(secondary_esc); | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
391 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
392 label = gtk_label_new(NULL); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
393 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
394 gtk_label_set_markup(GTK_LABEL(label), label_text); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
395 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
396 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
397 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
398 gtk_widget_show(label); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
399 |
10181 | 400 /* Add the imhtml */ |
401 frame = gaim_gtk_create_imhtml(FALSE, &imhtml, NULL); | |
9005 | 402 gtk_widget_set_name(imhtml, "gaim_gtknotify_imhtml"); |
11723
9537977703bb
[gaim-migrate @ 14014]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
403 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), |
9537977703bb
[gaim-migrate @ 14014]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
404 gtk_imhtml_get_format_functions(GTK_IMHTML(imhtml)) | GTK_IMHTML_IMAGE); |
10181 | 405 gtk_widget_set_size_request(imhtml, 300, 250); |
406 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); | |
407 gtk_widget_show(frame); | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
408 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
409 /* Add the Close button. */ |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
410 button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
411 gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
412 gtk_widget_show(button); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
413 |
6872 | 414 g_signal_connect_swapped(G_OBJECT(button), "clicked", |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
415 G_CALLBACK(formatted_close_cb), window); |
7455 | 416 g_signal_connect(G_OBJECT(window), "key_press_event", |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
417 G_CALLBACK(formatted_input_cb), NULL); |
7455 | 418 |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
419 /* Add the text to the gtkimhtml */ |
11293 | 420 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/show_incoming_formatting")) |
10497 | 421 options |= GTK_IMHTML_NO_COLOURS | GTK_IMHTML_NO_FONTS | GTK_IMHTML_NO_SIZES; |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
422 |
10503 | 423 options |= GTK_IMHTML_NO_COMMENTS; |
424 options |= GTK_IMHTML_NO_TITLE; | |
425 options |= GTK_IMHTML_NO_NEWLINE; | |
426 options |= GTK_IMHTML_NO_SCROLL; | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
427 |
8882 | 428 /* Make sure URLs are clickable */ |
429 linked_text = gaim_markup_linkify(text); | |
10181 | 430 gtk_imhtml_append_text(GTK_IMHTML(imhtml), linked_text, options); |
8882 | 431 g_free(linked_text); |
7078 | 432 |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
433 /* Show the window */ |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
434 gtk_widget_show(window); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
435 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
436 return window; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
437 } |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
438 |
11359 | 439 static void |
440 gaim_gtk_notify_searchresults_new_rows(GaimConnection *gc, GaimNotifySearchResults *results, | |
441 void *data_, void *user_data) | |
442 { | |
443 GaimNotifySearchResultsData *data = data_; | |
444 GtkListStore *model = data->model; | |
445 GtkTreeIter iter; | |
446 GdkPixbuf *icon, *scaled; | |
447 int col_num; | |
448 int i, j; | |
449 | |
450 gtk_list_store_clear(data->model); | |
451 | |
452 icon = gaim_gtk_create_prpl_icon(gaim_connection_get_account(gc)); | |
453 scaled = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | |
454 | |
455 /* +1 is for the automagically created Status column. */ | |
456 col_num = gaim_notify_searchresults_get_columns_count(results) + 1; | |
457 | |
458 for (i = 0; i < gaim_notify_searchresults_get_rows_count(results); i++) { | |
459 GList *row = gaim_notify_searchresults_row_get(results, i); | |
460 | |
461 gtk_list_store_append(model, &iter); | |
462 gtk_list_store_set(model, &iter, 0, scaled, -1); | |
463 | |
464 for (j = 1; j < col_num; j++) { | |
465 GValue v = {0, }; | |
466 char *escaped = g_markup_escape_text(g_list_nth_data(row, j - 1), -1); | |
467 | |
468 g_value_init(&v, G_TYPE_STRING); | |
469 g_value_set_string(&v, escaped); | |
470 gtk_list_store_set_value(model, &iter, j, &v); | |
471 g_free(escaped); | |
472 } | |
473 } | |
474 } | |
475 | |
9797 | 476 static void * |
10439 | 477 gaim_gtk_notify_searchresults(GaimConnection *gc, const char *title, |
478 const char *primary, const char *secondary, | |
11359 | 479 GaimNotifySearchResults *results, GCallback cb, |
10439 | 480 void *user_data) |
481 { | |
482 GtkWidget *window; | |
11359 | 483 GtkWidget *treeview; |
484 GtkWidget *button, *close_button; | |
485 GType *col_types; | |
486 GtkListStore *model; | |
487 GtkCellRenderer *renderer; | |
488 int col_num; | |
489 int i; | |
490 GList *buttons = NULL; | |
491 | |
10439 | 492 GtkWidget *vbox; |
493 GtkWidget *button_area; | |
494 GtkWidget *label; | |
495 GtkWidget *sw; | |
496 GaimNotifySearchResultsData *data; | |
497 char *label_text; | |
10774 | 498 char *primary_esc, *secondary_esc; |
10439 | 499 |
500 data = g_malloc(sizeof(GaimNotifySearchResultsData)); | |
501 | |
502 /* Create the window */ | |
503 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
504 gtk_window_set_title(GTK_WINDOW(window), (title ? title :_("Search Results"))); | |
505 gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); | |
11243 | 506 gtk_container_set_border_width(GTK_CONTAINER(window), GAIM_HIG_BORDER); |
10439 | 507 |
508 g_signal_connect_swapped(G_OBJECT(window), "delete_event", | |
509 G_CALLBACK(searchresults_close_cb), data); | |
510 | |
511 /* Setup the main vbox */ | |
11243 | 512 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
10439 | 513 gtk_container_add(GTK_CONTAINER(window), vbox); |
514 gtk_widget_show(vbox); | |
515 | |
516 /* Setup the descriptive label */ | |
10774 | 517 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL; |
518 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; | |
10439 | 519 label_text = g_strdup_printf( |
520 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", | |
10774 | 521 (primary ? primary_esc : ""), |
10439 | 522 (primary && secondary ? "\n" : ""), |
10774 | 523 (secondary ? secondary_esc : "")); |
524 g_free(primary_esc); | |
525 g_free(secondary_esc); | |
10439 | 526 label = gtk_label_new(NULL); |
527 gtk_label_set_markup(GTK_LABEL(label), label_text); | |
528 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
529 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
530 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
531 gtk_widget_show(label); | |
532 g_free(label_text); | |
533 | |
11359 | 534 /* +1 is for the automagically created Status column. */ |
535 col_num = gaim_notify_searchresults_get_columns_count(results) + 1; | |
536 | |
10439 | 537 /* Setup the list model */ |
11359 | 538 col_types = g_new0(GType, col_num); |
539 | |
540 /* There always is this first column. */ | |
541 col_types[0] = GDK_TYPE_PIXBUF; | |
542 for (i = 1; i < col_num; i++) { | |
543 col_types[i] = G_TYPE_STRING; | |
544 } | |
545 model = gtk_list_store_newv(col_num, col_types); | |
10439 | 546 |
547 /* Setup the scrolled window containing the treeview */ | |
548 sw = gtk_scrolled_window_new(NULL, NULL); | |
549 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
550 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); | |
551 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), | |
552 GTK_SHADOW_IN); | |
553 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
554 gtk_widget_show(sw); | |
555 | |
556 /* Setup the treeview */ | |
557 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); | |
558 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); | |
11359 | 559 gtk_widget_set_size_request(treeview, 500, 400); |
10439 | 560 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), |
561 GTK_SELECTION_SINGLE); | |
11359 | 562 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), TRUE); |
10439 | 563 gtk_container_add(GTK_CONTAINER(sw), treeview); |
564 gtk_widget_show(treeview); | |
565 | |
11359 | 566 renderer = gtk_cell_renderer_pixbuf_new(); |
10439 | 567 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), |
11359 | 568 -1, "", renderer, "pixbuf", 0, NULL); |
10439 | 569 |
11359 | 570 for (i = 1; i < col_num; i++) { |
571 renderer = gtk_cell_renderer_text_new(); | |
10439 | 572 |
11359 | 573 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, |
574 gaim_notify_searchresults_column_get_title(results, i-1), | |
575 renderer, "text", i, NULL); | |
576 } | |
577 | |
10439 | 578 /* Setup the button area */ |
579 button_area = gtk_hbutton_box_new(); | |
580 gtk_box_pack_start(GTK_BOX(vbox), button_area, FALSE, FALSE, 0); | |
581 gtk_button_box_set_layout(GTK_BUTTON_BOX(button_area), GTK_BUTTONBOX_END); | |
11243 | 582 gtk_box_set_spacing(GTK_BOX(button_area), GAIM_HIG_BORDER); |
10439 | 583 gtk_widget_show(button_area); |
584 | |
11359 | 585 for (i = 0; i < g_list_length(results->buttons); i++) { |
586 GaimNotifySearchButton *b = g_list_nth_data(results->buttons, i); | |
587 button = NULL; | |
588 switch (b->type) { | |
589 case GAIM_NOTIFY_BUTTON_CONTINUE: | |
590 button = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD); | |
591 break; | |
592 case GAIM_NOTIFY_BUTTON_ADD_BUDDY: | |
593 button = gtk_button_new_from_stock(GTK_STOCK_ADD); | |
594 break; | |
595 default: | |
596 gaim_debug_warning("gtknotify", "Incorrect button type: %d\n", b->type); | |
597 } | |
598 if (button != NULL) { | |
599 gtk_box_pack_start(GTK_BOX(button_area), button, FALSE, FALSE, 0); | |
600 gtk_widget_show(button); | |
601 buttons = g_list_append(buttons, button); | |
602 } | |
603 } | |
10439 | 604 |
605 /* Add the Close button */ | |
606 close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); | |
607 gtk_box_pack_start(GTK_BOX(button_area), close_button, FALSE, FALSE, 0); | |
608 gtk_widget_show(close_button); | |
609 | |
610 data->account = gc->account; | |
611 data->model = model; | |
612 data->treeview = treeview; | |
613 data->window = window; | |
614 | |
11359 | 615 /* Insert rows. */ |
616 gaim_gtk_notify_searchresults_new_rows(gc, results, data, NULL); | |
617 | |
10439 | 618 /* Connect Signals */ |
11359 | 619 for (i = 0; i < g_list_length(results->buttons); i++) { |
620 GaimNotifySearchResultsButtonData *bd = g_new0(GaimNotifySearchResultsButtonData, 1); | |
621 bd->button = g_list_nth_data(results->buttons, i); | |
622 bd->data = data; | |
623 g_signal_connect(G_OBJECT(g_list_nth_data(buttons, i)), "clicked", | |
624 G_CALLBACK(searchresults_callback_wrapper_cb), bd); | |
625 } | |
626 | |
10439 | 627 g_signal_connect_swapped(G_OBJECT(close_button), "clicked", |
628 G_CALLBACK(searchresults_close_cb), data); | |
629 | |
630 /* Show the window */ | |
631 gtk_widget_show(window); | |
632 return data; | |
633 } | |
634 | |
635 static void * | |
9797 | 636 gaim_gtk_notify_userinfo(GaimConnection *gc, const char *who, |
11533
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
637 const char *text, |
9797 | 638 GCallback cb, void *user_data) |
639 { | |
11533
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
640 char *primary; |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
641 void *ui_handle; |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
642 |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
643 primary = g_strdup_printf(_("Info for %s"), who); |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
644 ui_handle = gaim_gtk_notify_formatted(_("Buddy Information"), primary, NULL, |
9800 | 645 text, cb, user_data); |
11533
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
646 g_free(primary); |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
647 return ui_handle; |
9797 | 648 } |
649 | |
5437 | 650 static void |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
651 gaim_gtk_close_notify(GaimNotifyType type, void *ui_handle) |
5437 | 652 { |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
653 if (type == GAIM_NOTIFY_EMAIL || type == GAIM_NOTIFY_EMAILS) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
654 { |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
655 GaimNotifyMailData *data = (GaimNotifyMailData *)ui_handle; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
656 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
657 gtk_widget_destroy(data->dialog); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
658 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
659 g_free(data->url); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
660 g_free(data); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
661 } |
10439 | 662 else if (type == GAIM_NOTIFY_SEARCHRESULTS) |
663 { | |
664 GaimNotifySearchResultsData *data = (GaimNotifySearchResultsData *)ui_handle; | |
665 | |
666 gtk_widget_destroy(data->window); | |
667 | |
668 g_free(data); | |
669 } | |
10750
d5a00882d118
[gaim-migrate @ 12353]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10732
diff
changeset
|
670 else if (ui_handle != NULL) |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
671 gtk_widget_destroy(GTK_WIDGET(ui_handle)); |
5437 | 672 } |
673 | |
8272 | 674 #ifndef _WIN32 |
675 static gint | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
676 uri_command(const char *command, gboolean sync) |
8272 | 677 { |
9777 | 678 gchar *escaped, *tmp; |
8272 | 679 GError *error = NULL; |
680 gint ret = 0; | |
681 | |
10732
c4cb90065e1d
[gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents:
10503
diff
changeset
|
682 escaped = g_markup_escape_text(command, -1); |
9777 | 683 gaim_debug_misc("gtknotify", "Executing %s\n", escaped); |
8278 | 684 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
685 if (!gaim_program_is_valid(command)) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
686 { |
9777 | 687 tmp = g_strdup_printf(_("The browser command <b>%s</b> is invalid."), |
688 escaped ? escaped : "(none)"); | |
8272 | 689 gaim_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
690 g_free(tmp); | |
691 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
692 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
693 else if (sync) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
694 { |
8272 | 695 gint status; |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
696 |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
697 if (!g_spawn_command_line_sync(command, NULL, NULL, &status, &error)) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
698 { |
9777 | 699 tmp = g_strdup_printf(_("Error launching <b>%s</b>: %s"), |
700 escaped, error->message); | |
8272 | 701 gaim_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
702 g_free(tmp); | |
703 g_error_free(error); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
704 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
705 else |
8272 | 706 ret = status; |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
707 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
708 else |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
709 { |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
710 if (!g_spawn_command_line_async(command, &error)) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
711 { |
9777 | 712 tmp = g_strdup_printf(_("Error launching <b>%s</b>: %s"), |
713 escaped, error->message); | |
8272 | 714 gaim_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
715 g_free(tmp); | |
716 g_error_free(error); | |
717 } | |
718 } | |
719 | |
9777 | 720 g_free(escaped); |
721 | |
8272 | 722 return ret; |
723 } | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
724 #endif /* _WIN32 */ |
8272 | 725 |
7136 | 726 static void * |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
727 gaim_gtk_notify_uri(const char *uri) |
7136 | 728 { |
729 #ifndef _WIN32 | |
730 char *command = NULL; | |
8272 | 731 char *remote_command = NULL; |
7136 | 732 const char *web_browser; |
8272 | 733 int place; |
7136 | 734 |
735 web_browser = gaim_prefs_get_string("/gaim/gtk/browsers/browser"); | |
8272 | 736 place = gaim_prefs_get_int("/gaim/gtk/browsers/place"); |
7136 | 737 |
10060 | 738 /* if they are running gnome, use the gnome web browser */ |
10061 | 739 if (gaim_running_gnome() == TRUE) |
10060 | 740 { |
741 command = g_strdup_printf("gnome-open \"%s\"", uri); | |
10061 | 742 } |
10060 | 743 else if (!strcmp(web_browser, "epiphany") || |
9405 | 744 !strcmp(web_browser, "galeon")) |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
745 { |
8272 | 746 if (place == GAIM_BROWSER_NEW_WINDOW) |
9405 | 747 command = g_strdup_printf("%s -w \"%s\"", web_browser, uri); |
8272 | 748 else if (place == GAIM_BROWSER_NEW_TAB) |
9405 | 749 command = g_strdup_printf("%s -n \"%s\"", web_browser, uri); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
750 else |
9405 | 751 command = g_strdup_printf("%s \"%s\"", web_browser, uri); |
752 } | |
753 else if (!strcmp(web_browser, "gnome-open")) | |
754 { | |
755 command = g_strdup_printf("gnome-open \"%s\"", uri); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
756 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
757 else if (!strcmp(web_browser, "kfmclient")) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
758 { |
7136 | 759 command = g_strdup_printf("kfmclient openURL \"%s\"", uri); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
760 /* |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
761 * Does Konqueror have options to open in new tab |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
762 * and/or current window? |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
763 */ |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
764 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
765 else if (!strcmp(web_browser, "mozilla") || |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
766 !strcmp(web_browser, "mozilla-firebird") || |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
767 !strcmp(web_browser, "firefox")) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
768 { |
9399 | 769 char *args = ""; |
770 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
771 command = g_strdup_printf("%s \"%s\"", web_browser, uri); |
8272 | 772 |
9399 | 773 /* |
774 * Firefox 0.9 and higher require a "-a firefox" option when | |
775 * using -remote commands. This breaks older versions of | |
776 * mozilla. So we include this other handly little string | |
777 * when calling firefox. If the API for remote calls changes | |
778 * any more in firefox then firefox should probably be split | |
779 * apart from mozilla-firebird and mozilla... but this is good | |
780 * for now. | |
781 */ | |
782 if (!strcmp(web_browser, "firefox")) | |
783 args = "-a firefox"; | |
784 | |
8272 | 785 if (place == GAIM_BROWSER_NEW_WINDOW) |
9399 | 786 remote_command = g_strdup_printf("%s %s -remote " |
9777 | 787 "\"openURL(%s,new-window)\"", |
9399 | 788 web_browser, args, uri); |
8272 | 789 else if (place == GAIM_BROWSER_NEW_TAB) |
9399 | 790 remote_command = g_strdup_printf("%s %s -remote " |
9777 | 791 "\"openURL(%s,new-tab)\"", |
9399 | 792 web_browser, args, uri); |
8272 | 793 else if (place == GAIM_BROWSER_CURRENT) |
9399 | 794 remote_command = g_strdup_printf("%s %s -remote " |
9777 | 795 "\"openURL(%s)\"", |
9399 | 796 web_browser, args, uri); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
797 } |
9405 | 798 else if (!strcmp(web_browser, "netscape")) |
799 { | |
800 command = g_strdup_printf("netscape \"%s\"", uri); | |
801 | |
802 if (place == GAIM_BROWSER_NEW_WINDOW) | |
803 { | |
804 remote_command = g_strdup_printf("netscape -remote " | |
9777 | 805 "\"openURL(%s,new-window)\"", |
9405 | 806 uri); |
807 } | |
808 else if (place == GAIM_BROWSER_CURRENT) | |
809 { | |
810 remote_command = g_strdup_printf("netscape -remote " | |
9777 | 811 "\"openURL(%s)\"", uri); |
9405 | 812 } |
813 } | |
814 else if (!strcmp(web_browser, "opera")) | |
815 { | |
816 if (place == GAIM_BROWSER_NEW_WINDOW) | |
817 command = g_strdup_printf("opera -newwindow \"%s\"", uri); | |
818 else if (place == GAIM_BROWSER_NEW_TAB) | |
819 command = g_strdup_printf("opera -newpage \"%s\"", uri); | |
820 else if (place == GAIM_BROWSER_CURRENT) | |
821 { | |
822 remote_command = g_strdup_printf("opera -remote " | |
9777 | 823 "\"openURL(%s)\"", uri); |
9405 | 824 command = g_strdup_printf("opera \"%s\"", uri); |
825 } | |
826 else | |
827 command = g_strdup_printf("opera \"%s\"", uri); | |
828 | |
829 } | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
830 else if (!strcmp(web_browser, "custom")) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
831 { |
7136 | 832 const char *web_command; |
833 | |
834 web_command = gaim_prefs_get_string("/gaim/gtk/browsers/command"); | |
835 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
836 if (web_command == NULL || *web_command == '\0') |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
837 { |
7136 | 838 gaim_notify_error(NULL, NULL, _("Unable to open URL"), |
839 _("The 'Manual' browser command has been " | |
840 "chosen, but no command has been set.")); | |
841 return NULL; | |
842 } | |
843 | |
844 if (strstr(web_command, "%s")) | |
845 command = gaim_strreplace(web_command, "%s", uri); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
846 else |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
847 { |
7136 | 848 /* |
849 * There is no "%s" in the browser command. Assume the user | |
850 * wanted the URL tacked on to the end of the command. | |
851 */ | |
852 command = g_strdup_printf("%s %s", web_command, uri); | |
853 } | |
854 } | |
855 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
856 if (remote_command != NULL) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
857 { |
8272 | 858 /* try the remote command first */ |
859 if (uri_command(remote_command, TRUE) != 0) | |
860 uri_command(command, FALSE); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
861 |
8272 | 862 g_free(remote_command); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
863 |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
864 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
865 else |
8272 | 866 uri_command(command, FALSE); |
7136 | 867 |
868 g_free(command); | |
869 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
870 #else /* !_WIN32 */ |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
871 wgaim_notify_uri(uri); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
872 #endif /* !_WIN32 */ |
7136 | 873 |
874 return NULL; | |
875 } | |
876 | |
5437 | 877 static GaimNotifyUiOps ops = |
878 { | |
879 gaim_gtk_notify_message, | |
880 gaim_gtk_notify_email, | |
881 gaim_gtk_notify_emails, | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
882 gaim_gtk_notify_formatted, |
10439 | 883 gaim_gtk_notify_searchresults, |
11359 | 884 gaim_gtk_notify_searchresults_new_rows, |
9797 | 885 gaim_gtk_notify_userinfo, |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
886 gaim_gtk_notify_uri, |
5437 | 887 gaim_gtk_close_notify |
888 }; | |
889 | |
890 GaimNotifyUiOps * | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7007
diff
changeset
|
891 gaim_gtk_notify_get_ui_ops(void) |
5437 | 892 { |
893 return &ops; | |
894 } |