pidgin/gtknotify.c

Wed, 21 Sep 2011 06:45:26 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 21 Sep 2011 06:45:26 +0000
changeset 32575
eb4fc932fae9
parent 32521
9281613a8688
child 32678
01f6312a4a7b
child 32912
6f4a4f8ad117
permissions
-rw-r--r--

Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.

Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).

We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.

5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file gtknotify.c GTK+ Notification API
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16123
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20113
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20113
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20113
diff changeset
6 /* pidgin
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7920
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7920
diff changeset
10 * source distribution.
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6381
diff changeset
11 *
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * (at your option) any later version.
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * GNU General Public License for more details.
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19832
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9777
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
27 #include "pidgin.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
28
7455
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
29 #include <gdk/gdkkeysyms.h>
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
30
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
31 #include "account.h"
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
32 #include "connection.h"
8284
c4af8a21d5d5 [gaim-migrate @ 9008]
Mark Doliner <markdoliner@pidgin.im>
parents: 8278
diff changeset
33 #include "debug.h"
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
34 #include "prefs.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
35 #include "pidginstock.h"
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6381
diff changeset
36 #include "util.h"
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
38 #include "gtkblist.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
39 #include "gtknotify.h"
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
40 #include "gtkpounce.h"
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
41 #include "gtkutils.h"
32439
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
42 #include "gtkwebview.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
43
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
44 typedef struct
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
45 {
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
46 GtkWidget *window;
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
47 int count;
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
48 } PidginUserInfo;
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
49
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
50 typedef struct
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
51 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
52 PurpleAccount *account;
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
53 char *url;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
54 GtkWidget *label;
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
55 int count;
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
56 gboolean purple_has_handle;
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
57 } PidginNotifyMailData;
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
58
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
59 typedef struct
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
60 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
61 PurpleAccount *account;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
62 PurplePounce *pounce;
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
63 char *pouncee;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
64 } PidginNotifyPounceData;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
65
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
66
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
67 typedef struct
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
68 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
69 PurpleAccount *account;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
70 GtkListStore *model;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
71 GtkWidget *treeview;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
72 GtkWidget *window;
13641
1173f8ca3fbf [gaim-migrate @ 16038]
Bartosz Oler <bartosz@pidgin.im>
parents: 13540
diff changeset
73 gpointer user_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
74 PurpleNotifySearchResults *results;
13641
1173f8ca3fbf [gaim-migrate @ 16038]
Bartosz Oler <bartosz@pidgin.im>
parents: 13540
diff changeset
75
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
76 } PidginNotifySearchResultsData;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
77
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
78 typedef struct
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
79 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
80 PurpleNotifySearchButton *button;
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
81 PidginNotifySearchResultsData *data;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
82
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
83 } PidginNotifySearchResultsButtonData;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
84
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
85 enum
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
86 {
15880
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
87 PIDGIN_MAIL_ICON,
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
88 PIDGIN_MAIL_TEXT,
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
89 PIDGIN_MAIL_DATA,
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
90 COLUMNS_PIDGIN_MAIL
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
91 };
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
92
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
93 enum
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
94 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
95 PIDGIN_POUNCE_ICON,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
96 PIDGIN_POUNCE_ALIAS,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
97 PIDGIN_POUNCE_EVENT,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
98 PIDGIN_POUNCE_TEXT,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
99 PIDGIN_POUNCE_DATE,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
100 PIDGIN_POUNCE_DATA,
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
101 COLUMNS_PIDGIN_POUNCE
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
102 };
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
103
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
104
27489
6a8a2099b20a Remove the PidginMailDialog typedef.
Paul Aurich <darkrain42@pidgin.im>
parents: 27488
diff changeset
105 typedef struct _PidginNotifyDialog
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
106 {
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
107 /*
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
108 * This must be first so PidginNotifyDialog can masquerade as the
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
109 * dialog widget.
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
110 */
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
111 GtkWidget *dialog;
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
112 GtkWidget *treeview;
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
113 GtkTreeStore *treemodel;
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
114 GtkLabel *label;
13415
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
115 GtkWidget *open_button;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
116 GtkWidget *dismiss_button;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
117 GtkWidget *edit_button;
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15225
diff changeset
118 int total_count;
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
119 gboolean in_use;
27489
6a8a2099b20a Remove the PidginMailDialog typedef.
Paul Aurich <darkrain42@pidgin.im>
parents: 27488
diff changeset
120 } PidginNotifyDialog;
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
121
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
122 typedef enum
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
123 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
124 PIDGIN_NOTIFY_MAIL,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
125 PIDGIN_NOTIFY_POUNCE,
27254
e1eec4dda0d2 Setting `dialog->open_button = button` when `button` is not yet assigned
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27063
diff changeset
126 PIDGIN_NOTIFY_TYPES
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
127 } PidginNotifyType;
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
128
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
129 static PidginNotifyDialog *mail_dialog = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
130 static PidginNotifyDialog *pounce_dialog = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
131
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
132 static PidginNotifyDialog *pidgin_create_notification_dialog(PidginNotifyType type);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
133 static void *pidgin_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed,
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
134 const char **subjects,
5476
6f863ea68018 [gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents: 5437
diff changeset
135 const char **froms, const char **tos,
12242
e7fc1748eb56 [gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents: 12227
diff changeset
136 const char **urls);
5476
6f863ea68018 [gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents: 5437
diff changeset
137
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
138 static void pidgin_close_notify(PurpleNotifyType type, void *ui_handle);
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
139
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
140 static void
6354
685303e0c013 [gaim-migrate @ 6853]
Christian Hammond <chipx86@chipx86.com>
parents: 6106
diff changeset
141 message_response_cb(GtkDialog *dialog, gint id, GtkWidget *widget)
6104
cf3241926c4e [gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
142 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
143 purple_notify_close(PURPLE_NOTIFY_MESSAGE, widget);
6104
cf3241926c4e [gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
144 }
cf3241926c4e [gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
145
cf3241926c4e [gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
146 static void
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
147 pounce_response_close(PidginNotifyDialog *dialog)
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
148 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
149 GtkTreeIter iter;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
150 PidginNotifyPounceData *pounce_data;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
151
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
152 while (gtk_tree_model_get_iter_first(
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
153 GTK_TREE_MODEL(pounce_dialog->treemodel), &iter)) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
154 gtk_tree_model_get(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
155 PIDGIN_POUNCE_DATA, &pounce_data,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
156 -1);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
157 gtk_tree_store_remove(dialog->treemodel, &iter);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
158
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
159 g_free(pounce_data->pouncee);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
160 g_free(pounce_data);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
161 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
162
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
163 gtk_widget_destroy(pounce_dialog->dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
164 g_free(pounce_dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
165 pounce_dialog = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
166 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
167
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
168 static void
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
169 delete_foreach(GtkTreeModel *model, GtkTreePath *path,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
170 GtkTreeIter *iter, gpointer data)
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
171 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
172 PidginNotifyPounceData *pounce_data;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
173
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
174 gtk_tree_model_get(model, iter,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
175 PIDGIN_POUNCE_DATA, &pounce_data,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
176 -1);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
177
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
178 if (pounce_data != NULL) {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
179 g_free(pounce_data->pouncee);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
180 g_free(pounce_data);
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
181 }
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
182 }
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
183
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
184 static void
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
185 open_im_foreach(GtkTreeModel *model, GtkTreePath *path,
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
186 GtkTreeIter *iter, gpointer data)
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
187 {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
188 PidginNotifyPounceData *pounce_data;
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
189
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
190 gtk_tree_model_get(model, iter,
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
191 PIDGIN_POUNCE_DATA, &pounce_data,
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
192 -1);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
193
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
194 if (pounce_data != NULL) {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
195 PurpleConversation *conv;
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
196
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
197 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
198 pounce_data->account, pounce_data->pouncee);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
199 purple_conversation_present(conv);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
200 }
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
201 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
202
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
203 static void
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
204 append_to_list(GtkTreeModel *model, GtkTreePath *path,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
205 GtkTreeIter *iter, gpointer data)
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
206 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
207 GList **list = data;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
208 *list = g_list_prepend(*list, gtk_tree_path_copy(path));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
209 }
28343
0f91a1031c00 Close the Pounce dialog when you dismiss the last pounce.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 28338
diff changeset
210
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
211 static void
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
212 pounce_response_dismiss()
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
213 {
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
214 GtkTreeModel *model = GTK_TREE_MODEL(pounce_dialog->treemodel);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
215 GtkTreeSelection *selection;
28343
0f91a1031c00 Close the Pounce dialog when you dismiss the last pounce.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 28338
diff changeset
216 GtkTreeIter iter;
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
217 GtkTreeIter new_selection;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
218 GList *list = NULL;
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
219 gboolean found_selection = FALSE;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
220
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
221 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
222 gtk_tree_selection_selected_foreach(selection, delete_foreach, pounce_dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
223 gtk_tree_selection_selected_foreach(selection, append_to_list, &list);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
224
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
225 g_return_if_fail(list != NULL);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
226
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
227 if (list->next == NULL) {
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
228 gtk_tree_model_get_iter(model, &new_selection, list->data);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
229 if (gtk_tree_model_iter_next(model, &new_selection))
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
230 found_selection = TRUE;
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
231 else {
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
232 /* This is the last thing in the list */
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
233 GtkTreePath *path;
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
234
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
235 /* Because gtk_tree_model_iter_prev doesn't exist... */
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
236 gtk_tree_model_get_iter(model, &new_selection, list->data);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
237 path = gtk_tree_model_get_path(model, &new_selection);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
238 if (gtk_tree_path_prev(path)) {
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
239 gtk_tree_model_get_iter(model, &new_selection, path);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
240 found_selection = TRUE;
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
241 }
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
242
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
243 gtk_tree_path_free(path);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
244 }
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
245 }
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
246
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
247 while (list) {
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
248 if (gtk_tree_model_get_iter(model, &iter, list->data)) {
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
249 gtk_tree_store_remove(GTK_TREE_STORE(pounce_dialog->treemodel), &iter);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
250 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
251 gtk_tree_path_free(list->data);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
252 list = g_list_delete_link(list, list);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
253 }
28343
0f91a1031c00 Close the Pounce dialog when you dismiss the last pounce.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 28338
diff changeset
254
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
255 if (gtk_tree_model_get_iter_first(model, &iter)) {
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
256 if (found_selection)
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
257 gtk_tree_selection_select_iter(selection, &new_selection);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
258 else
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
259 gtk_tree_selection_select_iter(selection, &iter);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
260 } else
28343
0f91a1031c00 Close the Pounce dialog when you dismiss the last pounce.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 28338
diff changeset
261 pounce_response_close(pounce_dialog);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
262 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
263
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
264 static void
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
265 pounce_response_open_ims()
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
266 {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
267 GtkTreeSelection *selection;
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
268
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
269 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
270 gtk_tree_selection_selected_foreach(selection, open_im_foreach, pounce_dialog);
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
271
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
272 pounce_response_dismiss();
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
273 }
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
274
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
275 static void
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
276 pounce_response_edit_cb(GtkTreeModel *model, GtkTreePath *path,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
277 GtkTreeIter *iter, gpointer data)
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
278 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
279 PidginNotifyPounceData *pounce_data;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
280 PidginNotifyDialog *dialog = (PidginNotifyDialog*)data;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
281 PurplePounce *pounce;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
282 GList *list;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
283
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
284 list = purple_pounces_get_all();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
285
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
286 gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), iter,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
287 PIDGIN_POUNCE_DATA, &pounce_data,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
288 -1);
27487
3fe841d5a8e8 Remove trailing whitespace
Paul Aurich <darkrain42@pidgin.im>
parents: 27476
diff changeset
289
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
290 for (; list != NULL; list = list->next) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
291 pounce = list->data;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
292 if (pounce == pounce_data->pounce) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
293 pidgin_pounce_editor_show(pounce_data->account, NULL, pounce_data->pounce);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
294 return;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
295 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
296 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
297
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
298 purple_debug_warning("gtknotify", "Pounce was destroyed.\n");
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
299 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
300
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
301 static void
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
302 pounce_response_cb(GtkDialog *dlg, gint id, PidginNotifyDialog *dialog)
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
303 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
304 GtkTreeSelection *selection = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
305
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
306 switch (id) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
307 case GTK_RESPONSE_CLOSE:
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
308 case GTK_RESPONSE_DELETE_EVENT:
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
309 pounce_response_close(dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
310 break;
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
311 case GTK_RESPONSE_YES:
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
312 pounce_response_open_ims();
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
313 break;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
314 case GTK_RESPONSE_NO:
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
315 pounce_response_dismiss();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
316 break;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
317 case GTK_RESPONSE_APPLY:
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
318 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
319 gtk_tree_selection_selected_foreach(selection, pounce_response_edit_cb,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
320 dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
321 break;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
322 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
323 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
324
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
325 static void
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
326 pounce_row_selected_cb(GtkTreeView *tv, GtkTreePath *path,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
327 GtkTreeViewColumn *col, gpointer data)
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
328 {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
329 GtkTreeSelection *selection;
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
330 int count;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
331
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
332 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
333
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
334 count = gtk_tree_selection_count_selected_rows(selection);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
335
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
336 if (count == 0) {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
337 gtk_widget_set_sensitive(pounce_dialog->open_button, FALSE);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
338 gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
339 gtk_widget_set_sensitive(pounce_dialog->dismiss_button, FALSE);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
340 } else if (count == 1) {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
341 GList *pounces;
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
342 GList *list;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
343 PidginNotifyPounceData *pounce_data;
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
344 GtkTreeIter iter;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
345
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
346 list = gtk_tree_selection_get_selected_rows(selection, NULL);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
347 gtk_tree_model_get_iter(GTK_TREE_MODEL(pounce_dialog->treemodel),
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
348 &iter, list->data);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
349 gtk_tree_model_get(GTK_TREE_MODEL(pounce_dialog->treemodel), &iter,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
350 PIDGIN_POUNCE_DATA, &pounce_data,
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
351 -1);
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
352 g_list_foreach(list, (GFunc)gtk_tree_path_free, NULL);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
353 g_list_free(list);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
354
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
355 pounces = purple_pounces_get_all();
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
356 for (; pounces != NULL; pounces = pounces->next) {
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
357 PurplePounce *pounce = pounces->data;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
358 if (pounce == pounce_data->pounce) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
359 gtk_widget_set_sensitive(pounce_dialog->edit_button, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
360 break;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
361 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
362 }
27487
3fe841d5a8e8 Remove trailing whitespace
Paul Aurich <darkrain42@pidgin.im>
parents: 27476
diff changeset
363
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
364 gtk_widget_set_sensitive(pounce_dialog->open_button, TRUE);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
365 gtk_widget_set_sensitive(pounce_dialog->dismiss_button, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
366 } else {
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
367 gtk_widget_set_sensitive(pounce_dialog->open_button, TRUE);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
368 gtk_widget_set_sensitive(pounce_dialog->edit_button, FALSE);
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
369 gtk_widget_set_sensitive(pounce_dialog->dismiss_button, TRUE);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
370 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
371
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
372
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
373 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
374
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
375 static void
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
376 reset_mail_dialog(GtkDialog *unused)
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
377 {
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
378 if (mail_dialog->in_use)
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
379 return;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
380 gtk_widget_destroy(mail_dialog->dialog);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
381 g_free(mail_dialog);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
382 mail_dialog = NULL;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
383 }
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
384
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
385 static void
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
386 email_response_cb(GtkDialog *unused, gint id, PidginNotifyDialog *unused2)
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
387 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
388 PidginNotifyMailData *data = NULL;
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
389 GtkTreeModel *model = GTK_TREE_MODEL(mail_dialog->treemodel);
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
390 GtkTreeIter iter;
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
391
10260
76253312081f [gaim-migrate @ 11403]
Matthew A. Nicholson <therealman11@users.sourceforge.net>
parents: 10240
diff changeset
392 if (id == GTK_RESPONSE_YES)
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
393 {
27476
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
394 /* A single row activated. Remove that row. */
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
395 GtkTreeSelection *selection;
14286
9ff15ceacd34 [gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
396
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
397 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(mail_dialog->treeview));
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
398
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
399 if (gtk_tree_selection_get_selected(selection, NULL, &iter))
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
400 {
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
401 gtk_tree_model_get(model, &iter, PIDGIN_MAIL_DATA, &data, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
402 purple_notify_uri(NULL, data->url);
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
403
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
404 gtk_tree_store_remove(mail_dialog->treemodel, &iter);
24194
e9b2e5b544c9 Some cleanup and a little leak fix that I thought I committed a while ago.
Daniel Atallah <datallah@pidgin.im>
parents: 24193
diff changeset
405 if (data->purple_has_handle)
e9b2e5b544c9 Some cleanup and a little leak fix that I thought I committed a while ago.
Daniel Atallah <datallah@pidgin.im>
parents: 24193
diff changeset
406 purple_notify_close(PURPLE_NOTIFY_EMAILS, data);
e9b2e5b544c9 Some cleanup and a little leak fix that I thought I committed a while ago.
Daniel Atallah <datallah@pidgin.im>
parents: 24193
diff changeset
407 else
e9b2e5b544c9 Some cleanup and a little leak fix that I thought I committed a while ago.
Daniel Atallah <datallah@pidgin.im>
parents: 24193
diff changeset
408 pidgin_close_notify(PURPLE_NOTIFY_EMAILS, data);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
409
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
410 if (gtk_tree_model_get_iter_first(model, &iter))
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
411 return;
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
412 }
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
413 else
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
414 return;
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
415 }
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
416 else
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
417 {
27476
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
418 /* Remove all the rows */
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
419 while (gtk_tree_model_get_iter_first(model, &iter))
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
420 {
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
421 gtk_tree_model_get(model, &iter, PIDGIN_MAIL_DATA, &data, -1);
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
422
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
423 if (id == GTK_RESPONSE_ACCEPT)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
424 purple_notify_uri(NULL, data->url);
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
425
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
426 gtk_tree_store_remove(mail_dialog->treemodel, &iter);
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
427 if (data->purple_has_handle)
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
428 purple_notify_close(PURPLE_NOTIFY_EMAILS, data);
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
429 else
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
430 pidgin_close_notify(PURPLE_NOTIFY_EMAILS, data);
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
431 }
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
432 }
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
433
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
434 reset_mail_dialog(NULL);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
435 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
436
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
437 static void
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
438 email_row_activated_cb(GtkTreeView *tv, GtkTreePath *path,
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
439 GtkTreeViewColumn *col, gpointer data)
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
440 {
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
441 email_response_cb(NULL, GTK_RESPONSE_YES, NULL);
19431
99985a434ef8 Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents: 19222
diff changeset
442 }
99985a434ef8 Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents: 19222
diff changeset
443
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22007
diff changeset
444 static gboolean
7007
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
445 formatted_close_cb(GtkWidget *win, GdkEvent *event, void *user_data)
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
446 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
447 purple_notify_close(PURPLE_NOTIFY_FORMATTED, win);
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22007
diff changeset
448 return FALSE;
7007
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
449 }
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
450
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22007
diff changeset
451 static gboolean
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
452 searchresults_close_cb(PidginNotifySearchResultsData *data, GdkEvent *event, gpointer user_data)
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
453 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
454 purple_notify_close(PURPLE_NOTIFY_SEARCHRESULTS, data);
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22007
diff changeset
455 return FALSE;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
456 }
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
457
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
458 static void
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
459 searchresults_callback_wrapper_cb(GtkWidget *widget, PidginNotifySearchResultsButtonData *bd)
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
460 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
461 PidginNotifySearchResultsData *data = bd->data;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
462
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
463 GtkTreeSelection *selection;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
464 GtkTreeModel *model;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
465 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
466 PurpleNotifySearchButton *button;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
467 GList *row = NULL;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
468 gchar *str;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
469 int i;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
470
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
471 g_return_if_fail(data != NULL);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
472
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
473 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->treeview));
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
474
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
475 if (gtk_tree_selection_get_selected(selection, &model, &iter))
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
476 {
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
477 for (i = 1; i < gtk_tree_model_get_n_columns(GTK_TREE_MODEL(model)); i++) {
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
478 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, i, &str, -1);
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
479 row = g_list_append(row, str);
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
480 }
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
481 }
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
482
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
483 button = bd->button;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
484 button->callback(purple_account_get_connection(data->account), row, data->user_data);
14037
d034d4d2070e [gaim-migrate @ 16533]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13641
diff changeset
485 g_list_foreach(row, (GFunc)g_free, NULL);
d034d4d2070e [gaim-migrate @ 16533]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13641
diff changeset
486 g_list_free(row);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
487 }
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
488
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
489 static void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
490 pidgin_notify_message(PurpleNotifyMsgType type, const char *title,
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
491 const char *primary, const char *secondary)
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 {
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
493 GtkWidget *dialog;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
494 GtkWidget *hbox;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
495 GtkWidget *label;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
496 GtkWidget *img = NULL;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
497 char label_text[2048];
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
498 const char *icon_name = NULL;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
499 char *primary_esc, *secondary_esc;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
500
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
501 switch (type)
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
502 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
503 case PURPLE_NOTIFY_MSG_ERROR:
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
504 icon_name = PIDGIN_STOCK_DIALOG_ERROR;
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
505 break;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
507 case PURPLE_NOTIFY_MSG_WARNING:
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
508 icon_name = PIDGIN_STOCK_DIALOG_WARNING;
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
509 break;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
511 case PURPLE_NOTIFY_MSG_INFO:
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
512 icon_name = PIDGIN_STOCK_DIALOG_INFO;
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
513 break;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
514
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
515 default:
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
516 icon_name = NULL;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
517 break;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
518 }
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
520 if (icon_name != NULL)
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
521 {
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
522 img = gtk_image_new_from_stock(icon_name, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
523 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
524 }
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
526 dialog = gtk_dialog_new_with_buttons(title ? title : PIDGIN_ALERT_TITLE,
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
527 NULL, 0, GTK_STOCK_CLOSE,
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
528 GTK_RESPONSE_CLOSE, NULL);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
529
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
530 gtk_window_set_role(GTK_WINDOW(dialog), "notify_dialog");
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
531
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
532 g_signal_connect(G_OBJECT(dialog), "response",
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
533 G_CALLBACK(message_response_cb), dialog);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
534
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
535 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER);
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
536 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
537 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
538 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
539 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BOX_SPACE);
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
540
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
541 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
542 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
544 if (img != NULL)
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
545 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
547 primary_esc = g_markup_escape_text(primary, -1);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
548 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
549 g_snprintf(label_text, sizeof(label_text),
20869
e2db8ce46cda If there is no secondary text in a notify, avoid adding "\n\n" and creating
Richard Laager <rlaager@pidgin.im>
parents: 20791
diff changeset
550 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s",
e2db8ce46cda If there is no secondary text in a notify, avoid adding "\n\n" and creating
Richard Laager <rlaager@pidgin.im>
parents: 20791
diff changeset
551 primary_esc, (secondary ? "\n\n" : ""),
e2db8ce46cda If there is no secondary text in a notify, avoid adding "\n\n" and creating
Richard Laager <rlaager@pidgin.im>
parents: 20791
diff changeset
552 (secondary ? secondary_esc : ""));
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
553 g_free(primary_esc);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
554 g_free(secondary_esc);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
555
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
556 label = gtk_label_new(NULL);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
557
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
558 gtk_label_set_markup(GTK_LABEL(label), label_text);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
559 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
19222
f0fa371d6752 Allow notification labels to be selectable (for copy-and-paste purposes). Fixes #563.
Daniel Atallah <datallah@pidgin.im>
parents: 18802
diff changeset
560 gtk_label_set_selectable(GTK_LABEL(label), TRUE);
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
561 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
562 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
563
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21213
diff changeset
564 pidgin_auto_parent_window(dialog);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21213
diff changeset
565
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
566 gtk_widget_show_all(dialog);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
568 return dialog;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
569 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
570
13415
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
571 static void
27489
6a8a2099b20a Remove the PidginMailDialog typedef.
Paul Aurich <darkrain42@pidgin.im>
parents: 27488
diff changeset
572 selection_changed_cb(GtkTreeSelection *sel, PidginNotifyDialog *dialog)
13415
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
573 {
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
574 GtkTreeIter iter;
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
575 GtkTreeModel *model;
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
576 PidginNotifyMailData *data;
13415
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
577 gboolean active = TRUE;
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
578
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
579 if (gtk_tree_selection_get_selected(sel, &model, &iter) == FALSE)
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
580 active = FALSE;
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
581 else
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
582 {
15880
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
583 gtk_tree_model_get(model, &iter, PIDGIN_MAIL_DATA, &data, -1);
13415
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
584 if (data->url == NULL)
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
585 active = FALSE;
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
586 }
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
587
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
588 gtk_widget_set_sensitive(dialog->open_button, active);
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
589 }
c8090b1fe17a [gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13414
diff changeset
590
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
591 static void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
592 pidgin_notify_email(PurpleConnection *gc, const char *subject, const char *from,
12242
e7fc1748eb56 [gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents: 12227
diff changeset
593 const char *to, const char *url)
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
594 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
595 return pidgin_notify_emails(gc, 1, (subject != NULL),
5524
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
596 (subject == NULL ? NULL : &subject),
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
597 (from == NULL ? NULL : &from),
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
598 (to == NULL ? NULL : &to),
12242
e7fc1748eb56 [gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents: 12227
diff changeset
599 (url == NULL ? NULL : &url));
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
600 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601
15789
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
602 static int
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
603 mail_window_focus_cb(GtkWidget *widget, GdkEventFocus *focus, gpointer null)
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
604 {
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
605 pidgin_set_urgent(GTK_WINDOW(widget), FALSE);
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
606 return 0;
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
607 }
f7026b5ebe55 Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15788
diff changeset
608
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
609 /* count == 0 means this is a detailed mail notification.
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
610 * count > 0 mean non-detailed.
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
611 */
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
612 static void *
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
613 pidgin_notify_add_mail(GtkTreeStore *treemodel, PurpleAccount *account, char *notification, const char *url, int count, gboolean clear, gboolean *new_data)
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
614 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
615 PidginNotifyMailData *data = NULL;
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
616 GtkTreeIter iter;
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
617 GdkPixbuf *icon;
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
618 gboolean new_n = TRUE;
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
619
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
620 if (count > 0 || clear) {
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
621 /* Allow only one non-detailed email notification for each account */
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
622 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(treemodel), &iter)) {
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
623 gboolean advanced;
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
624 do {
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
625 advanced = FALSE;
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
626 gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter,
15880
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
627 PIDGIN_MAIL_DATA, &data, -1);
27470
328658067ce6 Avoid a null deref when clearing mail notifications. Refs #9345.
Paul Aurich <darkrain42@pidgin.im>
parents: 27410
diff changeset
628 if (data && data->account == account) {
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
629 if (clear) {
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
630 advanced = gtk_tree_store_remove(treemodel, &iter);
27492
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
631 mail_dialog->total_count -= data->count;
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
632
27410
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
633 if (data->purple_has_handle)
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
634 purple_notify_close(PURPLE_NOTIFY_EMAILS, data);
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
635 else
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
636 pidgin_close_notify(PURPLE_NOTIFY_EMAILS, data);
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
637 /* We're completely done if we've processed all entries */
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
638 if (!advanced)
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
639 return NULL;
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
640 } else if (data->count > 0) {
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
641 new_n = FALSE;
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
642 g_free(data->url);
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
643 data->url = NULL;
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
644 mail_dialog->total_count -= data->count;
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
645 break;
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
646 }
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
647 }
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
648 } while (advanced || gtk_tree_model_iter_next(GTK_TREE_MODEL(treemodel), &iter));
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
649 }
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
650 }
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
651
20149
1c03148f1668 applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents: 20147
diff changeset
652 if (clear)
1c03148f1668 applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents: 20147
diff changeset
653 return NULL;
1c03148f1668 applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents: 20147
diff changeset
654
1c03148f1668 applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents: 20147
diff changeset
655 icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
1c03148f1668 applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents: 20147
diff changeset
656
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
657 if (new_n) {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
658 data = g_new0(PidginNotifyMailData, 1);
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
659 data->purple_has_handle = TRUE;
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
660 gtk_tree_store_append(treemodel, &iter, NULL);
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
661 }
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
662
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
663 if (url != NULL)
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
664 data->url = g_strdup(url);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
665
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
666 gtk_tree_store_set(treemodel, &iter,
15880
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
667 PIDGIN_MAIL_ICON, icon,
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
668 PIDGIN_MAIL_TEXT, notification,
d275b025481c More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15789
diff changeset
669 PIDGIN_MAIL_DATA, data,
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
670 -1);
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
671 data->account = account;
27492
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
672 /* count == 0 indicates we're adding a single detailed e-mail */
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
673 data->count = count > 0 ? count : 1;
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
674
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
675 if (icon)
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
676 g_object_unref(icon);
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
677
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
678 if (new_data)
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
679 *new_data = new_n;
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
680 return data;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
681 }
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
682
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
683 static void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
684 pidgin_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed,
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
685 const char **subjects, const char **froms,
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
686 const char **tos, const char **urls)
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
687 {
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
688 char *notification;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
689 PurpleAccount *account;
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
690 PidginNotifyMailData *data = NULL, *data2;
27410
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
691 gboolean new_data = FALSE;
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
692
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
693 /* Don't bother updating if there aren't new emails and we don't have any displayed currently */
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
694 if (count == 0 && mail_dialog == NULL)
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
695 return NULL;
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
696
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
697 account = purple_connection_get_account(gc);
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
698 if (mail_dialog == NULL)
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
699 mail_dialog = pidgin_create_notification_dialog(PIDGIN_NOTIFY_MAIL);
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
700
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
701 mail_dialog->total_count += count;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
702 if (detailed) {
27492
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
703 for ( ; count; --count) {
13414
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
704 char *to_text = NULL;
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
705 char *from_text = NULL;
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
706 char *subject_text = NULL;
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
707 char *tmp;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
708 gboolean first = TRUE;
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
709
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
710 if (tos != NULL) {
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
711 tmp = g_markup_escape_text(*tos, -1);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
712 to_text = g_strdup_printf("<b>%s</b>: %s\n", _("Account"), tmp);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
713 g_free(tmp);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
714 first = FALSE;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
715 tos++;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
716 }
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
717 if (froms != NULL) {
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
718 tmp = g_markup_escape_text(*froms, -1);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
719 from_text = g_strdup_printf("%s<b>%s</b>: %s\n", first ? "<br>" : "", _("Sender"), tmp);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
720 g_free(tmp);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
721 first = FALSE;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
722 froms++;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
723 }
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
724 if (subjects != NULL) {
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
725 tmp = g_markup_escape_text(*subjects, -1);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
726 subject_text = g_strdup_printf("%s<b>%s</b>: %s", first ? "<br>" : "", _("Subject"), tmp);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
727 g_free(tmp);
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
728 first = FALSE;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
729 subjects++;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
730 }
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
731 #define SAFE(x) ((x) ? (x) : "")
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
732 notification = g_strdup_printf("%s%s%s", SAFE(to_text), SAFE(from_text), SAFE(subject_text));
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
733 #undef SAFE
13414
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
734 g_free(to_text);
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
735 g_free(from_text);
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
736 g_free(subject_text);
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
737
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
738 /* If we don't keep track of this, will leak "data" for each of the notifications except the last */
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
739 data2 = pidgin_notify_add_mail(mail_dialog->treemodel, account, notification, urls ? *urls : NULL, 0, FALSE, &new_data);
27410
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
740 if (data2 && new_data) {
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
741 if (data)
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
742 data->purple_has_handle = FALSE;
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
743 data = data2;
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
744 }
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
745 g_free(notification);
13414
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
746
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
747 if (urls != NULL)
eadfdb95f030 [gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents: 13281
diff changeset
748 urls++;
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
749 }
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
750 } else {
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
751 if (count > 0) {
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
752 notification = g_strdup_printf(ngettext("%s has %d new message.",
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
753 "%s has %d new messages.",
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
754 (int)count),
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
755 *tos, (int)count);
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
756 data2 = pidgin_notify_add_mail(mail_dialog->treemodel, account, notification, urls ? *urls : NULL, count, FALSE, &new_data);
27410
69470d6cbabd Make sure uninitialized variable is not used. This might fix #9345,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27254
diff changeset
757 if (data2 && new_data) {
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
758 if (data)
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
759 data->purple_has_handle = FALSE;
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
760 data = data2;
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
761 }
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
762 g_free(notification);
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
763 } else {
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
764 /* Clear out all mails for the account */
23031
e5fdd0edf679 Fix a double free caused by my previous leak fix not covering all possible
Daniel Atallah <datallah@pidgin.im>
parents: 22999
diff changeset
765 pidgin_notify_add_mail(mail_dialog->treemodel, account, NULL, NULL, 0, TRUE, NULL);
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
766
27492
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
767 if (mail_dialog->total_count == 0) {
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
768 /*
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
769 * There is no API to clear the headline specifically
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
770 * This will trigger reset_mail_dialog()
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
771 */
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
772 pidgin_blist_set_headline(NULL, NULL, NULL, NULL, NULL);
20149
1c03148f1668 applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents: 20147
diff changeset
773 return NULL;
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
774 }
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
775 }
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
776 }
12647
b00d9913117e [gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12624
diff changeset
777
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
778 if (!GTK_WIDGET_VISIBLE(mail_dialog->dialog)) {
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
779 GdkPixbuf *pixbuf = gtk_widget_render_icon(mail_dialog->dialog, PIDGIN_STOCK_DIALOG_MAIL,
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
780 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), NULL);
23325
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23031
diff changeset
781 char *label_text = g_strdup_printf(ngettext("<b>%d new email.</b>",
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23031
diff changeset
782 "<b>%d new emails.</b>",
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15225
diff changeset
783 mail_dialog->total_count), mail_dialog->total_count);
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
784 mail_dialog->in_use = TRUE; /* So that _set_headline doesn't accidentally
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
785 remove the notifications when replacing an
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
786 old notification. */
20113
3bb2fec99650 applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
787 pidgin_blist_set_headline(label_text,
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
788 pixbuf, G_CALLBACK(gtk_widget_show_all), mail_dialog->dialog,
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15275
diff changeset
789 (GDestroyNotify)reset_mail_dialog);
15389
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
790 mail_dialog->in_use = FALSE;
2427b3d24858 [gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15388
diff changeset
791 g_free(label_text);
15395
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
792 if (pixbuf)
ce9f0fe6a77a [gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15393
diff changeset
793 g_object_unref(pixbuf);
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
794 } else if (!GTK_WIDGET_HAS_FOCUS(mail_dialog->dialog))
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
795 pidgin_set_urgent(GTK_WINDOW(mail_dialog->dialog), TRUE);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
796
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
797 return data;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
798 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
799
8337
07da3cefb9d3 [gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents: 8284
diff changeset
800 static gboolean
10875
bd4a5904e395 [gaim-migrate @ 12566]
Daniel Atallah <datallah@pidgin.im>
parents: 10774
diff changeset
801 formatted_input_cb(GtkWidget *win, GdkEventKey *event, gpointer data)
7455
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
802 {
8337
07da3cefb9d3 [gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents: 8284
diff changeset
803 if (event->keyval == GDK_Escape)
07da3cefb9d3 [gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents: 8284
diff changeset
804 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
805 purple_notify_close(PURPLE_NOTIFY_FORMATTED, win);
8337
07da3cefb9d3 [gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents: 8284
diff changeset
806
7455
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
807 return TRUE;
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
808 }
8337
07da3cefb9d3 [gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents: 8284
diff changeset
809
7455
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
810 return FALSE;
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
811 }
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
812
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
813 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
814 pidgin_notify_formatted(const char *title, const char *primary,
12242
e7fc1748eb56 [gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents: 12227
diff changeset
815 const char *secondary, const char *text)
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
816 {
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
817 GtkWidget *window;
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
818 GtkWidget *vbox;
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
819 GtkWidget *label;
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
820 GtkWidget *button;
32439
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
821 GtkWidget *web_view;
32521
9281613a8688 Use pidgin_create_webview in the gtknotify code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32513
diff changeset
822 GtkWidget *frame;
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
823 char label_text[2048];
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
824 char *linked_text, *primary_esc, *secondary_esc;
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
825
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
826 window = gtk_dialog_new();
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
827 gtk_window_set_title(GTK_WINDOW(window), title);
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
828 gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER);
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
829 gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
830
7007
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
831 g_signal_connect(G_OBJECT(window), "delete_event",
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
832 G_CALLBACK(formatted_close_cb), NULL);
b687feec58a2 [gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
833
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
834 /* Setup the main vbox */
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
835 vbox = GTK_DIALOG(window)->vbox;
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
836
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
837 /* Setup the descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
838 primary_esc = g_markup_escape_text(primary, -1);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
839 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
840 g_snprintf(label_text, sizeof(label_text),
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
841 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s",
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
842 primary_esc,
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
843 (secondary ? "\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
844 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
845 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
846 g_free(secondary_esc);
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
847
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
848 label = gtk_label_new(NULL);
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
849
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
850 gtk_label_set_markup(GTK_LABEL(label), label_text);
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
851 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
19222
f0fa371d6752 Allow notification labels to be selectable (for copy-and-paste purposes). Fixes #563.
Daniel Atallah <datallah@pidgin.im>
parents: 18802
diff changeset
852 gtk_label_set_selectable(GTK_LABEL(label), TRUE);
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
853 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
854 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
855 gtk_widget_show(label);
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
856
32439
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
857 /* Add the webview */
32521
9281613a8688 Use pidgin_create_webview in the gtknotify code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32513
diff changeset
858 frame = pidgin_create_webview(FALSE, &web_view, NULL, NULL);
32439
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
859 gtk_widget_set_name(web_view, "pidgin_notify_webview");
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
860 gtk_widget_set_size_request(web_view, 300, 250);
32521
9281613a8688 Use pidgin_create_webview in the gtknotify code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32513
diff changeset
861 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
9281613a8688 Use pidgin_create_webview in the gtknotify code.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32513
diff changeset
862 gtk_widget_show(frame);
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
863
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
864 /* Add the Close button. */
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
865 button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
19222
f0fa371d6752 Allow notification labels to be selectable (for copy-and-paste purposes). Fixes #563.
Daniel Atallah <datallah@pidgin.im>
parents: 18802
diff changeset
866 gtk_widget_grab_focus(button);
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
867
6872
61144295083e [gaim-migrate @ 7418]
Nathan Walp <nwalp@pidgin.im>
parents: 6465
diff changeset
868 g_signal_connect_swapped(G_OBJECT(button), "clicked",
24658
fdfbe4a9b77c Fix an assertion failure/unlikely crash when:
Mark Doliner <markdoliner@pidgin.im>
parents: 24194
diff changeset
869 G_CALLBACK(formatted_close_cb), window);
7455
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
870 g_signal_connect(G_OBJECT(window), "key_press_event",
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
871 G_CALLBACK(formatted_input_cb), NULL);
7455
f12dffd5fefd [gaim-migrate @ 8068]
Nathan Walp <nwalp@pidgin.im>
parents: 7399
diff changeset
872
8882
e1f85917a765 [gaim-migrate @ 9651]
Mark Doliner <markdoliner@pidgin.im>
parents: 8523
diff changeset
873 /* Make sure URLs are clickable */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
874 linked_text = purple_markup_linkify(text);
32513
9352b4c92d13 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32507
diff changeset
875 webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(web_view), linked_text, "");
8882
e1f85917a765 [gaim-migrate @ 9651]
Mark Doliner <markdoliner@pidgin.im>
parents: 8523
diff changeset
876 g_free(linked_text);
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7039
diff changeset
877
32439
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
878 g_object_set_data(G_OBJECT(window), "webview-widget", web_view);
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
879
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
880 /* Show the window */
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21213
diff changeset
881 pidgin_auto_parent_window(window);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21213
diff changeset
882
6381
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
883 gtk_widget_show(window);
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
884
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
885 return window;
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
886 }
53203c44c731 [gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
887
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
888 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
889 pidgin_notify_searchresults_new_rows(PurpleConnection *gc, PurpleNotifySearchResults *results,
13641
1173f8ca3fbf [gaim-migrate @ 16038]
Bartosz Oler <bartosz@pidgin.im>
parents: 13540
diff changeset
890 void *data_)
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
891 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
892 PidginNotifySearchResultsData *data = data_;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
893 GtkListStore *model = data->model;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
894 GtkTreeIter iter;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 12911
diff changeset
895 GdkPixbuf *pixbuf;
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
896 GList *row, *column;
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
897 guint n;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 12911
diff changeset
898
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
899 gtk_list_store_clear(data->model);
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
900
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
901 pixbuf = pidgin_create_prpl_icon(purple_connection_get_account(gc), 0.5);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
902
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
903 for (row = results->rows; row != NULL; row = row->next) {
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
904
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
905 gtk_list_store_append(model, &iter);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 12911
diff changeset
906 gtk_list_store_set(model, &iter, 0, pixbuf, -1);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
907
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
908 n = 1;
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
909 for (column = row->data; column != NULL; column = column->next) {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12477
diff changeset
910 GValue v;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
911
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12477
diff changeset
912 v.g_type = 0;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
913 g_value_init(&v, G_TYPE_STRING);
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
914 g_value_set_string(&v, column->data);
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
915 gtk_list_store_set_value(model, &iter, n, &v);
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
916 n++;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
917 }
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
918 }
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 12911
diff changeset
919
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 12911
diff changeset
920 if (pixbuf != NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 12911
diff changeset
921 g_object_unref(pixbuf);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
922 }
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
923
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9791
diff changeset
924 static void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
925 pidgin_notify_searchresults(PurpleConnection *gc, const char *title,
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
926 const char *primary, const char *secondary,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
927 PurpleNotifySearchResults *results, gpointer user_data)
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
928 {
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
929 GtkWidget *window;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
930 GtkWidget *treeview;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
931 GtkWidget *close_button;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
932 GType *col_types;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
933 GtkListStore *model;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
934 GtkCellRenderer *renderer;
12257
bc979ba39363 [gaim-migrate @ 14559]
Bartosz Oler <bartosz@pidgin.im>
parents: 12242
diff changeset
935 guint col_num;
20980
1599801ecbae Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20791
diff changeset
936 GList *columniter;
12257
bc979ba39363 [gaim-migrate @ 14559]
Bartosz Oler <bartosz@pidgin.im>
parents: 12242
diff changeset
937 guint i;
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 24658
diff changeset
938 GList *l;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
939
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
940 GtkWidget *vbox;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
941 GtkWidget *label;
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
942 PidginNotifySearchResultsData *data;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
943 char *label_text;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
944 char *primary_esc, *secondary_esc;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
945
12257
bc979ba39363 [gaim-migrate @ 14559]
Bartosz Oler <bartosz@pidgin.im>
parents: 12242
diff changeset
946 g_return_val_if_fail(gc != NULL, NULL);
bc979ba39363 [gaim-migrate @ 14559]
Bartosz Oler <bartosz@pidgin.im>
parents: 12242
diff changeset
947 g_return_val_if_fail(results != NULL, NULL);
bc979ba39363 [gaim-migrate @ 14559]
Bartosz Oler <bartosz@pidgin.im>
parents: 12242
diff changeset
948
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
949 data = g_malloc(sizeof(PidginNotifySearchResultsData));
13641
1173f8ca3fbf [gaim-migrate @ 16038]
Bartosz Oler <bartosz@pidgin.im>
parents: 13540
diff changeset
950 data->user_data = user_data;
14038
3b7740b778ad [gaim-migrate @ 16534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14037
diff changeset
951 data->results = results;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
952
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
953 /* Create the window */
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
954 window = gtk_dialog_new();
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
955 gtk_window_set_title(GTK_WINDOW(window), title ? title :_("Search Results"));
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
956 gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER);
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
957 gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
958
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
959 g_signal_connect_swapped(G_OBJECT(window), "delete_event",
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
960 G_CALLBACK(searchresults_close_cb), data);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
961
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
962 /* Setup the main vbox */
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
963 vbox = GTK_DIALOG(window)->vbox;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
964
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
965 /* Setup the descriptive label */
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
966 primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
967 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
968 label_text = g_strdup_printf(
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
969 "<span weight=\"bold\" size=\"larger\">%s</span>%s%s",
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
970 (primary ? primary_esc : ""),
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
971 (primary && secondary ? "\n" : ""),
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
972 (secondary ? secondary_esc : ""));
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
973 g_free(primary_esc);
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10750
diff changeset
974 g_free(secondary_esc);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
975 label = gtk_label_new(NULL);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
976 gtk_label_set_markup(GTK_LABEL(label), label_text);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
977 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
978 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
979 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
980 gtk_widget_show(label);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
981 g_free(label_text);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
982
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
983 /* +1 is for the automagically created Status column. */
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
984 col_num = g_list_length(results->columns) + 1;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
985
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
986 /* Setup the list model */
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
987 col_types = g_new0(GType, col_num);
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
988
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
989 /* There always is this first column. */
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
990 col_types[0] = GDK_TYPE_PIXBUF;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
991 for (i = 1; i < col_num; i++) {
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
992 col_types[i] = G_TYPE_STRING;
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
993 }
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
994 model = gtk_list_store_newv(col_num, col_types);
22999
3323b9070331 More plumbing work.
Daniel Atallah <datallah@pidgin.im>
parents: 22330
diff changeset
995 g_free(col_types);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
996
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
997 /* Setup the treeview */
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
998 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model));
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
999 g_object_unref(G_OBJECT(model));
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1000 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1001 gtk_widget_set_size_request(treeview, 500, 400);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1002 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)),
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1003 GTK_SELECTION_SINGLE);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1004 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), TRUE);
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30812
diff changeset
1005 gtk_box_pack_start(GTK_BOX(vbox),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30812
diff changeset
1006 pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30812
diff changeset
1007 TRUE, TRUE, 0);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1008 gtk_widget_show(treeview);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1009
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1010 renderer = gtk_cell_renderer_pixbuf_new();
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1011 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1012 -1, "", renderer, "pixbuf", 0, NULL);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1013
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
1014 i = 1;
20980
1599801ecbae Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20791
diff changeset
1015 for (columniter = results->columns; columniter != NULL; columniter = columniter->next) {
1599801ecbae Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20791
diff changeset
1016 PurpleNotifySearchColumn *column = columniter->data;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1017 renderer = gtk_cell_renderer_text_new();
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1018
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1019 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1,
20980
1599801ecbae Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20791
diff changeset
1020 column->title, renderer, "text", i, NULL);
31696
67d180e0f68d Add API:
Andrew Victor <andrew.victor@mxit.com>
parents: 31565
diff changeset
1021
67d180e0f68d Add API:
Andrew Victor <andrew.victor@mxit.com>
parents: 31565
diff changeset
1022 if (!purple_notify_searchresult_column_is_visible(column))
67d180e0f68d Add API:
Andrew Victor <andrew.victor@mxit.com>
parents: 31565
diff changeset
1023 gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), i), FALSE);
67d180e0f68d Add API:
Andrew Victor <andrew.victor@mxit.com>
parents: 31565
diff changeset
1024
20355
dacdf6087e16 Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents: 20330
diff changeset
1025 i++;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1026 }
14286
9ff15ceacd34 [gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1027
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 24658
diff changeset
1028 for (l = results->buttons; l; l = l->next) {
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 24658
diff changeset
1029 PurpleNotifySearchButton *b = l->data;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1030 GtkWidget *button = NULL;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1031 switch (b->type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1032 case PURPLE_NOTIFY_BUTTON_LABELED:
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1033 if(b->label) {
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1034 button = gtk_button_new_with_label(b->label);
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1035 } else {
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19546
diff changeset
1036 purple_debug_warning("gtknotify", "Missing button label\n");
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1037 }
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1038 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1039 case PURPLE_NOTIFY_BUTTON_CONTINUE:
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1040 button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_GO_FORWARD, GTK_RESPONSE_NONE);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1041 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1042 case PURPLE_NOTIFY_BUTTON_ADD:
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1043 button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_ADD, GTK_RESPONSE_NONE);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1044 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1045 case PURPLE_NOTIFY_BUTTON_INFO:
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1046 button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_TOOLBAR_USER_INFO, GTK_RESPONSE_NONE);
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1047 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1048 case PURPLE_NOTIFY_BUTTON_IM:
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1049 button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, GTK_RESPONSE_NONE);
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1050 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1051 case PURPLE_NOTIFY_BUTTON_JOIN:
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1052 button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_CHAT, GTK_RESPONSE_NONE);
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1053 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1054 case PURPLE_NOTIFY_BUTTON_INVITE:
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1055 button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_INVITE, GTK_RESPONSE_NONE);
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1056 break;
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1057 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1058 purple_debug_warning("gtknotify", "Incorrect button type: %d\n", b->type);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1059 }
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1060 if (button != NULL) {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
1061 PidginNotifySearchResultsButtonData *bd;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1062
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
1063 bd = g_new0(PidginNotifySearchResultsButtonData, 1);
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1064 bd->button = b;
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1065 bd->data = data;
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1066
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1067 g_signal_connect(G_OBJECT(button), "clicked",
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1068 G_CALLBACK(searchresults_callback_wrapper_cb), bd);
14038
3b7740b778ad [gaim-migrate @ 16534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14037
diff changeset
1069 g_signal_connect_swapped(G_OBJECT(button), "destroy", G_CALLBACK(g_free), bd);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1070 }
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1071 }
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1072
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1073 /* Add the Close button */
19546
b7a8a86af65a Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents: 19431
diff changeset
1074 close_button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1075
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1076 g_signal_connect_swapped(G_OBJECT(close_button), "clicked",
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1077 G_CALLBACK(searchresults_close_cb), data);
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12600
diff changeset
1078
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1079 data->account = gc->account;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1080 data->model = model;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1081 data->treeview = treeview;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1082 data->window = window;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1083
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1084 /* Insert rows. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1085 pidgin_notify_searchresults_new_rows(gc, results, data);
11359
9630f62029f2 [gaim-migrate @ 13581]
Bartosz Oler <bartosz@pidgin.im>
parents: 11293
diff changeset
1086
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1087 /* Show the window */
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21213
diff changeset
1088 pidgin_auto_parent_window(window);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21213
diff changeset
1089
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1090 gtk_widget_show(window);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1091 return data;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1092 }
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1093
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1094 /** Xerox'ed from Finch! How the tables have turned!! ;) **/
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1095 /** User information. **/
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1096 static GHashTable *userinfo;
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1097
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1098 static char *
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1099 userinfo_hash(PurpleAccount *account, const char *who)
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1100 {
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1101 char key[256];
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1102 snprintf(key, sizeof(key), "%s - %s", purple_account_get_username(account), purple_normalize(account, who));
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1103 return g_utf8_strup(key, -1);
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1104 }
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1105
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1106 static void
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1107 remove_userinfo(GtkWidget *widget, gpointer key)
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1108 {
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1109 PidginUserInfo *pinfo = g_hash_table_lookup(userinfo, key);
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1110
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1111 while (pinfo->count--)
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1112 purple_notify_close(PURPLE_NOTIFY_USERINFO, widget);
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1113
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1114 g_hash_table_remove(userinfo, key);
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1115 }
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1116
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1117 static void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1118 pidgin_notify_userinfo(PurpleConnection *gc, const char *who,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1119 PurpleNotifyUserInfo *user_info)
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9791
diff changeset
1120 {
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1121 char *info;
11533
f58436975d44 [gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents: 11359
diff changeset
1122 void *ui_handle;
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1123 char *key = userinfo_hash(purple_connection_get_account(gc), who);
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1124 PidginUserInfo *pinfo = NULL;
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1125
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1126 if (!userinfo) {
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1127 userinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1128 }
11533
f58436975d44 [gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents: 11359
diff changeset
1129
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1130 info = purple_notify_user_info_get_text_with_newline(user_info, "<br />");
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1131 pinfo = g_hash_table_lookup(userinfo, key);
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1132 if (pinfo != NULL) {
32439
2c681e5daeeb Webkit Message views.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents: 27504
diff changeset
1133 GtkWidget *webview = g_object_get_data(G_OBJECT(pinfo->window), "webview-widget");
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1134 char *linked_text = purple_markup_linkify(info);
32513
9352b4c92d13 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32507
diff changeset
1135 gtk_webview_load_html_string_with_imgstore(GTK_WEBVIEW(webview), linked_text);
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1136 g_free(linked_text);
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1137 g_free(key);
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1138 ui_handle = pinfo->window;
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1139 pinfo->count++;
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1140 } else {
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1141 char *primary = g_strdup_printf(_("Info for %s"), who);
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1142 ui_handle = pidgin_notify_formatted(_("Buddy Information"), primary, NULL, info);
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1143 g_signal_handlers_disconnect_by_func(G_OBJECT(ui_handle), G_CALLBACK(formatted_close_cb), NULL);
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1144 g_signal_connect(G_OBJECT(ui_handle), "destroy", G_CALLBACK(remove_userinfo), key);
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1145 g_free(primary);
17728
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1146 pinfo = g_new0(PidginUserInfo, 1);
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1147 pinfo->window = ui_handle;
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1148 pinfo->count = 1;
323b1481c2bc sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17027
diff changeset
1149 g_hash_table_insert(userinfo, key, pinfo);
17027
cad1dc392f1a Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16752
diff changeset
1150 }
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 14865
diff changeset
1151 g_free(info);
11533
f58436975d44 [gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents: 11359
diff changeset
1152 return ui_handle;
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9791
diff changeset
1153 }
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9791
diff changeset
1154
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1155 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1156 pidgin_close_notify(PurpleNotifyType type, void *ui_handle)
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1157 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1158 if (type == PURPLE_NOTIFY_EMAIL || type == PURPLE_NOTIFY_EMAILS)
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1159 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
1160 PidginNotifyMailData *data = (PidginNotifyMailData *)ui_handle;
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
1161
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1162 if (data) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1163 g_free(data->url);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1164 g_free(data);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1165 }
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
1166 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1167 else if (type == PURPLE_NOTIFY_SEARCHRESULTS)
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1168 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15880
diff changeset
1169 PidginNotifySearchResultsData *data = (PidginNotifySearchResultsData *)ui_handle;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1170
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1171 gtk_widget_destroy(data->window);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1172 purple_notify_searchresults_free(data->results);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1173
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1174 g_free(data);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10297
diff changeset
1175 }
10750
455f5dc6e2f2 [gaim-migrate @ 12353]
Daniel Atallah <datallah@pidgin.im>
parents: 10732
diff changeset
1176 else if (ui_handle != NULL)
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
1177 gtk_widget_destroy(GTK_WIDGET(ui_handle));
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1178 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1179
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1180 #ifndef _WIN32
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1181 static gint
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1182 uri_command(const char *command, gboolean sync)
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1183 {
13520
f89ab3c41f4b [gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13415
diff changeset
1184 gchar *tmp;
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1185 GError *error = NULL;
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1186 gint ret = 0;
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1187
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1188 purple_debug_misc("gtknotify", "Executing %s\n", command);
8278
5fecd24d863c [gaim-migrate @ 9002]
Mark Doliner <markdoliner@pidgin.im>
parents: 8277
diff changeset
1189
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1190 if (!purple_program_is_valid(command))
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1191 {
13540
3c709ce41cfe [gaim-migrate @ 15916]
Richard Laager <rlaager@pidgin.im>
parents: 13520
diff changeset
1192 tmp = g_strdup_printf(_("The browser command \"%s\" is invalid."),
13520
f89ab3c41f4b [gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13415
diff changeset
1193 command ? command : "(none)");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1194 purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp);
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1195 g_free(tmp);
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1196
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1197 }
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1198 else if (sync)
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1199 {
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1200 gint status;
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1201
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1202 if (!g_spawn_command_line_sync(command, NULL, NULL, &status, &error))
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1203 {
13540
3c709ce41cfe [gaim-migrate @ 15916]
Richard Laager <rlaager@pidgin.im>
parents: 13520
diff changeset
1204 tmp = g_strdup_printf(_("Error launching \"%s\": %s"),
13520
f89ab3c41f4b [gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13415
diff changeset
1205 command, error->message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1206 purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp);
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1207 g_free(tmp);
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1208 g_error_free(error);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1209 }
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1210 else
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1211 ret = status;
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1212 }
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1213 else
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1214 {
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1215 if (!g_spawn_command_line_async(command, &error))
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1216 {
13540
3c709ce41cfe [gaim-migrate @ 15916]
Richard Laager <rlaager@pidgin.im>
parents: 13520
diff changeset
1217 tmp = g_strdup_printf(_("Error launching \"%s\": %s"),
13520
f89ab3c41f4b [gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13415
diff changeset
1218 command, error->message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1219 purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp);
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1220 g_free(tmp);
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1221 g_error_free(error);
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1222 }
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1223 }
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1224
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1225 return ret;
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1226 }
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1227 #endif /* _WIN32 */
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1228
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1229 static void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1230 pidgin_notify_uri(const char *uri)
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1231 {
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1232 #ifndef _WIN32
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1233 char *escaped = g_shell_quote(uri);
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1234 char *command = NULL;
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1235 char *remote_command = NULL;
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1236 const char *web_browser;
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1237 int place;
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1238
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1239 web_browser = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
1240 place = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/browsers/place");
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1241
10060
4256ee599d8c [gaim-migrate @ 11030]
Tim Ringenbach <marv@pidgin.im>
parents: 9800
diff changeset
1242 /* if they are running gnome, use the gnome web browser */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1243 if (purple_running_gnome() == TRUE)
10060
4256ee599d8c [gaim-migrate @ 11030]
Tim Ringenbach <marv@pidgin.im>
parents: 9800
diff changeset
1244 {
22330
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1245 char *tmp = g_find_program_in_path("xdg-open");
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1246 if (tmp == NULL)
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1247 command = g_strdup_printf("gnome-open %s", escaped);
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1248 else
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1249 command = g_strdup_printf("xdg-open %s", escaped);
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1250 g_free(tmp);
10061
2833056ea11c [gaim-migrate @ 11033]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10060
diff changeset
1251 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1252 else if (purple_running_osx() == TRUE)
14709
9b6f1cc24c6a [gaim-migrate @ 17393]
Evan Schoenberg <evands@pidgin.im>
parents: 14676
diff changeset
1253 {
9b6f1cc24c6a [gaim-migrate @ 17393]
Evan Schoenberg <evands@pidgin.im>
parents: 14676
diff changeset
1254 command = g_strdup_printf("open %s", escaped);
9b6f1cc24c6a [gaim-migrate @ 17393]
Evan Schoenberg <evands@pidgin.im>
parents: 14676
diff changeset
1255 }
10060
4256ee599d8c [gaim-migrate @ 11030]
Tim Ringenbach <marv@pidgin.im>
parents: 9800
diff changeset
1256 else if (!strcmp(web_browser, "epiphany") ||
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1257 !strcmp(web_browser, "galeon"))
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1258 {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1259 if (place == PIDGIN_BROWSER_NEW_WINDOW)
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1260 command = g_strdup_printf("%s -w %s", web_browser, escaped);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1261 else if (place == PIDGIN_BROWSER_NEW_TAB)
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1262 command = g_strdup_printf("%s -n %s", web_browser, escaped);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1263 else
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1264 command = g_strdup_printf("%s %s", web_browser, escaped);
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1265 }
22330
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1266 else if (!strcmp(web_browser, "xdg-open"))
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1267 {
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1268 command = g_strdup_printf("xdg-open %s", escaped);
c9ac9657f47a Use xdg-open instead of gnome-open, if possible. We might want to use
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22214
diff changeset
1269 }
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1270 else if (!strcmp(web_browser, "gnome-open"))
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1271 {
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1272 command = g_strdup_printf("gnome-open %s", escaped);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1273 }
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1274 else if (!strcmp(web_browser, "kfmclient"))
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1275 {
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1276 command = g_strdup_printf("kfmclient openURL %s", escaped);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1277 /*
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1278 * Does Konqueror have options to open in new tab
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1279 * and/or current window?
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1280 */
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1281 }
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1282 else if (!strcmp(web_browser, "mozilla") ||
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1283 !strcmp(web_browser, "mozilla-firebird") ||
14676
70f04fbec17b [gaim-migrate @ 17342]
Hendrik-Jan Heins <hjheins@gmail.com>
parents: 14636
diff changeset
1284 !strcmp(web_browser, "firefox") ||
70f04fbec17b [gaim-migrate @ 17342]
Hendrik-Jan Heins <hjheins@gmail.com>
parents: 14636
diff changeset
1285 !strcmp(web_browser, "seamonkey"))
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1286 {
9399
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1287 char *args = "";
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1288
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1289 command = g_strdup_printf("%s %s", web_browser, escaped);
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1290
9399
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1291 /*
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1292 * Firefox 0.9 and higher require a "-a firefox" option when
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1293 * using -remote commands. This breaks older versions of
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1294 * mozilla. So we include this other handly little string
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1295 * when calling firefox. If the API for remote calls changes
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1296 * any more in firefox then firefox should probably be split
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1297 * apart from mozilla-firebird and mozilla... but this is good
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1298 * for now.
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1299 */
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1300 if (!strcmp(web_browser, "firefox"))
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1301 args = "-a firefox";
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1302
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1303 if (place == PIDGIN_BROWSER_NEW_WINDOW)
9399
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1304 remote_command = g_strdup_printf("%s %s -remote "
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1305 "openURL(%s,new-window)",
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1306 web_browser, args, escaped);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1307 else if (place == PIDGIN_BROWSER_NEW_TAB)
9399
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1308 remote_command = g_strdup_printf("%s %s -remote "
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1309 "openURL(%s,new-tab)",
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1310 web_browser, args, escaped);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1311 else if (place == PIDGIN_BROWSER_CURRENT)
9399
aeb9f3ace003 [gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents: 9393
diff changeset
1312 remote_command = g_strdup_printf("%s %s -remote "
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1313 "openURL(%s)",
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1314 web_browser, args, escaped);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1315 }
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1316 else if (!strcmp(web_browser, "netscape"))
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1317 {
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1318 command = g_strdup_printf("netscape %s", escaped);
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1319
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1320 if (place == PIDGIN_BROWSER_NEW_WINDOW)
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1321 {
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1322 remote_command = g_strdup_printf("netscape -remote "
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1323 "openURL(%s,new-window)",
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1324 escaped);
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1325 }
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1326 else if (place == PIDGIN_BROWSER_CURRENT)
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1327 {
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1328 remote_command = g_strdup_printf("netscape -remote "
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1329 "openURL(%s)", escaped);
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1330 }
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1331 }
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1332 else if (!strcmp(web_browser, "opera"))
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1333 {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1334 if (place == PIDGIN_BROWSER_NEW_WINDOW)
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1335 command = g_strdup_printf("opera -newwindow %s", escaped);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1336 else if (place == PIDGIN_BROWSER_NEW_TAB)
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1337 command = g_strdup_printf("opera -newpage %s", escaped);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1338 else if (place == PIDGIN_BROWSER_CURRENT)
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1339 {
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1340 remote_command = g_strdup_printf("opera -remote "
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1341 "openURL(%s)", escaped);
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1342 command = g_strdup_printf("opera %s", escaped);
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1343 }
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1344 else
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1345 command = g_strdup_printf("opera %s", escaped);
9405
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1346
3413b3694435 [gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents: 9399
diff changeset
1347 }
30799
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1348 else if (!strcmp(web_browser, "google-chrome"))
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1349 {
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1350 /* Google Chrome doesn't have command-line arguments that control the
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1351 * opening of links from external calls. This is controlled solely from
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1352 * a preference within Google Chrome. */
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1353 command = g_strdup_printf("google-chrome %s", escaped);
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1354 }
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1355 else if (!strcmp(web_browser, "chrome"))
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1356 {
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1357 /* Chromium doesn't have command-line arguments that control the
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1358 * opening of links from external calls. This is controlled solely from
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1359 * a preference within Chromium. */
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1360 command = g_strdup_printf("chrome %s", escaped);
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1361 }
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1362 else if (!strcmp(web_browser, "chromium-browser"))
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1363 {
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1364 /* Chromium doesn't have command-line arguments that control the
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1365 * opening of links from external calls. This is controlled solely from
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1366 * a preference within Chromium. */
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1367 command = g_strdup_printf("chromium-browser %s", escaped);
02888122ed85 Add the new browsers here so they do useful stuff by default.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29503
diff changeset
1368 }
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1369 else if (!strcmp(web_browser, "custom"))
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1370 {
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1371 const char *web_command;
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1372
30812
77e8d4906cfe I thought I had done this in my last commit. Clearly I'm an idiot. This fixes
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30800
diff changeset
1373 web_command = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/manual_command");
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1374
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1375 if (web_command == NULL || *web_command == '\0')
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1376 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1377 purple_notify_error(NULL, NULL, _("Unable to open URL"),
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1378 _("The 'Manual' browser command has been "
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1379 "chosen, but no command has been set."));
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1380 return NULL;
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1381 }
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1382
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1383 if (strstr(web_command, "%s"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1384 command = purple_strreplace(web_command, "%s", escaped);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1385 else
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1386 {
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1387 /*
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1388 * There is no "%s" in the browser command. Assume the user
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1389 * wanted the URL tacked on to the end of the command.
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1390 */
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1391 command = g_strdup_printf("%s %s", web_command, escaped);
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1392 }
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1393 }
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1394
12477
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1395 g_free(escaped);
9328971aff14 [gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents: 12257
diff changeset
1396
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1397 if (remote_command != NULL)
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1398 {
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1399 /* try the remote command first */
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1400 if (uri_command(remote_command, TRUE) != 0)
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1401 uri_command(command, FALSE);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1402
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1403 g_free(remote_command);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1404
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1405 }
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1406 else
8272
c1e38e0ec1d5 [gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8267
diff changeset
1407 uri_command(command, FALSE);
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1408
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1409 g_free(command);
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1410
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1411 #else /* !_WIN32 */
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15570
diff changeset
1412 winpidgin_notify_uri(uri);
8338
15352ef157f9 [gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents: 8337
diff changeset
1413 #endif /* !_WIN32 */
7136
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1414
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1415 return NULL;
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1416 }
77f3c20bbed6 [gaim-migrate @ 7703]
Nathan Walp <nwalp@pidgin.im>
parents: 7078
diff changeset
1417
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1418 void
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1419 pidgin_notify_pounce_add(PurpleAccount *account, PurplePounce *pounce,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1420 const char *alias, const char *event, const char *message, const char *date)
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1421 {
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1422 GdkPixbuf *icon;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1423 GtkTreeIter iter;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1424 PidginNotifyPounceData *pounce_data;
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1425 gboolean first = (pounce_dialog == NULL);
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1426
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1427 if (pounce_dialog == NULL)
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1428 pounce_dialog = pidgin_create_notification_dialog(PIDGIN_NOTIFY_POUNCE);
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1429
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1430 icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1431
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1432 pounce_data = g_new(PidginNotifyPounceData, 1);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1433
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1434 pounce_data->account = account;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1435 pounce_data->pounce = pounce;
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
1436 pounce_data->pouncee = g_strdup(purple_pounce_get_pouncee(pounce));
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1437
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1438 gtk_tree_store_append(pounce_dialog->treemodel, &iter, NULL);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1439
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1440 gtk_tree_store_set(pounce_dialog->treemodel, &iter,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1441 PIDGIN_POUNCE_ICON, icon,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1442 PIDGIN_POUNCE_ALIAS, alias,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1443 PIDGIN_POUNCE_EVENT, event,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1444 PIDGIN_POUNCE_TEXT, (message != NULL)? message : _("No message"),
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1445 PIDGIN_POUNCE_DATE, date,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1446 PIDGIN_POUNCE_DATA, pounce_data,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1447 -1);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1448
28365
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1449 if (first) {
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1450 GtkTreeSelection *selection =
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1451 gtk_tree_view_get_selection(GTK_TREE_VIEW(pounce_dialog->treeview));
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1452 gtk_tree_selection_select_iter(selection, &iter);
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1453 }
edb57781bf9b pounce dialog: Try to always have a row selected. Fixes #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28364
diff changeset
1454
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1455 if (icon)
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1456 g_object_unref(icon);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1457
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1458 gtk_widget_show_all(pounce_dialog->dialog);
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1459
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1460 return;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1461 }
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1462
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1463 static PidginNotifyDialog *
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1464 pidgin_create_notification_dialog(PidginNotifyType type)
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1465 {
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1466 GtkTreeStore *model = NULL;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1467 GtkWidget *dialog = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1468 GtkWidget *label = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1469 GtkCellRenderer *rend;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1470 GtkTreeViewColumn *column;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1471 GtkWidget *button = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1472 GtkWidget *vbox = NULL;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1473 GtkTreeSelection *sel;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1474 PidginNotifyDialog *spec_dialog = NULL;
27487
3fe841d5a8e8 Remove trailing whitespace
Paul Aurich <darkrain42@pidgin.im>
parents: 27476
diff changeset
1475
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1476 g_return_val_if_fail(type < PIDGIN_NOTIFY_TYPES, NULL);
27487
3fe841d5a8e8 Remove trailing whitespace
Paul Aurich <darkrain42@pidgin.im>
parents: 27476
diff changeset
1477
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1478 if (type == PIDGIN_NOTIFY_MAIL) {
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1479 g_return_val_if_fail(mail_dialog == NULL, mail_dialog);
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1480
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1481 model = gtk_tree_store_new(COLUMNS_PIDGIN_MAIL,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1482 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1483
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1484 } else if (type == PIDGIN_NOTIFY_POUNCE) {
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1485 g_return_val_if_fail(pounce_dialog == NULL, pounce_dialog);
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1486
27504
4ca60e3ea919 Use mail_dialog consistently, instead of switching from one line to the next. Various other cleanups, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27492
diff changeset
1487 model = gtk_tree_store_new(COLUMNS_PIDGIN_POUNCE,
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1488 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1489 G_TYPE_STRING, G_TYPE_POINTER);
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1490 }
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1491
28364
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1492 dialog = gtk_dialog_new();
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1493
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1494 /* Setup the dialog */
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1495 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BOX_SPACE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1496 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BOX_SPACE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1497 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1498 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1499
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1500 /* Vertical box */
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1501 vbox = GTK_DIALOG(dialog)->vbox;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1502
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1503 /* Golden ratio it up! */
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1504 gtk_widget_set_size_request(dialog, 550, 400);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1505
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1506 spec_dialog = g_new0(PidginNotifyDialog, 1);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1507 spec_dialog->dialog = dialog;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1508
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1509 spec_dialog->treemodel = model;
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1510 spec_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model));
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1511 g_object_unref(G_OBJECT(model));
27487
3fe841d5a8e8 Remove trailing whitespace
Paul Aurich <darkrain42@pidgin.im>
parents: 27476
diff changeset
1512
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1513 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(spec_dialog->treeview), TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1514
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1515 if (type == PIDGIN_NOTIFY_MAIL) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1516 gtk_window_set_title(GTK_WINDOW(dialog), _("New Mail"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1517 gtk_window_set_role(GTK_WINDOW(dialog), "new_mail_detailed");
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1518 g_signal_connect(G_OBJECT(dialog), "focus-in-event",
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1519 G_CALLBACK(mail_window_focus_cb), NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1520
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1521 gtk_dialog_add_button(GTK_DIALOG(dialog),
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1522 _("Open All Messages"), GTK_RESPONSE_ACCEPT);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1523
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1524 button = gtk_dialog_add_button(GTK_DIALOG(dialog),
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1525 PIDGIN_STOCK_OPEN_MAIL, GTK_RESPONSE_YES);
27254
e1eec4dda0d2 Setting `dialog->open_button = button` when `button` is not yet assigned
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27063
diff changeset
1526 spec_dialog->open_button = button;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1527
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1528 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(spec_dialog->treeview), FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1529
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1530 gtk_tree_view_set_search_column(GTK_TREE_VIEW(spec_dialog->treeview), PIDGIN_MAIL_TEXT);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1531 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(spec_dialog->treeview),
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1532 pidgin_tree_view_search_equal_func, NULL, NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1533
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1534 g_signal_connect(G_OBJECT(dialog), "response",
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1535 G_CALLBACK(email_response_cb), spec_dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1536 g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(spec_dialog->treeview))),
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1537 "changed", G_CALLBACK(selection_changed_cb), spec_dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1538 g_signal_connect(G_OBJECT(spec_dialog->treeview), "row-activated", G_CALLBACK(email_row_activated_cb), NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1539
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1540 column = gtk_tree_view_column_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1541 gtk_tree_view_column_set_resizable(column, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1542 rend = gtk_cell_renderer_pixbuf_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1543 gtk_tree_view_column_pack_start(column, rend, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1544
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1545 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_MAIL_ICON, NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1546 rend = gtk_cell_renderer_text_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1547 gtk_tree_view_column_pack_start(column, rend, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1548 gtk_tree_view_column_set_attributes(column, rend, "markup", PIDGIN_MAIL_TEXT, NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1549 gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1550
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1551 label = gtk_label_new(NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1552 gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1553
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1554 } else if (type == PIDGIN_NOTIFY_POUNCE) {
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1555 gtk_window_set_title(GTK_WINDOW(dialog), _("New Pounces"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1556
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1557 button = gtk_dialog_add_button(GTK_DIALOG(dialog),
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
1558 _("IM"), GTK_RESPONSE_YES);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
1559 gtk_widget_set_sensitive(button, FALSE);
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
1560 spec_dialog->open_button = button;
28364
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1561
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1562 button = gtk_dialog_add_button(GTK_DIALOG(dialog),
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1563 PIDGIN_STOCK_MODIFY, GTK_RESPONSE_APPLY);
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1564 gtk_widget_set_sensitive(button, FALSE);
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1565 spec_dialog->edit_button = button;
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1566
31531
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1567 /* Translators: Make sure you translate "Dismiss" differently than
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1568 "close"! This string is used in the "You have pounced" dialog
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1569 that appears when one of your Buddy Pounces is triggered. In
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1570 this context "Dismiss" means "I acknowledge that I've seen that
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1571 this pounce was triggered--remove it from this list." Translating
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1572 it as "Remove" is acceptable if you can't think of a more precise
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1573 word. */
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1574 button = gtk_dialog_add_button(GTK_DIALOG(dialog), _("Dismiss"),
e595953836e3 Add a hint to translators on how to translate this string. Italian and
Mark Doliner <markdoliner@pidgin.im>
parents: 30812
diff changeset
1575 GTK_RESPONSE_NO);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1576 gtk_widget_set_sensitive(button, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1577 spec_dialog->dismiss_button = button;
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1578
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1579 g_signal_connect(G_OBJECT(dialog), "response",
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1580 G_CALLBACK(pounce_response_cb), spec_dialog);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1581
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1582 column = gtk_tree_view_column_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1583 gtk_tree_view_column_set_title(column, _("Buddy"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1584 gtk_tree_view_column_set_resizable(column, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1585 rend = gtk_cell_renderer_pixbuf_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1586 gtk_tree_view_column_pack_start(column, rend, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1587
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1588 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_POUNCE_ICON, NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1589 rend = gtk_cell_renderer_text_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1590 gtk_tree_view_column_pack_start(column, rend, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1591 gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_ALIAS);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1592 gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1593
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1594 column = gtk_tree_view_column_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1595 gtk_tree_view_column_set_title(column, _("Event"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1596 gtk_tree_view_column_set_resizable(column, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1597 rend = gtk_cell_renderer_text_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1598 gtk_tree_view_column_pack_start(column, rend, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1599 gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_EVENT);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1600 gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1601
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1602 column = gtk_tree_view_column_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1603 gtk_tree_view_column_set_title(column, _("Message"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1604 gtk_tree_view_column_set_resizable(column, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1605 rend = gtk_cell_renderer_text_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1606 gtk_tree_view_column_pack_start(column, rend, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1607 gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_TEXT);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1608 gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1609
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1610 column = gtk_tree_view_column_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1611 gtk_tree_view_column_set_title(column, _("Date"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1612 gtk_tree_view_column_set_resizable(column, TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1613 rend = gtk_cell_renderer_text_new();
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1614 gtk_tree_view_column_pack_start(column, rend, FALSE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1615 gtk_tree_view_column_add_attribute(column, rend, "text", PIDGIN_POUNCE_DATE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1616 gtk_tree_view_append_column(GTK_TREE_VIEW(spec_dialog->treeview), column);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1617
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1618 label = gtk_label_new(NULL);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1619 gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have pounced!</span>"));
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1620
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1621 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(spec_dialog->treeview));
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
1622 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1623 g_signal_connect(G_OBJECT(sel), "changed",
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1624 G_CALLBACK(pounce_row_selected_cb), NULL);
28338
ff80b2a9fc85 Add a row-activation event for the Pounces dialog to open a new conversation window.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 27504
diff changeset
1625 g_signal_connect(G_OBJECT(spec_dialog->treeview), "row-activated",
28355
d8aac6fa1cdc Further pounce dialog improvements. Refs #10037.
Paul Aurich <darkrain42@pidgin.im>
parents: 28343
diff changeset
1626 G_CALLBACK(pounce_response_open_ims), NULL);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1627 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1628
28364
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1629 button = gtk_dialog_add_button(GTK_DIALOG(dialog),
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1630 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
ef0c1c5cbad8 Reorder the New Pounces/New Mail dialog buttons.
Paul Aurich <darkrain42@pidgin.im>
parents: 28355
diff changeset
1631
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1632 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1633 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1634 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
32513
9352b4c92d13 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32507
diff changeset
1635 gtk_box_pack_start(GTK_BOX(vbox),
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30812
diff changeset
1636 pidgin_make_scrollable(spec_dialog->treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30812
diff changeset
1637 TRUE, TRUE, 2);
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1638
27488
5de4bfb850c5 Remove a few layers of evil abstraction.
Paul Aurich <darkrain42@pidgin.im>
parents: 27487
diff changeset
1639 return spec_dialog;
26467
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1640 }
ca1524dbcbf0 A patch from Jorge Villaseñor which makes all pounces share a single window.
Kevin Stange <kstange@pidgin.im>
parents: 24816
diff changeset
1641
27476
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1642 static void
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1643 signed_off_cb(PurpleConnection *gc, gpointer unused)
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1644 {
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1645 /* Clear any pending emails for this account */
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1646 pidgin_notify_emails(gc, 0, FALSE, NULL, NULL, NULL, NULL);
27490
6076e2aee8c9 Close the mail dialog at signoff if it's empty. Closes #9345.
Paul Aurich <darkrain42@pidgin.im>
parents: 27489
diff changeset
1647
27492
6c98764968bb Fix the mail_dialog->total_count and use that to tell when the dialog is empty.
Paul Aurich <darkrain42@pidgin.im>
parents: 27490
diff changeset
1648 if (mail_dialog != NULL && mail_dialog->total_count == 0)
27490
6076e2aee8c9 Close the mail dialog at signoff if it's empty. Closes #9345.
Paul Aurich <darkrain42@pidgin.im>
parents: 27489
diff changeset
1649 reset_mail_dialog(NULL);
27476
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1650 }
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1651
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1652 static void*
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1653 pidgin_notify_get_handle(void)
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1654 {
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1655 static int handle;
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1656 return &handle;
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1657 }
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1658
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1659 void pidgin_notify_init(void)
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1660 {
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1661 void *handle = pidgin_notify_get_handle();
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1662
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1663 purple_signal_connect(purple_connections_get_handle(), "signed-off",
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1664 handle, PURPLE_CALLBACK(signed_off_cb), NULL);
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1665 }
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1666
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1667 void pidgin_notify_uninit(void)
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1668 {
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1669 purple_signals_disconnect_by_handle(pidgin_notify_get_handle());
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1670 }
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27470
diff changeset
1671
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1672 static PurpleNotifyUiOps ops =
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1673 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1674 pidgin_notify_message,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1675 pidgin_notify_email,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1676 pidgin_notify_emails,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1677 pidgin_notify_formatted,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1678 pidgin_notify_searchresults,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1679 pidgin_notify_searchresults_new_rows,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1680 pidgin_notify_userinfo,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1681 pidgin_notify_uri,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16259
diff changeset
1682 pidgin_close_notify,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16259
diff changeset
1683 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16259
diff changeset
1684 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16259
diff changeset
1685 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16259
diff changeset
1686 NULL
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687 };
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1688
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1689 PurpleNotifyUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
1690 pidgin_notify_get_ui_ops(void)
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1691 {
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692 return &ops;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1693 }

mercurial