Mercurial > pidgin
annotate src/gtknotify.c @ 13690:6a86f4ec744e
[gaim-migrate @ 16093]
SF Patch #1472156 from miguelrp
"Current betas of gaim render the buddy icon to a pifmap
with a 1-bit alpha mask before displaying them in the
conversation window.
This patch eliminates the transformation from a pixbuf
to a pixmap and, at the same time, preserves the full
alpha contents of the original buddy icon."
Perhaps I'm missing something, but the conversion doesn't seem necessary.
Icons still display properly for me.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 25 Apr 2006 17:15:00 +0000 |
parents | d12bbe6da705 |
children | 8b7d6fce88d5 |
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 *label; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
46 GtkTreeIter iter; |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
47 } GaimNotifyMailData; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
48 |
10439 | 49 typedef struct |
50 { | |
51 GaimAccount *account; | |
52 GtkListStore *model; | |
53 GtkWidget *treeview; | |
54 GtkWidget *window; | |
13640 | 55 gpointer user_data; |
56 | |
10439 | 57 } GaimNotifySearchResultsData; |
58 | |
11359 | 59 typedef struct |
10439 | 60 { |
11359 | 61 GaimNotifySearchButton *button; |
62 GaimNotifySearchResultsData *data; | |
63 | |
64 } GaimNotifySearchResultsButtonData; | |
10439 | 65 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
66 enum |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
67 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
68 GAIM_MAIL_ICON, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
69 GAIM_MAIL_TO, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
70 GAIM_MAIL_FROM, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
71 GAIM_MAIL_SUBJECT, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
72 GAIM_MAIL_DATA, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
73 COLUMNS_GAIM_MAIL |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
74 }; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
75 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
76 typedef struct _GaimMailDialog GaimMailDialog; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
77 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
78 struct _GaimMailDialog |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
79 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
80 GtkWidget *dialog; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
81 GtkWidget *treeview; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
82 GtkTreeStore *treemodel; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
83 GtkLabel *label; |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
84 GtkWidget *open_button; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
85 }; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
86 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
87 static GaimMailDialog *mail_dialog = NULL; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
88 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
89 static void *gaim_gtk_notify_emails(GaimConnection *gc, size_t count, gboolean detailed, |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
90 const char **subjects, |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
91 const char **froms, const char **tos, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
92 const char **urls); |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
93 |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
94 static void |
6354
76af8c066f8c
[gaim-migrate @ 6853]
Christian Hammond <chipx86@chipx86.com>
parents:
6106
diff
changeset
|
95 message_response_cb(GtkDialog *dialog, gint id, GtkWidget *widget) |
6104 | 96 { |
6357 | 97 gaim_notify_close(GAIM_NOTIFY_MESSAGE, widget); |
6104 | 98 } |
99 | |
100 static void | |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
101 email_nondetailed_cb(GtkDialog *dialog, gint id, GaimNotifyMailData *data) |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
102 { |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
103 if (id == GTK_RESPONSE_OK) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
104 gaim_notify_uri(NULL, data->url); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
105 gaim_notify_close(GAIM_NOTIFY_EMAILS, data); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
106 gtk_widget_destroy(GTK_WIDGET(dialog)); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
107 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
108 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
109 static void |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
110 email_response_cb(GtkDialog *dlg, gint id, GaimMailDialog *dialog) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
111 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
112 GaimNotifyMailData *data = NULL; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
113 GtkTreeIter iter; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
114 |
10260 | 115 if (id == GTK_RESPONSE_YES) |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
116 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
117 GtkTreeSelection *selection; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
118 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
119 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
120 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
121 if (gtk_tree_selection_get_selected(selection, NULL, &iter)) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
122 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
123 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
124 GAIM_MAIL_DATA, &data, -1); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
125 gaim_notify_uri(NULL, data->url); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
126 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
127 gtk_tree_store_remove(dialog->treemodel, &iter); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
128 gaim_notify_close(GAIM_NOTIFY_EMAILS, data); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
129 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
130 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter)) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
131 return; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
132 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
133 else |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
134 return; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
135 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
136 else |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
137 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
138 while (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter)) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
139 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
140 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
141 GAIM_MAIL_DATA, &data, -1); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
142 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
143 if (id == GTK_RESPONSE_ACCEPT) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
144 gaim_notify_uri(NULL, data->url); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
145 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
146 gtk_tree_store_remove(dialog->treemodel, &iter); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
147 gaim_notify_close(GAIM_NOTIFY_EMAILS, data); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
148 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
149 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
150 gtk_widget_destroy(dialog->dialog); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
151 g_free(dialog); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
152 mail_dialog = NULL; |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
153 } |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
154 |
7007
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
155 static void |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
156 formatted_close_cb(GtkWidget *win, GdkEvent *event, void *user_data) |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
157 { |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
158 gaim_notify_close(GAIM_NOTIFY_FORMATTED, win); |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
159 } |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
160 |
10439 | 161 static void |
13640 | 162 searchresults_close_cb(GaimNotifySearchResultsData *data, GdkEvent *event, gpointer user_data) |
10439 | 163 { |
164 gaim_notify_close(GAIM_NOTIFY_SEARCHRESULTS, data); | |
165 } | |
166 | |
167 static void | |
11359 | 168 searchresults_callback_wrapper_cb(GtkWidget *widget, GaimNotifySearchResultsButtonData *bd) |
10439 | 169 { |
11359 | 170 GaimNotifySearchResultsData *data = bd->data; |
171 | |
10439 | 172 GtkTreeSelection *selection; |
173 GtkTreeModel *model; | |
174 GtkTreeIter iter; | |
11359 | 175 GaimNotifySearchButton *button; |
176 GList *row = NULL; | |
177 gchar *str; | |
178 int i; | |
10439 | 179 |
180 g_return_if_fail(data != NULL); | |
181 | |
182 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->treeview)); | |
183 | |
184 if (gtk_tree_selection_get_selected(selection, &model, &iter)) | |
185 { | |
11359 | 186 for (i = 1; i < gtk_tree_model_get_n_columns(GTK_TREE_MODEL(model)); i++) { |
187 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, i, &str, -1); | |
188 row = g_list_append(row, str); | |
189 } | |
10439 | 190 } |
11359 | 191 |
192 button = bd->button; | |
13640 | 193 button->callback(gaim_account_get_connection(data->account), row, data->user_data); |
10439 | 194 } |
195 | |
5437 | 196 static void * |
197 gaim_gtk_notify_message(GaimNotifyMsgType type, const char *title, | |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
198 const char *primary, const char *secondary) |
5437 | 199 { |
200 GtkWidget *dialog; | |
201 GtkWidget *hbox; | |
202 GtkWidget *label; | |
203 GtkWidget *img = NULL; | |
204 char label_text[2048]; | |
205 const char *icon_name = NULL; | |
10774 | 206 char *primary_esc, *secondary_esc; |
5437 | 207 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
208 switch (type) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
209 { |
5437 | 210 case GAIM_NOTIFY_MSG_ERROR: |
211 icon_name = GAIM_STOCK_DIALOG_ERROR; | |
212 break; | |
213 | |
214 case GAIM_NOTIFY_MSG_WARNING: | |
215 icon_name = GAIM_STOCK_DIALOG_WARNING; | |
216 break; | |
217 | |
218 case GAIM_NOTIFY_MSG_INFO: | |
219 icon_name = GAIM_STOCK_DIALOG_INFO; | |
220 break; | |
221 | |
222 default: | |
223 icon_name = NULL; | |
224 break; | |
225 } | |
226 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
227 if (icon_name != NULL) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
228 { |
5437 | 229 img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_DIALOG); |
230 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
231 } | |
232 | |
7678 | 233 dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE, |
10260 | 234 NULL, 0, GTK_STOCK_CLOSE, |
235 GTK_RESPONSE_CLOSE, NULL); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
236 |
8523
013d256e8ded
[gaim-migrate @ 9262]
Christian Hammond <chipx86@chipx86.com>
parents:
8356
diff
changeset
|
237 gtk_window_set_role(GTK_WINDOW(dialog), "notify_dialog"); |
013d256e8ded
[gaim-migrate @ 9262]
Christian Hammond <chipx86@chipx86.com>
parents:
8356
diff
changeset
|
238 |
5437 | 239 g_signal_connect(G_OBJECT(dialog), "response", |
6104 | 240 G_CALLBACK(message_response_cb), dialog); |
5437 | 241 |
11243 | 242 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER); |
5437 | 243 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
244 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); | |
11243 | 245 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER); |
246 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); | |
5437 | 247 |
11243 | 248 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); |
5437 | 249 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
250 | |
251 if (img != NULL) | |
252 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
253 | |
10774 | 254 primary_esc = g_markup_escape_text(primary, -1); |
255 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; | |
5437 | 256 g_snprintf(label_text, sizeof(label_text), |
257 "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", | |
10774 | 258 primary_esc, (secondary ? secondary_esc : "")); |
259 g_free(primary_esc); | |
260 g_free(secondary_esc); | |
5437 | 261 |
262 label = gtk_label_new(NULL); | |
263 | |
264 gtk_label_set_markup(GTK_LABEL(label), label_text); | |
265 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
266 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
267 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
268 | |
269 gtk_widget_show_all(dialog); | |
270 | |
271 return dialog; | |
272 } | |
273 | |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
274 static void |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
275 selection_changed_cb(GtkTreeSelection *sel, GaimMailDialog *dialog) |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
276 { |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
277 GtkTreeIter iter; |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
278 GtkTreeModel *model; |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
279 GaimNotifyMailData *data; |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
280 gboolean active = TRUE; |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
281 |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
282 if (gtk_tree_selection_get_selected(sel, &model, &iter) == FALSE) |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
283 active = FALSE; |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
284 else |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
285 { |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
286 gtk_tree_model_get(model, &iter, GAIM_MAIL_DATA, &data, -1); |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
287 if (data->url == NULL) |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
288 active = FALSE; |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
289 } |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
290 |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
291 gtk_widget_set_sensitive(dialog->open_button, active); |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
292 } |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
293 |
5437 | 294 static void * |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
295 gaim_gtk_notify_email(GaimConnection *gc, const char *subject, const char *from, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
296 const char *to, const char *url) |
5437 | 297 { |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
298 return gaim_gtk_notify_emails(gc, 1, (subject != NULL), |
5524
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
299 (subject == NULL ? NULL : &subject), |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
300 (from == NULL ? NULL : &from), |
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
301 (to == NULL ? NULL : &to), |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
302 (url == NULL ? NULL : &url)); |
5437 | 303 } |
304 | |
305 static void * | |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
306 gaim_gtk_notify_emails(GaimConnection *gc, size_t count, gboolean detailed, |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
307 const char **subjects, const char **froms, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
308 const char **tos, const char **urls) |
5437 | 309 { |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
310 GaimNotifyMailData *data = NULL; |
12911
14a103c0e4d5
[gaim-migrate @ 15264]
Richard Laager <rlaager@wiktel.com>
parents:
12647
diff
changeset
|
311 GtkWidget *dialog = NULL; |
14a103c0e4d5
[gaim-migrate @ 15264]
Richard Laager <rlaager@wiktel.com>
parents:
12647
diff
changeset
|
312 GtkWidget *vbox = NULL; |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
313 GtkWidget *hbox; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
314 GtkWidget *label; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
315 GtkWidget *img; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
316 char *detail_text; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
317 char *label_text; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
318 GtkTreeIter iter; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
319 GaimAccount *account; |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
320 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
321 account = gaim_connection_get_account(gc); |
5524
101384b068c1
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
322 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
323 if (mail_dialog == NULL || !detailed) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
324 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
325 GtkCellRenderer *rend; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
326 GtkTreeViewColumn *column; |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
327 GtkWidget *button = NULL; |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
328 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
329 dialog = gtk_dialog_new_with_buttons(_("New Mail"), NULL, 0, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
330 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
331 NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
332 if (detailed) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
333 gtk_window_set_role(GTK_WINDOW(dialog), "new_mail_detailed"); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
334 else |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
335 gtk_window_set_role(GTK_WINDOW(dialog), "new_mail"); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
336 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
337 if (!detailed && urls) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
338 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
339 gtk_dialog_add_button(GTK_DIALOG(dialog), |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
340 GAIM_STOCK_OPEN_MAIL, GTK_RESPONSE_OK); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
341 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
342 else if (detailed && mail_dialog == NULL) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
343 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
344 gtk_dialog_add_button(GTK_DIALOG(dialog), |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
345 _("Open All Messages"), GTK_RESPONSE_ACCEPT); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
346 |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
347 button = gtk_dialog_add_button(GTK_DIALOG(dialog), |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
348 GAIM_STOCK_OPEN_MAIL, GTK_RESPONSE_YES); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
349 } |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
350 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
351 /* Setup the dialog */ |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
352 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BOX_SPACE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
353 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
354 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
355 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
356 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
357 /* Setup the main horizontal box */ |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
358 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
359 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
360 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
361 /* Dialog icon */ |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
362 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_INFO, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
363 GTK_ICON_SIZE_DIALOG); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
364 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
365 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
366 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
367 /* Vertical box */ |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
368 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
369 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
370 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
371 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
372 if (mail_dialog == NULL && detailed) |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
373 { |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
374 GtkWidget *sw; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
375 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
376 /* Golden ratio it up! */ |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
377 gtk_widget_set_size_request(dialog, 475, 200); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
378 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
379 sw = gtk_scrolled_window_new(NULL, NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
380 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
381 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
382 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
383 mail_dialog = g_new0(GaimMailDialog, 1); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
384 mail_dialog->dialog = dialog; |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
385 mail_dialog->open_button = button; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
386 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
387 mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_GAIM_MAIL, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
388 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
389 mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel)); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
390 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
391 g_signal_connect(G_OBJECT(dialog), "response", |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
392 G_CALLBACK(email_response_cb), mail_dialog); |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
393 g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(mail_dialog->treeview))), |
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
394 "changed", G_CALLBACK(selection_changed_cb), mail_dialog); |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
395 |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
396 /* Account column */ |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
397 column = gtk_tree_view_column_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
398 gtk_tree_view_column_set_resizable(column, TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
399 gtk_tree_view_column_set_title(column, _("Account")); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
400 rend = gtk_cell_renderer_pixbuf_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
401 gtk_tree_view_column_pack_start(column, rend, FALSE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
402 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", GAIM_MAIL_ICON, NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
403 rend = gtk_cell_renderer_text_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
404 gtk_tree_view_column_pack_start(column, rend, TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
405 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_TO, NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
406 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
407 |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
408 /* From column */ |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
409 column = gtk_tree_view_column_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
410 gtk_tree_view_column_set_resizable(column, TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
411 gtk_tree_view_column_set_title(column, _("From")); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
412 rend = gtk_cell_renderer_text_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
413 gtk_tree_view_column_pack_start(column, rend, TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
414 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_FROM, NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
415 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
416 |
13414
d624a097dc98
[gaim-migrate @ 15789]
Richard Laager <rlaager@wiktel.com>
parents:
13413
diff
changeset
|
417 /* Subject column */ |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
418 column = gtk_tree_view_column_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
419 gtk_tree_view_column_set_resizable(column, TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
420 gtk_tree_view_column_set_title(column, _("Subject")); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
421 rend = gtk_cell_renderer_text_new(); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
422 gtk_tree_view_column_pack_start(column, rend, TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
423 gtk_tree_view_column_set_attributes(column, rend, "markup", GAIM_MAIL_SUBJECT, NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
424 gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); |
13090 | 425 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
426 gtk_container_add(GTK_CONTAINER(sw), mail_dialog->treeview); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
427 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
428 label = gtk_label_new(NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
429 gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>")); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
430 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
431 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
432 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
433 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
434 } |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
435 } |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
436 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
437 if (detailed) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
438 { |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
439 dialog = mail_dialog->dialog; |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
440 while (count--) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
441 { |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
442 char *to_text = NULL; |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
443 char *from_text = NULL; |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
444 char *subject_text = NULL; |
13090 | 445 GdkPixbuf *pixbuf; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
446 |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
447 if (tos != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
448 to_text = g_markup_escape_text(*tos, -1); |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
449 if (froms != NULL) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
450 from_text = g_markup_escape_text(*froms, -1); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
451 if (subjects != NULL) |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
452 subject_text = g_markup_escape_text(*subjects, -1); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
453 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
454 data = g_new0(GaimNotifyMailData, 1); |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
455 if (urls != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
456 data->url = g_strdup(*urls); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
457 |
13090 | 458 pixbuf = gaim_gtk_create_prpl_icon(account, 0.5); |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
459 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
460 gtk_tree_store_append(mail_dialog->treemodel, &iter, NULL); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
461 gtk_tree_store_set(mail_dialog->treemodel, &iter, |
13090 | 462 GAIM_MAIL_ICON, pixbuf, |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
463 GAIM_MAIL_TO, to_text, |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
464 GAIM_MAIL_FROM, from_text, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
465 GAIM_MAIL_SUBJECT, subject_text, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
466 GAIM_MAIL_DATA, data, |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
467 -1); |
13090 | 468 if (pixbuf != NULL) |
469 g_object_unref(pixbuf); | |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
470 g_free(to_text); |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
471 g_free(from_text); |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
472 g_free(subject_text); |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
473 data->iter = iter; |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
474 |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
475 if (urls != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
476 urls++; |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
477 if (froms != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
478 froms++; |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
479 if (subjects != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
480 subjects++; |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
481 if (tos != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
482 tos++; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
483 } |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
484 } |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
485 else |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
486 { |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
487 data = g_new0(GaimNotifyMailData, 1); |
13413
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
488 |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
489 if (urls != NULL) |
79682d6f032e
[gaim-migrate @ 15788]
Richard Laager <rlaager@wiktel.com>
parents:
13280
diff
changeset
|
490 data->url = g_strdup(*urls); |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
491 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
492 g_signal_connect(G_OBJECT(dialog), "response", |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
493 G_CALLBACK(email_nondetailed_cb), data); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
494 |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
495 detail_text = g_strdup_printf(ngettext("%s has %d new message.", |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
496 "%s has %d new messages.", |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
497 (int)count), |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
498 *tos, (int)count); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
499 label_text = g_strdup_printf( |
5543 | 500 _("<span weight=\"bold\" size=\"larger\">You have mail!</span>" |
501 "\n\n%s"), detail_text); | |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
502 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
503 label = gtk_label_new(NULL); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
504 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
505 gtk_label_set_markup(GTK_LABEL(label), label_text); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
506 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
507 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
508 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
509 |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
510 g_free(label_text); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
511 g_free(detail_text); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
512 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
513 } |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
514 gtk_widget_show_all(dialog); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
515 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
516 return data; |
5437 | 517 } |
518 | |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
519 static gboolean |
10875
a118e50116df
[gaim-migrate @ 12566]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10774
diff
changeset
|
520 formatted_input_cb(GtkWidget *win, GdkEventKey *event, gpointer data) |
7455 | 521 { |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
522 if (event->keyval == GDK_Escape) |
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
523 { |
10875
a118e50116df
[gaim-migrate @ 12566]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10774
diff
changeset
|
524 gaim_notify_close(GAIM_NOTIFY_FORMATTED, win); |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
525 |
7455 | 526 return TRUE; |
527 } | |
8337
65ae6930b45a
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
528 |
7455 | 529 return FALSE; |
530 } | |
531 | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
532 static void * |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
533 gaim_gtk_notify_formatted(const char *title, const char *primary, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
534 const char *secondary, const char *text) |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
535 { |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
536 GtkWidget *window; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
537 GtkWidget *vbox; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
538 GtkWidget *label; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
539 GtkWidget *button; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
540 GtkWidget *imhtml; |
10181 | 541 GtkWidget *frame; |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
542 int options = 0; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
543 char label_text[2048]; |
10774 | 544 char *linked_text, *primary_esc, *secondary_esc; |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
545 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
546 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
8345 | 547 gtk_window_set_title(GTK_WINDOW(window), title); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
548 gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); |
11243 | 549 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
|
550 |
7007
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
551 g_signal_connect(G_OBJECT(window), "delete_event", |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
552 G_CALLBACK(formatted_close_cb), NULL); |
da1430478acf
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
553 |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
554 /* Setup the main vbox */ |
11243 | 555 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
556 gtk_container_add(GTK_CONTAINER(window), vbox); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
557 gtk_widget_show(vbox); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
558 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
559 /* Setup the descriptive label */ |
10774 | 560 primary_esc = g_markup_escape_text(primary, -1); |
561 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
|
562 g_snprintf(label_text, sizeof(label_text), |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
563 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", |
10774 | 564 primary_esc, |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
565 (secondary ? "\n" : ""), |
10774 | 566 (secondary ? secondary_esc : "")); |
567 g_free(primary_esc); | |
568 g_free(secondary_esc); | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
569 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
570 label = gtk_label_new(NULL); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
571 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
572 gtk_label_set_markup(GTK_LABEL(label), label_text); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
573 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
574 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
575 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
576 gtk_widget_show(label); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
577 |
10181 | 578 /* Add the imhtml */ |
13280
3de53fe8345f
[gaim-migrate @ 15646]
Richard Laager <rlaager@wiktel.com>
parents:
13090
diff
changeset
|
579 frame = gaim_gtk_create_imhtml(FALSE, &imhtml, NULL, NULL); |
9005 | 580 gtk_widget_set_name(imhtml, "gaim_gtknotify_imhtml"); |
11723
9537977703bb
[gaim-migrate @ 14014]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
581 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), |
9537977703bb
[gaim-migrate @ 14014]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
582 gtk_imhtml_get_format_functions(GTK_IMHTML(imhtml)) | GTK_IMHTML_IMAGE); |
10181 | 583 gtk_widget_set_size_request(imhtml, 300, 250); |
584 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); | |
585 gtk_widget_show(frame); | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
586 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
587 /* Add the Close button. */ |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
588 button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
589 gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
590 gtk_widget_show(button); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
591 |
6872 | 592 g_signal_connect_swapped(G_OBJECT(button), "clicked", |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
593 G_CALLBACK(formatted_close_cb), window); |
7455 | 594 g_signal_connect(G_OBJECT(window), "key_press_event", |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
595 G_CALLBACK(formatted_input_cb), NULL); |
7455 | 596 |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
597 /* Add the text to the gtkimhtml */ |
11293 | 598 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/show_incoming_formatting")) |
10497 | 599 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
|
600 |
10503 | 601 options |= GTK_IMHTML_NO_COMMENTS; |
602 options |= GTK_IMHTML_NO_TITLE; | |
603 options |= GTK_IMHTML_NO_NEWLINE; | |
604 options |= GTK_IMHTML_NO_SCROLL; | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
605 |
8882 | 606 /* Make sure URLs are clickable */ |
607 linked_text = gaim_markup_linkify(text); | |
10181 | 608 gtk_imhtml_append_text(GTK_IMHTML(imhtml), linked_text, options); |
8882 | 609 g_free(linked_text); |
7078 | 610 |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
611 /* Show the window */ |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
612 gtk_widget_show(window); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
613 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
614 return window; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
615 } |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
616 |
11359 | 617 static void |
618 gaim_gtk_notify_searchresults_new_rows(GaimConnection *gc, GaimNotifySearchResults *results, | |
13640 | 619 void *data_) |
11359 | 620 { |
621 GaimNotifySearchResultsData *data = data_; | |
622 GtkListStore *model = data->model; | |
623 GtkTreeIter iter; | |
13090 | 624 GdkPixbuf *pixbuf; |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
625 guint col_num; |
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
626 guint i; |
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
627 guint j; |
13090 | 628 |
11359 | 629 gtk_list_store_clear(data->model); |
630 | |
13090 | 631 pixbuf = gaim_gtk_create_prpl_icon(gaim_connection_get_account(gc), 0.5); |
11359 | 632 |
633 /* +1 is for the automagically created Status column. */ | |
634 col_num = gaim_notify_searchresults_get_columns_count(results) + 1; | |
635 | |
636 for (i = 0; i < gaim_notify_searchresults_get_rows_count(results); i++) { | |
637 GList *row = gaim_notify_searchresults_row_get(results, i); | |
638 | |
639 gtk_list_store_append(model, &iter); | |
13090 | 640 gtk_list_store_set(model, &iter, 0, pixbuf, -1); |
11359 | 641 |
642 for (j = 1; j < col_num; j++) { | |
12600
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12477
diff
changeset
|
643 GValue v; |
11359 | 644 char *escaped = g_markup_escape_text(g_list_nth_data(row, j - 1), -1); |
645 | |
12600
e856f985a0b9
[gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents:
12477
diff
changeset
|
646 v.g_type = 0; |
11359 | 647 g_value_init(&v, G_TYPE_STRING); |
648 g_value_set_string(&v, escaped); | |
649 gtk_list_store_set_value(model, &iter, j, &v); | |
650 g_free(escaped); | |
651 } | |
652 } | |
13090 | 653 |
654 if (pixbuf != NULL) | |
655 g_object_unref(pixbuf); | |
11359 | 656 } |
657 | |
9797 | 658 static void * |
10439 | 659 gaim_gtk_notify_searchresults(GaimConnection *gc, const char *title, |
660 const char *primary, const char *secondary, | |
13640 | 661 GaimNotifySearchResults *results, gpointer user_data) |
10439 | 662 { |
663 GtkWidget *window; | |
11359 | 664 GtkWidget *treeview; |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
665 GtkWidget *close_button; |
11359 | 666 GType *col_types; |
667 GtkListStore *model; | |
668 GtkCellRenderer *renderer; | |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
669 guint col_num; |
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
670 guint i; |
11359 | 671 |
10439 | 672 GtkWidget *vbox; |
673 GtkWidget *button_area; | |
674 GtkWidget *label; | |
675 GtkWidget *sw; | |
676 GaimNotifySearchResultsData *data; | |
677 char *label_text; | |
10774 | 678 char *primary_esc, *secondary_esc; |
10439 | 679 |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
680 g_return_val_if_fail(gc != NULL, NULL); |
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
681 g_return_val_if_fail(results != NULL, NULL); |
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
682 |
10439 | 683 data = g_malloc(sizeof(GaimNotifySearchResultsData)); |
13640 | 684 data->user_data = user_data; |
10439 | 685 |
686 /* Create the window */ | |
687 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
688 gtk_window_set_title(GTK_WINDOW(window), (title ? title :_("Search Results"))); | |
689 gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); | |
11243 | 690 gtk_container_set_border_width(GTK_CONTAINER(window), GAIM_HIG_BORDER); |
10439 | 691 |
692 g_signal_connect_swapped(G_OBJECT(window), "delete_event", | |
693 G_CALLBACK(searchresults_close_cb), data); | |
694 | |
695 /* Setup the main vbox */ | |
11243 | 696 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
10439 | 697 gtk_container_add(GTK_CONTAINER(window), vbox); |
698 gtk_widget_show(vbox); | |
699 | |
700 /* Setup the descriptive label */ | |
10774 | 701 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL; |
702 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; | |
10439 | 703 label_text = g_strdup_printf( |
704 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", | |
10774 | 705 (primary ? primary_esc : ""), |
10439 | 706 (primary && secondary ? "\n" : ""), |
10774 | 707 (secondary ? secondary_esc : "")); |
708 g_free(primary_esc); | |
709 g_free(secondary_esc); | |
10439 | 710 label = gtk_label_new(NULL); |
711 gtk_label_set_markup(GTK_LABEL(label), label_text); | |
712 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
713 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
714 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
715 gtk_widget_show(label); | |
716 g_free(label_text); | |
717 | |
11359 | 718 /* +1 is for the automagically created Status column. */ |
719 col_num = gaim_notify_searchresults_get_columns_count(results) + 1; | |
720 | |
10439 | 721 /* Setup the list model */ |
11359 | 722 col_types = g_new0(GType, col_num); |
723 | |
724 /* There always is this first column. */ | |
725 col_types[0] = GDK_TYPE_PIXBUF; | |
726 for (i = 1; i < col_num; i++) { | |
727 col_types[i] = G_TYPE_STRING; | |
728 } | |
729 model = gtk_list_store_newv(col_num, col_types); | |
10439 | 730 |
731 /* Setup the scrolled window containing the treeview */ | |
732 sw = gtk_scrolled_window_new(NULL, NULL); | |
733 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
734 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); | |
735 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), | |
736 GTK_SHADOW_IN); | |
737 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
738 gtk_widget_show(sw); | |
739 | |
740 /* Setup the treeview */ | |
741 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); | |
742 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); | |
11359 | 743 gtk_widget_set_size_request(treeview, 500, 400); |
10439 | 744 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), |
745 GTK_SELECTION_SINGLE); | |
11359 | 746 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), TRUE); |
10439 | 747 gtk_container_add(GTK_CONTAINER(sw), treeview); |
748 gtk_widget_show(treeview); | |
749 | |
11359 | 750 renderer = gtk_cell_renderer_pixbuf_new(); |
10439 | 751 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), |
11359 | 752 -1, "", renderer, "pixbuf", 0, NULL); |
10439 | 753 |
11359 | 754 for (i = 1; i < col_num; i++) { |
755 renderer = gtk_cell_renderer_text_new(); | |
10439 | 756 |
11359 | 757 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, |
758 gaim_notify_searchresults_column_get_title(results, i-1), | |
759 renderer, "text", i, NULL); | |
760 } | |
761 | |
10439 | 762 /* Setup the button area */ |
763 button_area = gtk_hbutton_box_new(); | |
764 gtk_box_pack_start(GTK_BOX(vbox), button_area, FALSE, FALSE, 0); | |
765 gtk_button_box_set_layout(GTK_BUTTON_BOX(button_area), GTK_BUTTONBOX_END); | |
11243 | 766 gtk_box_set_spacing(GTK_BOX(button_area), GAIM_HIG_BORDER); |
10439 | 767 gtk_widget_show(button_area); |
768 | |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
769 for (i = 0; i < g_list_length(results->buttons); i++) { |
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
770 GaimNotifySearchButton *b = g_list_nth_data(results->buttons, i); |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
771 GtkWidget *button = NULL; |
11359 | 772 switch (b->type) { |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
773 case GAIM_NOTIFY_BUTTON_LABELED: |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
774 if(b->label) { |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
775 button = gtk_button_new_with_label(b->label); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
776 } else { |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
777 gaim_debug_warning("gtknotify", "Missing button label"); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
778 } |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
779 break; |
11359 | 780 case GAIM_NOTIFY_BUTTON_CONTINUE: |
781 button = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD); | |
782 break; | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
783 case GAIM_NOTIFY_BUTTON_ADD: |
11359 | 784 button = gtk_button_new_from_stock(GTK_STOCK_ADD); |
785 break; | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
786 case GAIM_NOTIFY_BUTTON_INFO: |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
787 button = gtk_button_new_from_stock(GAIM_STOCK_INFO); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
788 break; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
789 case GAIM_NOTIFY_BUTTON_IM: |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
790 button = gtk_button_new_from_stock(GAIM_STOCK_IM); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
791 break; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
792 case GAIM_NOTIFY_BUTTON_JOIN: |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
793 button = gtk_button_new_from_stock(GAIM_STOCK_CHAT); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
794 break; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
795 case GAIM_NOTIFY_BUTTON_INVITE: |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
796 button = gtk_button_new_from_stock(GAIM_STOCK_INVITE); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
797 break; |
11359 | 798 default: |
799 gaim_debug_warning("gtknotify", "Incorrect button type: %d\n", b->type); | |
800 } | |
801 if (button != NULL) { | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
802 GaimNotifySearchResultsButtonData *bd; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
803 |
11359 | 804 gtk_box_pack_start(GTK_BOX(button_area), button, FALSE, FALSE, 0); |
805 gtk_widget_show(button); | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
806 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
807 bd = g_new0(GaimNotifySearchResultsButtonData, 1); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
808 bd->button = b; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
809 bd->data = data; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
810 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
811 g_signal_connect(G_OBJECT(button), "clicked", |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
812 G_CALLBACK(searchresults_callback_wrapper_cb), bd); |
11359 | 813 } |
814 } | |
10439 | 815 |
816 /* Add the Close button */ | |
817 close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); | |
818 gtk_box_pack_start(GTK_BOX(button_area), close_button, FALSE, FALSE, 0); | |
819 gtk_widget_show(close_button); | |
820 | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
821 g_signal_connect_swapped(G_OBJECT(close_button), "clicked", |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
822 G_CALLBACK(searchresults_close_cb), data); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
823 |
10439 | 824 data->account = gc->account; |
825 data->model = model; | |
826 data->treeview = treeview; | |
827 data->window = window; | |
828 | |
11359 | 829 /* Insert rows. */ |
13640 | 830 gaim_gtk_notify_searchresults_new_rows(gc, results, data); |
11359 | 831 |
10439 | 832 /* Show the window */ |
833 gtk_widget_show(window); | |
834 return data; | |
835 } | |
836 | |
837 static void * | |
9797 | 838 gaim_gtk_notify_userinfo(GaimConnection *gc, const char *who, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
839 const char *text) |
9797 | 840 { |
11533
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
841 char *primary; |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
842 void *ui_handle; |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
843 |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
844 primary = g_strdup_printf(_("Info for %s"), who); |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12227
diff
changeset
|
845 ui_handle = gaim_gtk_notify_formatted(_("Buddy Information"), primary, NULL, text); |
11533
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
846 g_free(primary); |
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11359
diff
changeset
|
847 return ui_handle; |
9797 | 848 } |
849 | |
5437 | 850 static void |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
851 gaim_gtk_close_notify(GaimNotifyType type, void *ui_handle) |
5437 | 852 { |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
853 if (type == GAIM_NOTIFY_EMAIL || type == GAIM_NOTIFY_EMAILS) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
854 { |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
855 GaimNotifyMailData *data = (GaimNotifyMailData *)ui_handle; |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
856 |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
857 g_free(data->url); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
858 g_free(data); |
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
859 } |
10439 | 860 else if (type == GAIM_NOTIFY_SEARCHRESULTS) |
861 { | |
862 GaimNotifySearchResultsData *data = (GaimNotifySearchResultsData *)ui_handle; | |
863 | |
864 gtk_widget_destroy(data->window); | |
865 | |
866 g_free(data); | |
867 } | |
10750
d5a00882d118
[gaim-migrate @ 12353]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10732
diff
changeset
|
868 else if (ui_handle != NULL) |
5519
42a20beb80a7
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
869 gtk_widget_destroy(GTK_WIDGET(ui_handle)); |
5437 | 870 } |
871 | |
8272 | 872 #ifndef _WIN32 |
873 static gint | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
874 uri_command(const char *command, gboolean sync) |
8272 | 875 { |
13519 | 876 gchar *tmp; |
8272 | 877 GError *error = NULL; |
878 gint ret = 0; | |
879 | |
13519 | 880 gaim_debug_misc("gtknotify", "Executing %s\n", command); |
8278 | 881 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
882 if (!gaim_program_is_valid(command)) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
883 { |
13539
c69a837e990c
[gaim-migrate @ 15916]
Richard Laager <rlaager@wiktel.com>
parents:
13519
diff
changeset
|
884 tmp = g_strdup_printf(_("The browser command \"%s\" is invalid."), |
13519 | 885 command ? command : "(none)"); |
8272 | 886 gaim_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
887 g_free(tmp); | |
888 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
889 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
890 else if (sync) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
891 { |
8272 | 892 gint status; |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
893 |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
894 if (!g_spawn_command_line_sync(command, NULL, NULL, &status, &error)) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
895 { |
13539
c69a837e990c
[gaim-migrate @ 15916]
Richard Laager <rlaager@wiktel.com>
parents:
13519
diff
changeset
|
896 tmp = g_strdup_printf(_("Error launching \"%s\": %s"), |
13519 | 897 command, error->message); |
8272 | 898 gaim_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
899 g_free(tmp); | |
900 g_error_free(error); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
901 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
902 else |
8272 | 903 ret = status; |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
904 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
905 else |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
906 { |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
907 if (!g_spawn_command_line_async(command, &error)) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
908 { |
13539
c69a837e990c
[gaim-migrate @ 15916]
Richard Laager <rlaager@wiktel.com>
parents:
13519
diff
changeset
|
909 tmp = g_strdup_printf(_("Error launching \"%s\": %s"), |
13519 | 910 command, error->message); |
8272 | 911 gaim_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
912 g_free(tmp); | |
913 g_error_free(error); | |
914 } | |
915 } | |
916 | |
917 return ret; | |
918 } | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
919 #endif /* _WIN32 */ |
8272 | 920 |
7136 | 921 static void * |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
922 gaim_gtk_notify_uri(const char *uri) |
7136 | 923 { |
924 #ifndef _WIN32 | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
925 char *escaped = g_shell_quote(uri); |
7136 | 926 char *command = NULL; |
8272 | 927 char *remote_command = NULL; |
7136 | 928 const char *web_browser; |
8272 | 929 int place; |
7136 | 930 |
931 web_browser = gaim_prefs_get_string("/gaim/gtk/browsers/browser"); | |
8272 | 932 place = gaim_prefs_get_int("/gaim/gtk/browsers/place"); |
7136 | 933 |
10060 | 934 /* if they are running gnome, use the gnome web browser */ |
10061 | 935 if (gaim_running_gnome() == TRUE) |
10060 | 936 { |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
937 command = g_strdup_printf("gnome-open %s", escaped); |
10061 | 938 } |
10060 | 939 else if (!strcmp(web_browser, "epiphany") || |
9405 | 940 !strcmp(web_browser, "galeon")) |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
941 { |
8272 | 942 if (place == GAIM_BROWSER_NEW_WINDOW) |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
943 command = g_strdup_printf("%s -w %s", web_browser, escaped); |
8272 | 944 else if (place == GAIM_BROWSER_NEW_TAB) |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
945 command = g_strdup_printf("%s -n %s", web_browser, escaped); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
946 else |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
947 command = g_strdup_printf("%s %s", web_browser, escaped); |
9405 | 948 } |
949 else if (!strcmp(web_browser, "gnome-open")) | |
950 { | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
951 command = g_strdup_printf("gnome-open %s", escaped); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
952 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
953 else if (!strcmp(web_browser, "kfmclient")) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
954 { |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
955 command = g_strdup_printf("kfmclient openURL %s", escaped); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
956 /* |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
957 * Does Konqueror have options to open in new tab |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
958 * and/or current window? |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
959 */ |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
960 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
961 else if (!strcmp(web_browser, "mozilla") || |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
962 !strcmp(web_browser, "mozilla-firebird") || |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
963 !strcmp(web_browser, "firefox")) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
964 { |
9399 | 965 char *args = ""; |
966 | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
967 command = g_strdup_printf("%s %s", web_browser, escaped); |
8272 | 968 |
9399 | 969 /* |
970 * Firefox 0.9 and higher require a "-a firefox" option when | |
971 * using -remote commands. This breaks older versions of | |
972 * mozilla. So we include this other handly little string | |
973 * when calling firefox. If the API for remote calls changes | |
974 * any more in firefox then firefox should probably be split | |
975 * apart from mozilla-firebird and mozilla... but this is good | |
976 * for now. | |
977 */ | |
978 if (!strcmp(web_browser, "firefox")) | |
979 args = "-a firefox"; | |
980 | |
8272 | 981 if (place == GAIM_BROWSER_NEW_WINDOW) |
9399 | 982 remote_command = g_strdup_printf("%s %s -remote " |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
983 "openURL(%s,new-window)", |
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
984 web_browser, args, escaped); |
8272 | 985 else if (place == GAIM_BROWSER_NEW_TAB) |
9399 | 986 remote_command = g_strdup_printf("%s %s -remote " |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
987 "openURL(%s,new-tab)", |
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
988 web_browser, args, escaped); |
8272 | 989 else if (place == GAIM_BROWSER_CURRENT) |
9399 | 990 remote_command = g_strdup_printf("%s %s -remote " |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
991 "openURL(%s)", |
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
992 web_browser, args, escaped); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
993 } |
9405 | 994 else if (!strcmp(web_browser, "netscape")) |
995 { | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
996 command = g_strdup_printf("netscape %s", escaped); |
9405 | 997 |
998 if (place == GAIM_BROWSER_NEW_WINDOW) | |
999 { | |
1000 remote_command = g_strdup_printf("netscape -remote " | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1001 "openURL(%s,new-window)", |
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1002 escaped); |
9405 | 1003 } |
1004 else if (place == GAIM_BROWSER_CURRENT) | |
1005 { | |
1006 remote_command = g_strdup_printf("netscape -remote " | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1007 "openURL(%s)", escaped); |
9405 | 1008 } |
1009 } | |
1010 else if (!strcmp(web_browser, "opera")) | |
1011 { | |
1012 if (place == GAIM_BROWSER_NEW_WINDOW) | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1013 command = g_strdup_printf("opera -newwindow %s", escaped); |
9405 | 1014 else if (place == GAIM_BROWSER_NEW_TAB) |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1015 command = g_strdup_printf("opera -newpage %s", escaped); |
9405 | 1016 else if (place == GAIM_BROWSER_CURRENT) |
1017 { | |
1018 remote_command = g_strdup_printf("opera -remote " | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1019 "openURL(%s)", escaped); |
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1020 command = g_strdup_printf("opera %s", escaped); |
9405 | 1021 } |
1022 else | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1023 command = g_strdup_printf("opera %s", escaped); |
9405 | 1024 |
1025 } | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1026 else if (!strcmp(web_browser, "custom")) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1027 { |
7136 | 1028 const char *web_command; |
1029 | |
1030 web_command = gaim_prefs_get_string("/gaim/gtk/browsers/command"); | |
1031 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1032 if (web_command == NULL || *web_command == '\0') |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1033 { |
7136 | 1034 gaim_notify_error(NULL, NULL, _("Unable to open URL"), |
1035 _("The 'Manual' browser command has been " | |
1036 "chosen, but no command has been set.")); | |
1037 return NULL; | |
1038 } | |
1039 | |
1040 if (strstr(web_command, "%s")) | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1041 command = gaim_strreplace(web_command, "%s", escaped); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1042 else |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1043 { |
7136 | 1044 /* |
1045 * There is no "%s" in the browser command. Assume the user | |
1046 * wanted the URL tacked on to the end of the command. | |
1047 */ | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1048 command = g_strdup_printf("%s %s", web_command, escaped); |
7136 | 1049 } |
1050 } | |
1051 | |
12477
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1052 g_free(escaped); |
d90eae2387b5
[gaim-migrate @ 14788]
Richard Laager <rlaager@wiktel.com>
parents:
12257
diff
changeset
|
1053 |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1054 if (remote_command != NULL) |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1055 { |
8272 | 1056 /* try the remote command first */ |
1057 if (uri_command(remote_command, TRUE) != 0) | |
1058 uri_command(command, FALSE); | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1059 |
8272 | 1060 g_free(remote_command); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1061 |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1062 } |
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1063 else |
8272 | 1064 uri_command(command, FALSE); |
7136 | 1065 |
1066 g_free(command); | |
1067 | |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1068 #else /* !_WIN32 */ |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
1069 wgaim_notify_uri(uri); |
8338
354bba6ad254
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1070 #endif /* !_WIN32 */ |
7136 | 1071 |
1072 return NULL; | |
1073 } | |
1074 | |
5437 | 1075 static GaimNotifyUiOps ops = |
1076 { | |
1077 gaim_gtk_notify_message, | |
1078 gaim_gtk_notify_email, | |
1079 gaim_gtk_notify_emails, | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
1080 gaim_gtk_notify_formatted, |
10439 | 1081 gaim_gtk_notify_searchresults, |
11359 | 1082 gaim_gtk_notify_searchresults_new_rows, |
9797 | 1083 gaim_gtk_notify_userinfo, |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
1084 gaim_gtk_notify_uri, |
5437 | 1085 gaim_gtk_close_notify |
1086 }; | |
1087 | |
1088 GaimNotifyUiOps * | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7007
diff
changeset
|
1089 gaim_gtk_notify_get_ui_ops(void) |
5437 | 1090 { |
1091 return &ops; | |
1092 } |