src/prpl.c

Tue, 04 Feb 2003 06:57:35 +0000

author
Christian Hammond <chipx86@chipx86.com>
date
Tue, 04 Feb 2003 06:57:35 +0000
changeset 4514
40e3588a280f
parent 4491
715515ab95da
child 4557
40c90b1671cf
permissions
-rw-r--r--

[gaim-migrate @ 4792]
Of course, file transfer wasn't really gone..

I'm trying my hardest to bring on the end of the world (see the roadmap at
http://gaim.sf.net/roadmap.png). File transfer is being rewritten. This
isn't the finished implementation, but it's enough to let us get the prpls
working.

There is now a file transfer dialog, which will appear when you get a new
transfer request or when you go to Tools -> File Transfers.

This is of course core/UI split. I'll also be working on documentation on
how to write FT support in a prpl. Oh, and I'll get resumes and transfer
batches done when school isn't breathing down my back.

Only DCC receive in IRC currently works. Sorry. We'll get the other prpls
working soon, as well as send.

981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * gaim
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 *
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * (at your option) any later version.
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 *
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * GNU General Public License for more details.
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 *
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 *
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 */
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21
2417
7751d1269b09 [gaim-migrate @ 2430]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2403
diff changeset
22 #include "gaim.h"
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 #include "prpl.h"
2050
4e44376b2c6f [gaim-migrate @ 2060]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2007
diff changeset
24 #include <sys/types.h>
4e44376b2c6f [gaim-migrate @ 2060]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2007
diff changeset
25 #include <sys/stat.h>
4e44376b2c6f [gaim-migrate @ 2060]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2007
diff changeset
26 #include <unistd.h>
4235
216938806583 [gaim-migrate @ 4481]
Nathan Walp <nwalp@pidgin.im>
parents: 4162
diff changeset
27 #include <string.h>
1000
66436e94d53f [gaim-migrate @ 1010]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 981
diff changeset
28
3738
1dea426a205b [gaim-migrate @ 3876]
Rob Flynn <gaim@robflynn.com>
parents: 3733
diff changeset
29 #ifdef _WIN32
1dea426a205b [gaim-migrate @ 3876]
Rob Flynn <gaim@robflynn.com>
parents: 3733
diff changeset
30 #include "win32dep.h"
1dea426a205b [gaim-migrate @ 3876]
Rob Flynn <gaim@robflynn.com>
parents: 3733
diff changeset
31 #endif
1dea426a205b [gaim-migrate @ 3876]
Rob Flynn <gaim@robflynn.com>
parents: 3733
diff changeset
32
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
33 #include "pixmaps/ok.xpm"
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
34 #include "pixmaps/cancel.xpm"
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
35 #include "pixmaps/tb_forward.xpm"
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
36
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 GSList *protocols = NULL;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
39 GtkWidget *protomenu = NULL;
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
40 int prpl_accounts[PROTO_UNTAKEN];
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
41
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
42 struct _prompt {
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
43 GtkWidget *window;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
44 GtkWidget *entry;
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
45 void (*doit)(void *, const char *);
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
46 void (*dont)(void *);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
47 void *data;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
48 };
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
49
981
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 struct prpl *find_prpl(int prot)
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 {
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 GSList *e = protocols;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53 struct prpl *r;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 while (e) {
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 r = (struct prpl *)e->data;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 if (r->protocol == prot)
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 return r;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 e = e->next;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 }
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 return NULL;
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 }
00723c9a507c [gaim-migrate @ 991]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
65 gint proto_compare(struct prpl *a, struct prpl *b)
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1210
diff changeset
66 {
1043
45ec860a254c [gaim-migrate @ 1053]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1040
diff changeset
67 /* neg if a before b, 0 if equal, pos if a after b */
45ec860a254c [gaim-migrate @ 1053]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1040
diff changeset
68 return a->protocol - b->protocol;
45ec860a254c [gaim-migrate @ 1053]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1040
diff changeset
69 }
45ec860a254c [gaim-migrate @ 1053]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1040
diff changeset
70
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
71 #ifdef GAIM_PLUGINS
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
72 gboolean load_prpl(struct prpl *p)
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
73 {
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
74 char *(*gaim_prpl_init)(struct prpl *);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
75 debug_printf("Loading protocol %d\n", p->protocol);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
76
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
77 if (!p->plug)
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
78 return TRUE;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
79
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
80 p->plug->handle = g_module_open(p->plug->path, 0);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
81 if (!p->plug->handle) {
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
82 debug_printf("%s is unloadable: %s\n", p->plug->path, g_module_error());
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
83 return TRUE;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
84 }
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
85
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
86 if (!g_module_symbol(p->plug->handle, "gaim_prpl_init", (gpointer *)&gaim_prpl_init)) {
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
87 return TRUE;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
88 }
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
89
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
90 gaim_prpl_init(p);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
91 return FALSE;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
92 }
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
93 #endif
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
94
3577
b550bd28c2f1 [gaim-migrate @ 3679]
Sean Egan <seanegan@pidgin.im>
parents: 3572
diff changeset
95 /* This is used only by static protocols */
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
96 void load_protocol(proto_init pi)
1000
66436e94d53f [gaim-migrate @ 1010]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 981
diff changeset
97 {
3577
b550bd28c2f1 [gaim-migrate @ 3679]
Sean Egan <seanegan@pidgin.im>
parents: 3572
diff changeset
98 struct prpl *p = g_new0(struct prpl, 1);
3390
094dc74ff073 [gaim-migrate @ 3409]
Christian Hammond <chipx86@chipx86.com>
parents: 3382
diff changeset
99
3382
79dd97ad854e [gaim-migrate @ 3401]
Sean Egan <seanegan@pidgin.im>
parents: 3281
diff changeset
100 if (p->protocol == PROTO_ICQ)
3577
b550bd28c2f1 [gaim-migrate @ 3679]
Sean Egan <seanegan@pidgin.im>
parents: 3572
diff changeset
101 do_error_dialog(_("ICQ Protocol detected."),
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3390
diff changeset
102 _("Gaim has loaded the ICQ plugin. This plugin has been deprecated. "
3382
79dd97ad854e [gaim-migrate @ 3401]
Sean Egan <seanegan@pidgin.im>
parents: 3281
diff changeset
103 "As such, it was probably not compiled from the same version of the "
79dd97ad854e [gaim-migrate @ 3401]
Sean Egan <seanegan@pidgin.im>
parents: 3281
diff changeset
104 "source as this application was, and cannot be guaranteed to work. "
4053
991a4b143a93 [gaim-migrate @ 4263]
Matthew Smith <matthew@smigs.co.uk>
parents: 4044
diff changeset
105 "It is recommended that you use the AIM/ICQ protocol to connect to ICQ"),
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3390
diff changeset
106 GAIM_WARNING);
3577
b550bd28c2f1 [gaim-migrate @ 3679]
Sean Egan <seanegan@pidgin.im>
parents: 3572
diff changeset
107 pi(p);
1047
783f8520d9a0 [gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1043
diff changeset
108 protocols = g_slist_insert_sorted(protocols, p, (GCompareFunc)proto_compare);
2204
86b6aedfc586 [gaim-migrate @ 2214]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2191
diff changeset
109 regenerate_user_list();
1047
783f8520d9a0 [gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1043
diff changeset
110 }
783f8520d9a0 [gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1043
diff changeset
111
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1210
diff changeset
112 void unload_protocol(struct prpl *p)
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1210
diff changeset
113 {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
114 GList *c;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
115 struct proto_user_opt *puo;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
116 if (p->name)
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
117 g_free(p->name);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
118 c = p->user_opts;
1047
783f8520d9a0 [gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1043
diff changeset
119 while (c) {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
120 puo = c->data;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
121 g_free(puo->label);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
122 g_free(puo->def);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
123 g_free(puo);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
124 c = c->next;
1040
203e43816115 [gaim-migrate @ 1050]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1000
diff changeset
125 }
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
126 g_list_free(p->user_opts);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
127 p->user_opts = NULL;
1000
66436e94d53f [gaim-migrate @ 1010]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 981
diff changeset
128 }
66436e94d53f [gaim-migrate @ 1010]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 981
diff changeset
129
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2050
diff changeset
130 STATIC_PROTO_INIT
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
131
1252
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1210
diff changeset
132 static void des_win(GtkWidget *a, GtkWidget *b)
94fbface2d84 [gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1210
diff changeset
133 {
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
134 gtk_widget_destroy(b);
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
135 }
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
136
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
137 static GSList *do_ask_dialogs = NULL;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
138
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
139 struct doaskstruct {
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
140 GtkWidget *dialog;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
141 GModule *handle;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
142 void (*yesfunc)(gpointer);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
143 void (*nofunc)(gpointer);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
144 gpointer data;
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
145 };
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
146
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
147 void do_ask_cancel_by_handle(GModule *handle)
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
148 {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
149 GSList *d = do_ask_dialogs;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
150
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
151 debug_printf("%d dialogs to search\n", g_slist_length(d));
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
152
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
153 while (d) {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
154 struct doaskstruct *doask = d->data;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
155
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
156 d = d->next;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
157
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
158 if (doask->handle == handle) {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
159 debug_printf("removing dialog, %d remain\n", g_slist_length(d));
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
160 gtk_dialog_response(GTK_DIALOG(doask->dialog), GTK_RESPONSE_NONE);
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
161 }
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
162 }
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
163 }
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
164
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
165 static void do_ask_callback(GtkDialog *d, gint resp, struct doaskstruct *doask)
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
166 {
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
167 switch (resp)
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
168 {
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
169 case GTK_RESPONSE_YES:
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
170 if (doask->yesfunc)
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
171 doask->yesfunc(doask->data);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
172 break;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
173 default:
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
174 if (doask->nofunc)
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
175 doask->nofunc(doask->data);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
176 break;
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
177 }
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
178 do_ask_dialogs = g_slist_remove(do_ask_dialogs, doask);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
179 g_free(doask);
3738
1dea426a205b [gaim-migrate @ 3876]
Rob Flynn <gaim@robflynn.com>
parents: 3733
diff changeset
180 gtk_widget_destroy(GTK_WIDGET(d));
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
181 }
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
182
3753
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
183 #define STOCK_ITEMIZE(r, l) if (!strcmp(r,yestext)) \
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
184 yestext = l; \
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
185 if (!strcmp(r,notext)) \
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
186 notext = l;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
187
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
188 void do_ask_dialog(const char *prim, const char *sec, void *data, char *yestext, void *doit, char *notext, void *dont, GModule *handle, gboolean modal)
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
189 {
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
190 GtkWidget *window;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
191 GtkWidget *hbox;
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
192 GtkWidget *label;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
193 char labeltext[1024 * 2];
3732
b54cc9c7b1f8 [gaim-migrate @ 3870]
Sean Egan <seanegan@pidgin.im>
parents: 3730
diff changeset
194 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_question.png", NULL);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
195 GtkWidget *img = gtk_image_new_from_file(filename);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
196 struct doaskstruct *doask = g_new0(struct doaskstruct, 1);
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
197
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
198 g_free(filename);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
199 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
200
3753
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
201 /* This is ugly. GTK Stock items will take a button with a label "gtk-cancel" and turn it into a
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
202 * Cancel button with a Cancel icon and whatnot. We want to avoid using anything gtk in the prpls
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
203 * so we replace "Cancel" with "gtk-cancel" right here. */
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
204 STOCK_ITEMIZE("Add", GTK_STOCK_ADD);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
205 STOCK_ITEMIZE("Apply", GTK_STOCK_APPLY);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
206 STOCK_ITEMIZE("Cancel", GTK_STOCK_CANCEL);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
207 STOCK_ITEMIZE("Close", GTK_STOCK_CLOSE);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
208 STOCK_ITEMIZE("Delete", GTK_STOCK_DELETE);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
209 STOCK_ITEMIZE("Remove", GTK_STOCK_REMOVE);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
210 STOCK_ITEMIZE("Yes", GTK_STOCK_YES);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
211 STOCK_ITEMIZE("No", GTK_STOCK_NO);
e7aa1447d839 [gaim-migrate @ 3892]
Sean Egan <seanegan@pidgin.im>
parents: 3738
diff changeset
212
4245
6a4b22d05cc2 [gaim-migrate @ 4495]
Rob Flynn <gaim@robflynn.com>
parents: 4235
diff changeset
213 window = gtk_dialog_new_with_buttons("", NULL, 0, notext, GTK_RESPONSE_NO, yestext, GTK_RESPONSE_YES, NULL);
6a4b22d05cc2 [gaim-migrate @ 4495]
Rob Flynn <gaim@robflynn.com>
parents: 4235
diff changeset
214
6a4b22d05cc2 [gaim-migrate @ 4495]
Rob Flynn <gaim@robflynn.com>
parents: 4235
diff changeset
215 if (modal) {
6a4b22d05cc2 [gaim-migrate @ 4495]
Rob Flynn <gaim@robflynn.com>
parents: 4235
diff changeset
216 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
6a4b22d05cc2 [gaim-migrate @ 4495]
Rob Flynn <gaim@robflynn.com>
parents: 4235
diff changeset
217 }
6a4b22d05cc2 [gaim-migrate @ 4495]
Rob Flynn <gaim@robflynn.com>
parents: 4235
diff changeset
218
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
219 gtk_dialog_set_default_response (GTK_DIALOG(window), GTK_RESPONSE_YES);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
220 g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_ask_callback), doask);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
221
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
222 gtk_container_set_border_width (GTK_CONTAINER(window), 6);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
223 gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
224 gtk_dialog_set_has_separator(GTK_DIALOG(window), FALSE);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
225 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(window)->vbox), 12);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
226 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(window)->vbox), 6);
1210
083b7bf35280 [gaim-migrate @ 1220]
Rob Flynn <gaim@robflynn.com>
parents: 1064
diff changeset
227
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
228 hbox = gtk_hbox_new(FALSE, 12);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
229 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), hbox);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
230 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
231
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
232 g_snprintf(labeltext, sizeof(labeltext), "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", prim, sec ? sec : "");
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
233 label = gtk_label_new(NULL);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
234 gtk_label_set_markup(GTK_LABEL(label), labeltext);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
235 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
236 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
237 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
238
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
239 doask->dialog = window;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
240 doask->handle = handle;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
241 doask->yesfunc = doit;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
242 doask->nofunc = dont;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
243 doask->data = data;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
244 do_ask_dialogs = g_slist_append(do_ask_dialogs, doask);
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
245
1210
083b7bf35280 [gaim-migrate @ 1220]
Rob Flynn <gaim@robflynn.com>
parents: 1064
diff changeset
246 gtk_widget_show_all(window);
1064
855f43690297 [gaim-migrate @ 1074]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
247 }
1333
bbd54f86976f [gaim-migrate @ 1343]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1252
diff changeset
248
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
249 static void des_prompt(GtkWidget *w, struct _prompt *p)
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
250 {
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
251 if (p->dont)
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
252 (p->dont)(p->data);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
253 gtk_widget_destroy(p->window);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
254 g_free(p);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
255 }
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
256
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
257 static void act_prompt(GtkWidget *w, struct _prompt *p)
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
258 {
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
259 if (p->doit)
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
260 (p->doit)(p->data, gtk_entry_get_text(GTK_ENTRY(p->entry)));
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
261 gtk_widget_destroy(p->window);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
262 }
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
263
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
264 void do_prompt_dialog(const char *text, const char *def, void *data, void *doit, void *dont)
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
265 {
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
266 GtkWidget *window;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
267 GtkWidget *vbox;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
268 GtkWidget *hbox;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
269 GtkWidget *label;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
270 GtkWidget *entry;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
271 GtkWidget *button;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
272 struct _prompt *p;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
273
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
274 p = g_new0(struct _prompt, 1);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
275 p->data = data;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
276 p->doit = doit;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
277 p->dont = dont;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
278
2725
a844d0964552 [gaim-migrate @ 2738]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2718
diff changeset
279 GAIM_DIALOG(window);
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
280 p->window = window;
4074
c69100a0ede9 [gaim-migrate @ 4289]
Robert McQueen <robot101@debian.org>
parents: 4053
diff changeset
281 gtk_window_set_role(GTK_WINDOW(window), "prompt");
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
282 gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
283 gtk_window_set_title(GTK_WINDOW(window), _("Gaim - Prompt"));
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
284 g_signal_connect(GTK_OBJECT(window), "destroy", G_CALLBACK(des_prompt), p);
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
285 gtk_widget_realize(window);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
286
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
287 vbox = gtk_vbox_new(FALSE, 5);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
288 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
289 gtk_container_add(GTK_CONTAINER(window), vbox);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
290
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
291 hbox = gtk_hbox_new(FALSE, 5);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
292 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
293
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
294 label = gtk_label_new(text);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
295 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
296
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
297 entry = gtk_entry_new();
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
298 gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
299 if (def)
2543
530d8d75d5eb [gaim-migrate @ 2556]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2541
diff changeset
300 gtk_entry_set_text(GTK_ENTRY(entry), def);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
301 g_signal_connect(GTK_OBJECT(entry), "activate", G_CALLBACK(act_prompt), p);
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
302 p->entry = entry;
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
303
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
304 hbox = gtk_hbox_new(FALSE, 5);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
305 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
306
4092
8788dcce1d81 [gaim-migrate @ 4307]
Etan Reisner <deryni@pidgin.im>
parents: 4074
diff changeset
307 button = picture_button(window, _("Accept"), ok_xpm);
8788dcce1d81 [gaim-migrate @ 4307]
Etan Reisner <deryni@pidgin.im>
parents: 4074
diff changeset
308 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
309 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(act_prompt), p);
4092
8788dcce1d81 [gaim-migrate @ 4307]
Etan Reisner <deryni@pidgin.im>
parents: 4074
diff changeset
310
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
311 button = picture_button(window, _("Cancel"), cancel_xpm);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
312 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
313 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(des_win), window);
1500
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
314
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
315 gtk_widget_show_all(window);
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
316 }
f8a21f4aa105 [gaim-migrate @ 1510]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1499
diff changeset
317
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
318 static void proto_act(GtkObject *obj, struct proto_actions_menu *pam)
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
319 {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
320 if (pam->callback && pam->gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
321 pam->callback(pam->gc);
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
322 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
323
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
324 void do_proto_menu()
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
325 {
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
326 GtkWidget *menuitem;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
327 GtkWidget *submenu;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
328 GList *l;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
329 GSList *c = connections;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
330 struct proto_actions_menu *pam;
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
331 struct gaim_connection *gc = NULL;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
332 int count = 0;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
333 char buf[256];
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
334
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
335 if (!protomenu)
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
336 return;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
337
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
338 l = gtk_container_children(GTK_CONTAINER(protomenu));
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
339 while (l) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
340 menuitem = l->data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
341 pam = gtk_object_get_data(GTK_OBJECT(menuitem), "user_data");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
342 if (pam)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
343 g_free(pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
344 gtk_container_remove(GTK_CONTAINER(protomenu), GTK_WIDGET(menuitem));
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
345 l = l->next;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
346 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
347
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
348 while (c) {
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
349 gc = c->data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
350 if (gc->prpl->actions && gc->login_time)
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
351 count++;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
352 c = g_slist_next(c);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
353 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
354 c = connections;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
355
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
356 if (!count) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
357 g_snprintf(buf, sizeof(buf), _("No actions available"));
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
358 menuitem = gtk_menu_item_new_with_label(buf);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
359 gtk_menu_append(GTK_MENU(protomenu), menuitem);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
360 gtk_widget_show(menuitem);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
361 return;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
362 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
363
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
364 if (count == 1) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
365 GList *act;
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
366 while (c) {
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
367 gc = c->data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
368 if (gc->prpl->actions && gc->login_time)
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
369 break;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
370 c = g_slist_next(c);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
371 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
372
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
373 act = gc->prpl->actions(gc);
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
374
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
375 while (act) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
376 if (act->data) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
377 struct proto_actions_menu *pam = act->data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
378 menuitem = gtk_menu_item_new_with_label(pam->label);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
379 gtk_menu_append(GTK_MENU(protomenu), menuitem);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
380 g_signal_connect(GTK_OBJECT(menuitem), "activate",
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
381 G_CALLBACK(proto_act), pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
382 gtk_object_set_data(GTK_OBJECT(menuitem), "user_data", pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
383 gtk_widget_show(menuitem);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
384 } else {
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
385 gaim_separator(protomenu);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
386 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
387 act = g_list_next(act);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
388 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
389 } else {
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
390 while (c) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
391 GList *act;
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
392 gc = c->data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
393 if (!gc->prpl->actions || !gc->login_time) {
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
394 c = g_slist_next(c);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
395 continue;
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
396 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
397
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
398 g_snprintf(buf, sizeof(buf), "%s (%s)", gc->username, gc->prpl->name);
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
399 menuitem = gtk_menu_item_new_with_label(buf);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
400 gtk_menu_append(GTK_MENU(protomenu), menuitem);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
401 gtk_widget_show(menuitem);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
402
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
403 submenu = gtk_menu_new();
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
404 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
405 gtk_widget_show(submenu);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
406
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
407 act = gc->prpl->actions(gc);
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
408
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
409 while (act) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
410 if (act->data) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
411 struct proto_actions_menu *pam = act->data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
412 menuitem = gtk_menu_item_new_with_label(pam->label);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
413 gtk_menu_append(GTK_MENU(submenu), menuitem);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
414 g_signal_connect(GTK_OBJECT(menuitem), "activate",
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
415 G_CALLBACK(proto_act), pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
416 gtk_object_set_data(GTK_OBJECT(menuitem), "user_data", pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
417 gtk_widget_show(menuitem);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
418 } else {
1536
b7f4756b2b31 [gaim-migrate @ 1546]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1530
diff changeset
419 gaim_separator(submenu);
1499
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
420 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
421 act = g_list_next(act);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
422 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
423 c = g_slist_next(c);
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
424 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
425 }
0c3286729687 [gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1470
diff changeset
426 }
2050
4e44376b2c6f [gaim-migrate @ 2060]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2007
diff changeset
427
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
428 struct mail_notify {
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
429 struct gaim_connection *gc;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
430 GtkWidget *email_win;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
431 GtkWidget *email_label;
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
432 char *url;
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
433 };
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
434 GSList *mailnots = NULL;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
435
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
436 static struct mail_notify *find_mail_notify(struct gaim_connection *gc)
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2355
diff changeset
437 {
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
438 GSList *m = mailnots;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
439 while (m) {
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
440 if (((struct mail_notify *)m->data)->gc == gc)
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
441 return m->data;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
442 m = m->next;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
443 }
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
444 return NULL;
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
445 }
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
446
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
447 static void des_email_win(GtkWidget *w, struct mail_notify *mn)
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
448 {
2428
25fc293837e2 [gaim-migrate @ 2441]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2417
diff changeset
449 if (w != mn->email_win) {
25fc293837e2 [gaim-migrate @ 2441]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2417
diff changeset
450 gtk_widget_destroy(mn->email_win);
25fc293837e2 [gaim-migrate @ 2441]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2417
diff changeset
451 return;
25fc293837e2 [gaim-migrate @ 2441]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2417
diff changeset
452 }
25fc293837e2 [gaim-migrate @ 2441]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2417
diff changeset
453 debug_printf("removing mail notification\n");
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
454 mailnots = g_slist_remove(mailnots, mn);
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
455 if (mn->url)
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
456 g_free(mn->url);
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
457 g_free(mn);
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
458 }
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
459
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
460 void connection_has_mail(struct gaim_connection *gc, int count, const char *from, const char *subject, const char *url)
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
461 {
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
462 GtkWidget *hbox;
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
463 GtkWidget *vbox;
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
464 GtkWidget *urlbut;
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
465 GtkWidget *close;
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
466
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
467 struct mail_notify *mn;
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
468 char buf[2048];
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
469
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4359
diff changeset
470 if (!(gc->account->options & OPT_ACCT_MAIL_CHECK))
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
471 return;
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
472
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
473 if (!(mn = find_mail_notify(gc))) {
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
474 mn = g_new0(struct mail_notify, 1);
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
475 mn->gc = gc;
2403
9c758f41db97 [gaim-migrate @ 2416]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2401
diff changeset
476 mailnots = g_slist_append(mailnots, mn);
2401
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
477 }
847817c7b7b5 [gaim-migrate @ 2414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
478
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3577
diff changeset
479 if (count < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3577
diff changeset
480 if (from && subject)
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4249
diff changeset
481 g_snprintf(buf, sizeof buf, _("%s has mail from %s: %s"), gc->username, from, *subject ? subject : _("No Subject"));
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3577
diff changeset
482 else
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4249
diff changeset
483 g_snprintf(buf, sizeof buf, _("%s has new mail."), gc->username);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3577
diff changeset
484 } else if (count > 0) {
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4249
diff changeset
485 g_snprintf(buf, sizeof buf,
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4249
diff changeset
486 ngettext("%s has %d new message.","%s has %d new messages.",count), gc->username, count);
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
487 } else if (mn->email_win) {
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
488 gtk_widget_destroy(mn->email_win);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
489 return;
2606
74c9b856c7e6 [gaim-migrate @ 2619]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2585
diff changeset
490 } else
74c9b856c7e6 [gaim-migrate @ 2619]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2585
diff changeset
491 return;
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
492
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
493 if (mn->email_win) {
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
494 gtk_label_set_text(GTK_LABEL(mn->email_label), buf);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
495 return;
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
496 }
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
497
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
498
2725
a844d0964552 [gaim-migrate @ 2738]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2718
diff changeset
499 GAIM_DIALOG(mn->email_win);
4074
c69100a0ede9 [gaim-migrate @ 4289]
Robert McQueen <robot101@debian.org>
parents: 4053
diff changeset
500 gtk_window_set_role(GTK_WINDOW(mn->email_win), "mail");
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
501 gtk_window_set_policy(GTK_WINDOW(mn->email_win), FALSE, TRUE, TRUE);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
502 gtk_window_set_title(GTK_WINDOW(mn->email_win), _("Gaim - New Mail"));
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
503 g_signal_connect(GTK_OBJECT(mn->email_win), "destroy", G_CALLBACK(des_email_win), mn);
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
504 gtk_widget_realize(mn->email_win);
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
505
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
506 vbox = gtk_vbox_new(FALSE, 5);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
507 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
508 gtk_container_add(GTK_CONTAINER(mn->email_win), vbox);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
509 gtk_widget_show(vbox);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
510
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
511 mn->email_label = gtk_label_new(buf);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
512 gtk_label_set_text(GTK_LABEL(mn->email_label), buf);
3493
22733759ba51 [gaim-migrate @ 3553]
Luke Schierer <lschiere@pidgin.im>
parents: 3474
diff changeset
513 gtk_label_set_line_wrap(GTK_LABEL(mn->email_label), TRUE);
22733759ba51 [gaim-migrate @ 3553]
Luke Schierer <lschiere@pidgin.im>
parents: 3474
diff changeset
514 gtk_box_pack_start(GTK_BOX(vbox), mn->email_label, FALSE, TRUE, 5);
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
515 gtk_widget_show(mn->email_label);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
516
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
517 hbox = gtk_hbox_new(FALSE, 5);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
518 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
519 gtk_widget_show(hbox);
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
520
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
521 close = picture_button(mn->email_win, _("Close"), cancel_xpm);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
522 gtk_window_set_focus(GTK_WINDOW(mn->email_win), close);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
523 gtk_box_pack_end(GTK_BOX(hbox), close, 0, 0, 5);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
524 g_signal_connect(GTK_OBJECT(close), "clicked", G_CALLBACK(des_email_win), mn);
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
525
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
526 if (url) {
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
527 mn->url = g_strdup(url);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
528 urlbut = picture_button(mn->email_win, _("Open Mail"), tb_forward_xpm);
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
529 gtk_box_pack_end(GTK_BOX(hbox), urlbut, 0, 0, 5);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
530 g_signal_connect(GTK_OBJECT(urlbut), "clicked", G_CALLBACK(open_url), mn->url);
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
531 g_signal_connect(GTK_OBJECT(urlbut), "clicked", G_CALLBACK(des_email_win), mn);
2541
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
532 }
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
533
0afd3aaba327 [gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2428
diff changeset
534 gtk_widget_show(mn->email_win);
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2151
diff changeset
535 }
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
536
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
537 struct icon_data {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
538 struct gaim_connection *gc;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
539 char *who;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
540 void *data;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
541 int len;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
542 };
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
543
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
544 static GList *icons = NULL;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
545
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
546 static gint find_icon_data(gconstpointer a, gconstpointer b)
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
547 {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
548 const struct icon_data *x = a;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
549 const struct icon_data *y = b;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
550
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
551 return ((x->gc != y->gc) || g_strcasecmp(x->who, y->who));
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
552 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
553
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
554 void set_icon_data(struct gaim_connection *gc, char *who, void *data, int len)
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
555 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
556 struct gaim_conversation *conv;
3281
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
557 struct icon_data tmp;
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
558 GList *l;
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
559 struct icon_data *id;
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
560 tmp.gc = gc;
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
561 tmp.who = normalize(who);
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
562 tmp.data=NULL;
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
563 tmp.len = 0;
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
564 l = g_list_find_custom(icons, &tmp, find_icon_data);
5ad43d7d85ba [gaim-migrate @ 3299]
Tim Mooney
parents: 3150
diff changeset
565 id = l ? l->data : NULL;
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
566
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
567 if (id) {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
568 g_free(id->data);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
569 if (!data) {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
570 icons = g_list_remove(icons, id);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
571 g_free(id->who);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
572 g_free(id);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
573 return;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
574 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
575 } else if (data) {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
576 id = g_new0(struct icon_data, 1);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
577 icons = g_list_append(icons, id);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
578 id->gc = gc;
2718
89bcc8fa8bfd [gaim-migrate @ 2731]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
579 id->who = g_strdup(normalize(who));
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
580 } else {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
581 return;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
582 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
583
2284
3a2222ceff7d [gaim-migrate @ 2294]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2279
diff changeset
584 debug_printf("Got icon for %s (length %d)\n", who, len);
3a2222ceff7d [gaim-migrate @ 2294]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2279
diff changeset
585
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
586 id->data = g_memdup(data, len);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
587 id->len = len;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
588
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
589 /* Update the buddy icon for this user. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
590 conv = gaim_find_conversation(who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
591
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
592 if (conv != NULL && gaim_conversation_get_gc(conv) == gc)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
593 gaim_gtkconv_update_buddy_icon(conv);
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
594 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
595
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
596 void remove_icon_data(struct gaim_connection *gc)
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
597 {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
598 GList *list = icons;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
599 struct icon_data *id;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
600
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
601 while (list) {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
602 id = list->data;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
603 if (id->gc == gc) {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
604 g_free(id->data);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
605 g_free(id->who);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
606 list = icons = g_list_remove(icons, id);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
607 g_free(id);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
608 } else
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
609 list = list->next;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
610 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
611 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
612
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
613 void *get_icon_data(struct gaim_connection *gc, char *who, int *len)
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
614 {
2718
89bcc8fa8bfd [gaim-migrate @ 2731]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2662
diff changeset
615 struct icon_data tmp = { gc, normalize(who), NULL, 0 };
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
616 GList *l = g_list_find_custom(icons, &tmp, find_icon_data);
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
617 struct icon_data *id = l ? l->data : NULL;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
618
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
619 if (id) {
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
620 *len = id->len;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
621 return id->data;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
622 }
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
623
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
624 *len = 0;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
625 return NULL;
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2189
diff changeset
626 }
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
627
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
628 struct got_add {
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
629 struct gaim_connection *gc;
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
630 char *who;
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
631 char *alias;
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
632 };
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
633
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
634 static void dont_add(struct got_add *ga)
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
635 {
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
636 g_free(ga->who);
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
637 if (ga->alias)
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
638 g_free(ga->alias);
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
639 g_free(ga);
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
640 }
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
641
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
642 static void do_add(struct got_add *ga)
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
643 {
2585
7f3e347fc1d2 [gaim-migrate @ 2598]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2582
diff changeset
644 if (g_slist_find(connections, ga->gc))
7f3e347fc1d2 [gaim-migrate @ 2598]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2582
diff changeset
645 show_add_buddy(ga->gc, ga->who, NULL, ga->alias);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3694
diff changeset
646 dont_add(ga);
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
647 }
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
648
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
649 void show_got_added(struct gaim_connection *gc, const char *id,
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
650 const char *who, const char *alias, const char *msg)
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
651 {
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
652 char buf[BUF_LONG];
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
653 struct got_add *ga = g_new0(struct got_add, 1);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4359
diff changeset
654 struct buddy *b = find_buddy(gc->account, who);
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
655
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
656 ga->gc = gc;
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
657 ga->who = g_strdup(who);
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
658 ga->alias = alias ? g_strdup(alias) : NULL;
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
659
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
660
3150
173a1be7d00e [gaim-migrate @ 3166]
Sean Egan <seanegan@pidgin.im>
parents: 3037
diff changeset
661 g_snprintf(buf, sizeof(buf), _("%s%s%s%s has made %s his or her buddy%s%s%s"),
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
662 who,
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
663 alias ? " (" : "",
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
664 alias ? alias : "",
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
665 alias ? ")" : "",
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
666 id ? id : gc->displayname[0] ? gc->displayname : gc->username,
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
667 msg ? ": " : ".",
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
668 msg ? msg : "",
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
669 b ? "" : _("\n\nDo you wish to add him or her to your buddy list?"));
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
670 if (b)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
671 do_error_dialog(_("Gaim - Information"), buf, GAIM_INFO);
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
672 else
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4309
diff changeset
673 do_ask_dialog(_("Gaim - Confirm"), buf, ga, _("Add"), do_add, _("Cancel"), dont_add, NULL, FALSE);
2582
7d3056893188 [gaim-migrate @ 2595]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2558
diff changeset
674 }
2827
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
675
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
676 static GtkWidget *regdlg = NULL;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
677 static GtkWidget *reg_list = NULL;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
678 static GtkWidget *reg_area = NULL;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
679 static GtkWidget *reg_reg = NULL;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
680
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
681 static void delete_regdlg()
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
682 {
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
683 GtkWidget *tmp = regdlg;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
684 regdlg = NULL;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
685 if (tmp)
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
686 gtk_widget_destroy(tmp);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
687 }
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
688
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
689 static void reset_reg_dlg()
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
690 {
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
691 GSList *P = protocols;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
692
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
693 if (!regdlg)
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
694 return;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
695
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
696 while (GTK_BOX(reg_list)->children)
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
697 gtk_container_remove(GTK_CONTAINER(reg_list),
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
698 ((GtkBoxChild *)GTK_BOX(reg_list)->children->data)->widget);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
699
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
700 while (GTK_BOX(reg_area)->children)
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
701 gtk_container_remove(GTK_CONTAINER(reg_area),
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
702 ((GtkBoxChild *)GTK_BOX(reg_area)->children->data)->widget);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
703
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
704 while (P) {
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
705 struct prpl *p = P->data;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
706 if (p->register_user)
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
707 break;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
708 P = P->next;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
709 }
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
710
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
711 if (!P) {
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
712 GtkWidget *no = gtk_label_new(_("You do not currently have any protocols available"
2827
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
713 " that are able to register new accounts."));
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
714 gtk_box_pack_start(GTK_BOX(reg_area), no, FALSE, FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
715 gtk_widget_show(no);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
716
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
717 gtk_widget_set_sensitive(reg_reg, FALSE);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
718
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
719 return;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
720 }
2843
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
721
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
722 gtk_widget_set_sensitive(reg_reg, TRUE);
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
723
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
724 while (P) { /* we can safely ignore all the previous ones */
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
725 struct prpl *p = P->data;
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
726 P = P->next;
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
727
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
728 if (!p->register_user)
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
729 continue;
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
730
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
731 /* do stuff */
6dd0497437e3 [gaim-migrate @ 2856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2827
diff changeset
732 }
2827
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
733 }
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
734
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
735 void register_dialog()
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
736 {
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
737 /* this is just one big hack */
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
738 GtkWidget *vbox;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
739 GtkWidget *frame;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
740 GtkWidget *hbox;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
741 GtkWidget *close;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
742
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
743 if (regdlg) {
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
744 gdk_window_raise(regdlg->window);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
745 return;
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
746 }
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
747
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
748 regdlg = gtk_window_new(GTK_WINDOW_TOPLEVEL);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
749 gtk_window_set_title(GTK_WINDOW(regdlg), _("Gaim - Registration"));
4074
c69100a0ede9 [gaim-migrate @ 4289]
Robert McQueen <robot101@debian.org>
parents: 4053
diff changeset
750 gtk_window_set_role(GTK_WINDOW(regdlg), "register");
2827
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
751 gtk_widget_realize(regdlg);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
752 g_signal_connect(GTK_OBJECT(regdlg), "destroy", G_CALLBACK(delete_regdlg), NULL);
2827
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
753
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
754 vbox = gtk_vbox_new(FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
755 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
756 gtk_container_add(GTK_CONTAINER(regdlg), vbox);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
757 gtk_widget_show(vbox);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
758
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
759 reg_list = gtk_hbox_new(FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
760 gtk_box_pack_start(GTK_BOX(vbox), reg_list, FALSE, FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
761 gtk_widget_show(reg_list);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
762
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
763 frame = gtk_frame_new(_("Registration Information"));
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
764 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
765 gtk_widget_show(frame);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
766
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
767 reg_area = gtk_hbox_new(FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
768 gtk_container_add(GTK_CONTAINER(frame), reg_area);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
769 gtk_widget_show(reg_area);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
770
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
771 hbox = gtk_hbox_new(FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
772 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
773 gtk_widget_show(hbox);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
774
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
775 close = picture_button(regdlg, _("Close"), cancel_xpm);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
776 gtk_box_pack_end(GTK_BOX(hbox), close, FALSE, FALSE, 5);
4162
7aca7e45e675 [gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents: 4092
diff changeset
777 g_signal_connect(GTK_OBJECT(close), "clicked", G_CALLBACK(delete_regdlg), NULL);
2827
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
778 gtk_widget_show(close);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
779
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
780 reg_reg = picture_button(regdlg, _("Register"), ok_xpm);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
781 gtk_box_pack_end(GTK_BOX(hbox), reg_reg, FALSE, FALSE, 5);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
782 gtk_widget_show(reg_reg);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
783
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
784 /* fuck me */
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
785 reset_reg_dlg();
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
786
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
787 gtk_widget_show(regdlg);
e3d10df95e74 [gaim-migrate @ 2840]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2725
diff changeset
788 }
3035
5354475cd3f6 [gaim-migrate @ 3048]
Rob Flynn <gaim@robflynn.com>
parents: 2843
diff changeset
789
4040
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
790 static gboolean delayed_unload(void *handle) {
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
791 g_module_close(handle);
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
792 return FALSE;
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
793 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
794
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
795 gboolean ref_protocol(struct prpl *p) {
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
796 #ifdef GAIM_PLUGINS
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
797 if(p->plug) { /* This protocol is a plugin */
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
798 prpl_accounts[p->protocol]++;
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
799 debug_printf("Protocol %s now in use by %d connections.\n", p->name, prpl_accounts[p->protocol]);
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
800 if(!p->plug->handle) { /*But the protocol isn't yet loaded */
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
801 unload_protocol(p);
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
802 if (load_prpl(p))
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
803 return FALSE;
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
804 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
805 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
806 #endif /* GAIM_PLUGINS */
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
807 return TRUE;
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
808 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
809
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
810 void unref_protocol(struct prpl *p) {
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
811 #ifdef GAIM_PLUGINS
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
812 if(p->plug) { /* This protocol is a plugin */
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
813 prpl_accounts[p->protocol]--;
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
814 debug_printf("Protocol %s now in use by %d connections.\n", p->name, prpl_accounts[p->protocol]);
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
815 if(prpl_accounts[p->protocol] == 0) { /* No longer needed */
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
816 debug_printf("Throwing out %s protocol plugin\n", p->name);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
817 do_ask_cancel_by_handle(p->plug->handle);
4040
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
818 g_timeout_add(0, delayed_unload, p->plug->handle);
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
819 p->plug->handle = NULL;
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
820 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
821 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
822 #endif /* GAIM_PLUGINS */
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
823 }
d5716b804412 [gaim-migrate @ 4248]
Nathan Walp <nwalp@pidgin.im>
parents: 4001
diff changeset
824

mercurial