Mercurial > pidgin
annotate src/multi.c @ 4634:d19872836812
[gaim-migrate @ 4941]
This will let you set up different proxy settings for different accounts.
Mainly useful to the corporate users that need to connect to an internal
jabber server, and still want to connect to "external" stuff through a
proxy, or something along those lines. I'm sure someone will come up with
another use for it.
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sun, 02 Mar 2003 18:48:02 +0000 |
parents | 5cdfd20daa07 |
children | 42d53c416bb9 |
rev | line source |
---|---|
960 | 1 /* |
2 * gaim | |
3 * | |
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
17 * along with this program; if not, write to the Free Software | |
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 * | |
20 */ | |
21 | |
4634 | 22 #include <stdlib.h> |
2100
a93aeb6f813d
[gaim-migrate @ 2110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
23 #include <string.h> |
3067 | 24 #include <ctype.h> |
960 | 25 #include <gtk/gtk.h> |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
26 #include "prpl.h" |
960 | 27 #include "multi.h" |
28 #include "gaim.h" | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
29 #include "conversation.h" |
960 | 30 |
4493
61ba567f9c64
[gaim-migrate @ 4768]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
31 #ifdef _WIN32 |
61ba567f9c64
[gaim-migrate @ 4768]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
32 #include "win32dep.h" |
61ba567f9c64
[gaim-migrate @ 4768]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
33 #endif |
61ba567f9c64
[gaim-migrate @ 4768]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
34 |
1106
5bc8fdacd2cb
[gaim-migrate @ 1116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
35 #define LOGIN_STEPS 5 |
5bc8fdacd2cb
[gaim-migrate @ 1116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
36 |
960 | 37 GSList *connections; |
3517 | 38 int connecting_count = 0; |
960 | 39 |
40 static GtkWidget *acctedit = NULL; | |
3754 | 41 static GtkWidget *treeview = NULL; /* the treeview of names in the accteditor */ |
42 static GtkListStore *model = NULL; | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
43 |
4491 | 44 static GSList *mod_accounts = NULL; |
960 | 45 |
3754 | 46 enum |
47 { | |
48 COLUMN_SCREENNAME, | |
49 COLUMN_ONLINE, | |
50 COLUMN_AUTOLOGIN, | |
51 COLUMN_PROTOCOL, | |
52 COLUMN_DATA, | |
53 NUM_COLUMNS | |
54 }; | |
55 | |
4491 | 56 struct mod_account { |
57 struct gaim_account *account; | |
58 | |
59 /* these are temporary */ | |
60 int options; | |
61 int protocol; | |
62 char proto_opt[7][256]; | |
63 | |
64 /* stuff for modify window */ | |
65 GtkWidget *mod; | |
66 GtkWidget *main; | |
67 GtkWidget *name; | |
68 GtkWidget *alias; | |
69 GtkWidget *pwdbox; | |
70 GtkWidget *pass; | |
71 GtkWidget *rempass; | |
72 GtkWidget *user_frame; | |
73 GtkWidget *proto_frame; | |
74 GtkSizeGroup *sg; | |
75 GList *opt_entries; | |
76 | |
77 /* stuff for icon selection */ | |
78 char iconfile[256]; | |
79 GtkWidget *iconsel; | |
80 GtkWidget *iconentry; | |
81 GtkWidget *icondlg; | |
82 | |
83 /* stuff for mail check prompt */ | |
84 GtkWidget *checkmail; | |
85 | |
86 /* stuff for register with server */ | |
87 GtkWidget *register_user; | |
4634 | 88 |
89 /* stuff for proxy options */ | |
90 GtkWidget *proxy_frame; | |
91 GtkWidget *proxy_host_box; | |
92 GtkWidget *proxytype_menu; | |
93 GtkWidget *proxyhost_entry; | |
94 GtkWidget *proxyport_entry; | |
95 GtkWidget *proxyuser_entry; | |
96 GtkWidget *proxypass_entry; | |
4491 | 97 }; |
98 | |
99 | |
100 struct mod_account_opt { | |
101 struct mod_account *ma; | |
102 int opt; | |
103 }; | |
104 | |
3754 | 105 static void acct_signin(GtkCellRendererToggle *cell, gchar *path_str, |
106 gpointer d); | |
107 static void acct_autologin(GtkCellRendererToggle *cell, gchar *path_str, | |
108 gpointer d); | |
109 | |
4491 | 110 static struct mod_account *mod_account_find(struct gaim_account *a) |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
111 { |
4491 | 112 GSList *m = mod_accounts; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
113 while (m) { |
4491 | 114 struct mod_account *ma = m->data; |
115 if (ma->account == a) | |
116 return ma; | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
117 m = m->next; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
118 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
119 return NULL; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
120 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
121 |
4491 | 122 static void generate_protocol_options(struct mod_account *, GtkWidget *); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
123 |
960 | 124 |
4491 | 125 struct gaim_connection *new_gaim_conn(struct gaim_account *account) |
960 | 126 { |
127 struct gaim_connection *gc = g_new0(struct gaim_connection, 1); | |
1391
d606da211acb
[gaim-migrate @ 1401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1355
diff
changeset
|
128 gc->edittype = EDIT_GC; |
4491 | 129 gc->protocol = account->protocol; |
130 gc->prpl = find_prpl(account->protocol); | |
131 g_snprintf(gc->username, sizeof(gc->username), "%s", account->username); | |
132 g_snprintf(gc->password, sizeof(gc->password), "%s", account->password); | |
1153
3063e6743913
[gaim-migrate @ 1163]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1124
diff
changeset
|
133 gc->keepalive = 0; |
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2380
diff
changeset
|
134 gc->inpa = 0; |
998
70c685de2be5
[gaim-migrate @ 1008]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
993
diff
changeset
|
135 gc->buddy_chats = NULL; |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4082
diff
changeset
|
136 gc->away = NULL; |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4082
diff
changeset
|
137 gc->away_state = NULL; |
960 | 138 |
139 connections = g_slist_append(connections, gc); | |
140 | |
4491 | 141 account->gc = gc; |
142 gc->account = account; | |
1089
f0f5c10cce63
[gaim-migrate @ 1099]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1086
diff
changeset
|
143 |
960 | 144 return gc; |
145 } | |
146 | |
3060 | 147 struct meter_window { |
148 GtkWidget *window; | |
149 GtkTable *table; | |
150 gint rows; | |
151 gint active_count; | |
152 } *meter_win = NULL; | |
153 | |
960 | 154 void destroy_gaim_conn(struct gaim_connection *gc) |
155 { | |
4349 | 156 GSList *g = groups; |
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
157 GSList *h; |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
158 struct group *m; |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
159 struct buddy *n; |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
160 while (g) { |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
161 m = (struct group *)g->data; |
4349 | 162 g = g_slist_next(g); |
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
163 h = m->members; |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
164 while (h) { |
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
165 n = (struct buddy *)h->data; |
4349 | 166 h = g_slist_next(h); |
4491 | 167 if(n->account == gc->account) { |
4349 | 168 n->present = 0; |
169 } | |
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
170 } |
2597
2ced57c58653
[gaim-migrate @ 2610]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2568
diff
changeset
|
171 } |
4111
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4082
diff
changeset
|
172 g_free(gc->away); |
ee884f1d7ae3
[gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents:
4082
diff
changeset
|
173 g_free(gc->away_state); |
960 | 174 g_free(gc); |
3510 | 175 |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
176 if (!connections && mainwindow) |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
177 gtk_widget_show(mainwindow); |
960 | 178 } |
179 | |
4275 | 180 static void quit_acctedit(gpointer d) |
960 | 181 { |
182 if (acctedit) { | |
183 save_prefs(); | |
184 gtk_widget_destroy(acctedit); | |
4275 | 185 acctedit = NULL; |
960 | 186 } |
3754 | 187 treeview = NULL; |
1474
4e891576c226
[gaim-migrate @ 1484]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1473
diff
changeset
|
188 if (!d && !blist && !mainwindow && !connections) |
4082 | 189 do_quit(); |
960 | 190 } |
191 | |
4275 | 192 static void on_delete_acctedit(GtkWidget *w, GdkEvent *ev, gpointer d) |
960 | 193 { |
4275 | 194 quit_acctedit(d); |
195 } | |
196 | |
197 static void on_close_acctedit(GtkButton *button, gpointer d) | |
198 { | |
199 quit_acctedit(d); | |
960 | 200 } |
201 | |
202 static char *proto_name(int proto) | |
203 { | |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
204 struct prpl *p = find_prpl(proto); |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
205 if (p && p->name) |
3572 | 206 return p->name; |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
207 else |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
208 return "Unknown"; |
960 | 209 } |
210 | |
2204
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
211 void regenerate_user_list() |
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
212 { |
4491 | 213 GSList *accounts = gaim_accounts; |
214 struct gaim_account *a; | |
3754 | 215 GtkTreeIter iter; |
2204
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
216 |
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
217 if (!acctedit) |
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
218 return; |
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
219 |
3754 | 220 gtk_list_store_clear(model); |
2204
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
221 |
4491 | 222 while (accounts) { |
223 a = (struct gaim_account *)accounts->data; | |
3754 | 224 |
225 gtk_list_store_append(model, &iter); | |
226 gtk_list_store_set(model, &iter, | |
227 COLUMN_SCREENNAME, a->username, | |
228 COLUMN_ONLINE, (a->gc ? TRUE : FALSE), | |
4491 | 229 COLUMN_AUTOLOGIN, (a->options & OPT_ACCT_AUTO), |
3754 | 230 COLUMN_PROTOCOL, proto_name(a->protocol), |
231 COLUMN_DATA, a, | |
232 -1); | |
4491 | 233 accounts = accounts->next; |
2204
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
234 } |
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
235 } |
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
236 |
3754 | 237 static gboolean get_iter_from_data(GtkTreeView *treeview, |
4491 | 238 struct gaim_account *a, GtkTreeIter *iter) |
3754 | 239 { |
240 return gtk_tree_model_iter_nth_child(gtk_tree_view_get_model(treeview), | |
241 iter, NULL, | |
4491 | 242 g_slist_index(gaim_accounts, a)); |
3754 | 243 } |
244 | |
245 static void add_columns(GtkWidget *treeview) | |
246 { | |
247 GtkCellRenderer *renderer; | |
248 GtkTreeViewColumn *column; | |
249 | |
250 /* Screennames */ | |
251 renderer = gtk_cell_renderer_text_new(); | |
252 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), | |
253 -1, _("Screenname"), | |
254 renderer, | |
255 "text", COLUMN_SCREENNAME, | |
256 NULL); | |
257 | |
258 /* Online? */ | |
259 renderer = gtk_cell_renderer_toggle_new(); | |
260 g_signal_connect(G_OBJECT(renderer), "toggled", | |
261 G_CALLBACK(acct_signin), model); | |
262 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), | |
263 -1, _("Online"), | |
264 renderer, | |
265 "active", COLUMN_ONLINE, | |
266 NULL); | |
267 | |
268 /* Auto-login? */ | |
269 renderer = gtk_cell_renderer_toggle_new(); | |
270 g_signal_connect(G_OBJECT(renderer), "toggled", | |
271 G_CALLBACK(acct_autologin), model); | |
272 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), | |
273 -1, _("Auto-login"), | |
274 renderer, | |
275 "active", COLUMN_AUTOLOGIN, | |
276 NULL); | |
277 | |
278 /* Protocol */ | |
279 renderer = gtk_cell_renderer_text_new(); | |
280 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), | |
281 -1, _("Protocol"), | |
282 renderer, | |
283 "text", COLUMN_PROTOCOL, | |
284 NULL); | |
285 | |
286 /* Data */ | |
4630 | 287 /* |
3754 | 288 column = gtk_tree_view_column_new(); |
4630 | 289 gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1); |
3754 | 290 gtk_tree_view_column_set_visible(column, FALSE); |
4630 | 291 */ |
3754 | 292 } |
293 | |
960 | 294 static GtkWidget *generate_list() |
295 { | |
296 GtkWidget *win; | |
297 | |
298 win = gtk_scrolled_window_new(0, 0); | |
3754 | 299 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(win), |
300 GTK_POLICY_AUTOMATIC, | |
301 GTK_POLICY_ALWAYS); | |
4550
972af41f277c
[gaim-migrate @ 4830]
Christian Hammond <chipx86@chipx86.com>
parents:
4493
diff
changeset
|
302 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(win), |
972af41f277c
[gaim-migrate @ 4830]
Christian Hammond <chipx86@chipx86.com>
parents:
4493
diff
changeset
|
303 GTK_SHADOW_IN); |
3754 | 304 |
305 /* Create the list model. */ | |
306 model = gtk_list_store_new(NUM_COLUMNS, G_TYPE_STRING, G_TYPE_BOOLEAN, | |
307 G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER); | |
960 | 308 |
3754 | 309 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); |
310 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); | |
311 gtk_tree_selection_set_mode( | |
312 gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), | |
313 GTK_SELECTION_MULTIPLE); | |
314 | |
315 add_columns(treeview); | |
316 | |
317 gtk_container_add(GTK_CONTAINER(win), treeview); | |
318 gtk_widget_show(treeview); | |
960 | 319 |
2204
5014b802eb41
[gaim-migrate @ 2214]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2203
diff
changeset
|
320 regenerate_user_list(); |
3754 | 321 gtk_tree_view_set_reorderable (GTK_TREE_VIEW(treeview), TRUE); |
960 | 322 gtk_widget_show(win); |
323 return win; | |
324 } | |
325 | |
4491 | 326 static void delmod(GtkWidget *w, struct mod_account *ma) |
960 | 327 { |
4491 | 328 mod_accounts = g_slist_remove(mod_accounts, ma); |
329 g_free(ma); | |
960 | 330 } |
331 | |
4491 | 332 static void mod_opt(GtkWidget *b, struct mod_account_opt *mao) |
960 | 333 { |
4491 | 334 mao->ma->options = mao->ma->options ^ mao->opt; |
960 | 335 } |
336 | |
4491 | 337 static void free_mao(GtkWidget *b, struct mod_account_opt *mao) |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
338 { |
4491 | 339 g_free(mao); |
1051
713b0e14e0a9
[gaim-migrate @ 1061]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1030
diff
changeset
|
340 } |
713b0e14e0a9
[gaim-migrate @ 1061]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1030
diff
changeset
|
341 |
4491 | 342 static GtkWidget *acct_button(const char *text, struct mod_account *ma, int option, GtkWidget *box) |
960 | 343 { |
344 GtkWidget *button; | |
4491 | 345 struct mod_account_opt *mao = g_new0(struct mod_account_opt, 1); |
960 | 346 button = gtk_check_button_new_with_label(text); |
4491 | 347 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (ma->options & option)); |
960 | 348 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); |
4491 | 349 mao->ma = ma; |
350 mao->opt = option; | |
351 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(mod_opt), mao); | |
352 g_signal_connect(GTK_OBJECT(button), "destroy", G_CALLBACK(free_mao), mao); | |
960 | 353 gtk_widget_show(button); |
354 return button; | |
355 } | |
356 | |
4491 | 357 static void ok_mod(GtkWidget *w, struct mod_account *ma) |
960 | 358 { |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
359 GList *tmp; |
1954
c15c3a3f6cd4
[gaim-migrate @ 1964]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1942
diff
changeset
|
360 const char *txt; |
4491 | 361 struct gaim_account *a; |
2956 | 362 struct prpl *p; |
3754 | 363 GtkTreeIter iter; |
4634 | 364 int proxytype; |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
365 |
4491 | 366 if (!ma->account) { |
367 txt = gtk_entry_get_text(GTK_ENTRY(ma->name)); | |
368 ma->account = gaim_account_new(txt, ma->protocol, ma->options); | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
369 } |
4491 | 370 a = ma->account; |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
371 |
4491 | 372 a->options = ma->options; |
373 a->protocol = ma->protocol; | |
374 txt = gtk_entry_get_text(GTK_ENTRY(ma->name)); | |
2628
4054a0849461
[gaim-migrate @ 2641]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2627
diff
changeset
|
375 g_snprintf(a->username, sizeof(a->username), "%s", txt); |
4491 | 376 txt = gtk_entry_get_text(GTK_ENTRY(ma->alias)); |
3205 | 377 g_snprintf(a->alias, sizeof(a->alias), "%s", txt); |
4491 | 378 txt = gtk_entry_get_text(GTK_ENTRY(ma->pass)); |
379 if (a->options & OPT_ACCT_REM_PASS) | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
380 g_snprintf(a->password, sizeof(a->password), "%s", txt); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
381 else |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
382 a->password[0] = '\0'; |
2190
24d947eff811
[gaim-migrate @ 2200]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2165
diff
changeset
|
383 |
3754 | 384 if (get_iter_from_data(GTK_TREE_VIEW(treeview), a, &iter)) { |
385 gtk_list_store_set(model, &iter, | |
386 COLUMN_SCREENNAME, a->username, | |
4491 | 387 COLUMN_AUTOLOGIN, (a->options & OPT_ACCT_AUTO), |
3754 | 388 COLUMN_PROTOCOL, proto_name(a->protocol), |
389 -1); | |
390 } | |
391 | |
392 #if 0 | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
393 i = gtk_clist_find_row_from_data(GTK_CLIST(list), a); |
2628
4054a0849461
[gaim-migrate @ 2641]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2627
diff
changeset
|
394 gtk_clist_set_text(GTK_CLIST(list), i, 0, a->username); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
395 gtk_clist_set_text(GTK_CLIST(list), i, 2, |
4491 | 396 (a->options & OPT_ACCT_AUTO) ? "True" : "False"); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
397 gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(a->protocol)); |
3754 | 398 #endif |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
399 |
4491 | 400 tmp = ma->opt_entries; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
401 while (tmp) { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
402 GtkEntry *entry = tmp->data; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
403 int pos = (int)gtk_object_get_user_data(GTK_OBJECT(entry)); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
404 g_snprintf(a->proto_opt[pos], sizeof(a->proto_opt[pos]), "%s", |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2364
diff
changeset
|
405 gtk_entry_get_text(entry)); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
406 tmp = tmp->next; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
407 } |
4491 | 408 if (ma->opt_entries) |
409 g_list_free(ma->opt_entries); | |
410 ma->opt_entries = NULL; | |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
411 |
4491 | 412 g_snprintf(a->iconfile, sizeof(a->iconfile), "%s", ma->iconfile); |
413 if (ma->icondlg) | |
414 gtk_widget_destroy(ma->icondlg); | |
415 ma->icondlg = NULL; | |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
416 |
4634 | 417 if(ma->account->gpi) |
418 g_free(ma->account->gpi); | |
419 ma->account->gpi = NULL; | |
420 | |
421 proxytype = (int)gtk_object_get_user_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(ma->proxytype_menu)))); | |
422 | |
423 if(proxytype != PROXY_USE_GLOBAL) { | |
424 struct gaim_proxy_info *gpi = g_new0(struct gaim_proxy_info, 1); | |
425 gpi->proxytype = proxytype; | |
426 g_snprintf(gpi->proxyhost, sizeof(gpi->proxyhost), "%s", gtk_entry_get_text(GTK_ENTRY(ma->proxyhost_entry))); | |
427 gpi->proxyport = atoi(gtk_entry_get_text(GTK_ENTRY(ma->proxyport_entry))); | |
428 g_snprintf(gpi->proxyuser, sizeof(gpi->proxyuser), "%s", gtk_entry_get_text(GTK_ENTRY(ma->proxyuser_entry))); | |
429 g_snprintf(gpi->proxypass, sizeof(gpi->proxypass), "%s", gtk_entry_get_text(GTK_ENTRY(ma->proxypass_entry))); | |
430 | |
431 ma->account->gpi = gpi; | |
432 } | |
433 | |
2956 | 434 /* |
435 * See if user registration is supported/required | |
436 */ | |
4491 | 437 if((p = find_prpl(ma->protocol)) == NULL) { |
2956 | 438 /* TBD: error dialog here! (This should never happen, you know...) */ |
4491 | 439 fprintf(stderr, "dbg: couldn't find protocol for protocol number %d!\n", ma->protocol); |
2956 | 440 fflush(stderr); |
441 } else { | |
442 if(p->register_user != NULL && | |
4491 | 443 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ma->register_user)) == TRUE) { |
4040 | 444 ref_protocol(p); |
2956 | 445 p->register_user(a); |
4040 | 446 /* we don't unref the protocol because register user has callbacks |
447 * that need to get called first, then they will unref the protocol | |
448 * appropriately */ | |
2956 | 449 } |
450 } | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
451 |
960 | 452 save_prefs(); |
2956 | 453 |
4491 | 454 gtk_widget_destroy(ma->mod); |
960 | 455 } |
456 | |
4491 | 457 static void cancel_mod(GtkWidget *w, struct mod_account *ma) |
960 | 458 { |
4491 | 459 if (ma->opt_entries) |
460 g_list_free(ma->opt_entries); | |
461 ma->opt_entries = NULL; | |
462 if (ma->icondlg) | |
463 gtk_widget_destroy(ma->icondlg); | |
464 ma->icondlg = NULL; | |
465 gtk_widget_destroy(ma->mod); | |
960 | 466 } |
467 | |
468 static void set_prot(GtkWidget *opt, int proto) | |
469 { | |
4491 | 470 struct mod_account *ma = gtk_object_get_user_data(GTK_OBJECT(opt)); |
2100
a93aeb6f813d
[gaim-migrate @ 2110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
471 struct prpl *p, *q; |
a93aeb6f813d
[gaim-migrate @ 2110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
472 q = find_prpl(proto); |
4491 | 473 if (ma->protocol != proto) { |
1086
ce201056e7a6
[gaim-migrate @ 1096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1075
diff
changeset
|
474 int i; |
1878
75643b9f4261
[gaim-migrate @ 1888]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1817
diff
changeset
|
475 for (i = 0; i < 7; i++) |
4491 | 476 ma->proto_opt[i][0] = '\0'; |
477 p = find_prpl(ma->protocol); | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
478 |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2364
diff
changeset
|
479 if (!(p->options & OPT_PROTO_NO_PASSWORD) && (q->options & OPT_PROTO_NO_PASSWORD)) { |
4491 | 480 gtk_widget_hide(ma->pwdbox); |
481 gtk_widget_hide(ma->rempass); | |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2364
diff
changeset
|
482 } else if ((p->options & OPT_PROTO_NO_PASSWORD) && !(q->options & OPT_PROTO_NO_PASSWORD)) { |
4491 | 483 gtk_widget_show(ma->pwdbox); |
484 gtk_widget_show(ma->rempass); | |
2100
a93aeb6f813d
[gaim-migrate @ 2110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
485 } |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2364
diff
changeset
|
486 if (!(p->options & OPT_PROTO_MAIL_CHECK) && (q->options & OPT_PROTO_MAIL_CHECK)) { |
4491 | 487 gtk_widget_show(ma->checkmail); |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2364
diff
changeset
|
488 } else if ((p->options & OPT_PROTO_MAIL_CHECK) && !(q->options & OPT_PROTO_MAIL_CHECK)) { |
4491 | 489 gtk_widget_hide(ma->checkmail); |
2153
0befa2d2e540
[gaim-migrate @ 2163]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2118
diff
changeset
|
490 } |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
491 |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
492 if (!(p->options & OPT_PROTO_BUDDY_ICON) && (q->options & OPT_PROTO_BUDDY_ICON)) { |
4491 | 493 gtk_widget_show(ma->iconsel); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
494 } else if ((p->options & OPT_PROTO_BUDDY_ICON) && !(q->options & OPT_PROTO_BUDDY_ICON)) { |
4491 | 495 gtk_widget_hide(ma->iconsel); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
496 } |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
497 |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
498 if ((q->options & OPT_PROTO_BUDDY_ICON) || (q->options & OPT_PROTO_MAIL_CHECK)) |
4491 | 499 gtk_widget_show(ma->user_frame); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
500 else |
4491 | 501 gtk_widget_hide(ma->user_frame); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
502 |
4491 | 503 ma->protocol = proto; |
504 generate_protocol_options(ma, ma->main); | |
960 | 505 } |
506 } | |
507 | |
4491 | 508 static GtkWidget *make_protocol_menu(GtkWidget *box, struct mod_account *ma) |
960 | 509 { |
510 GtkWidget *optmenu; | |
511 GtkWidget *menu; | |
512 GtkWidget *opt; | |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
513 GSList *p = protocols; |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
514 struct prpl *e; |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
515 int count = 0; |
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
516 gboolean found = FALSE; |
960 | 517 |
518 optmenu = gtk_option_menu_new(); | |
519 gtk_box_pack_start(GTK_BOX(box), optmenu, FALSE, FALSE, 5); | |
520 gtk_widget_show(optmenu); | |
521 | |
522 menu = gtk_menu_new(); | |
523 | |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
524 while (p) { |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
525 e = (struct prpl *)p->data; |
4491 | 526 if (e->protocol == ma->protocol) |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
527 found = TRUE; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
528 if (!found) |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
529 count++; |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
530 if (e->name) |
3572 | 531 opt = gtk_menu_item_new_with_label(e->name); |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
532 else |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
533 opt = gtk_menu_item_new_with_label("Unknown"); |
4491 | 534 gtk_object_set_user_data(GTK_OBJECT(opt), ma); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
535 g_signal_connect(GTK_OBJECT(opt), "activate", |
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
536 G_CALLBACK(set_prot), (void *)e->protocol); |
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
537 gtk_menu_append(GTK_MENU(menu), opt); |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
538 gtk_widget_show(opt); |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
539 p = p->next; |
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
540 } |
960 | 541 |
542 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); | |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
543 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), count); |
960 | 544 |
545 return optmenu; | |
546 } | |
547 | |
4491 | 548 static void des_icon_sel(GtkWidget *w, struct mod_account *ma) |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
549 { |
4491 | 550 w = ma->icondlg; |
551 if (ma->icondlg) | |
552 ma->icondlg = NULL; | |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
553 if (w) |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
554 gtk_widget_destroy(w); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
555 } |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
556 |
4491 | 557 static void set_icon(GtkWidget *w, struct mod_account *ma) |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
558 { |
4491 | 559 GtkWidget *sel = ma->icondlg; |
3466 | 560 const char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(sel)); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
561 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
562 if (file_is_dir(file, sel)) |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
563 return; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
564 |
4491 | 565 gtk_entry_set_text(GTK_ENTRY(ma->iconentry), file); |
566 g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", file); | |
567 ma->icondlg = NULL; | |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
568 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
569 gtk_widget_destroy(sel); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
570 } |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
571 |
4491 | 572 static void sel_icon_dlg(GtkWidget *w, struct mod_account *ma) |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
573 { |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
574 GtkWidget *dlg; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
575 char buf[256]; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
576 |
4491 | 577 if (ma->icondlg) { |
578 gtk_widget_show(ma->icondlg); | |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
579 return; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
580 } |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
581 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
582 dlg = gtk_file_selection_new(_("Gaim - Load Buddy Icon")); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
583 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(dlg)); |
4491 | 584 if (ma->iconfile) { |
585 char *tmp = g_dirname(ma->iconfile); | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
586 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), tmp); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
587 g_free(tmp); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
588 } else { |
3630 | 589 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
590 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), buf); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
591 } |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
592 |
4491 | 593 g_signal_connect(GTK_OBJECT(dlg), "destroy", G_CALLBACK(des_icon_sel), ma); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
594 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->cancel_button), "clicked", |
4491 | 595 G_CALLBACK(des_icon_sel), ma); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
596 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->ok_button), "clicked", |
4491 | 597 G_CALLBACK(set_icon), ma); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
598 |
4491 | 599 ma->icondlg = dlg; |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
600 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
601 gtk_widget_show(dlg); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
602 } |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
603 |
4491 | 604 static void reset_icon(GtkWidget *w, struct mod_account *ma) |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
605 { |
4491 | 606 ma->iconfile[0] = 0; |
607 gtk_entry_set_text(GTK_ENTRY(ma->iconentry), ""); | |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
608 } |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
609 |
4491 | 610 static GtkWidget *build_icon_selection(struct mod_account *ma, GtkWidget *box) |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
611 { |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
612 GtkWidget *hbox; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
613 GtkWidget *label; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
614 GtkWidget *name; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
615 GtkWidget *browse; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
616 GtkWidget *reset; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
617 |
4491 | 618 if (ma->account) |
619 g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", ma->account->iconfile); | |
2431
5948060f486c
[gaim-migrate @ 2444]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2411
diff
changeset
|
620 |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
621 hbox = gtk_hbox_new(FALSE, 0); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
622 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
623 gtk_widget_show(hbox); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
624 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
625 label = gtk_label_new(_("Buddy Icon File:")); |
4491 | 626 gtk_size_group_add_widget(ma->sg, label); |
3754 | 627 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
628 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
629 gtk_widget_show(label); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
630 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
631 name = gtk_entry_new(); |
4491 | 632 gtk_entry_set_text(GTK_ENTRY(name), ma->iconfile); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
633 gtk_entry_set_editable(GTK_ENTRY(name), FALSE); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
634 gtk_box_pack_start(GTK_BOX(hbox), name, TRUE, TRUE, 5); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
635 gtk_widget_show(name); |
4491 | 636 ma->iconentry = name; |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
637 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
638 browse = gtk_button_new_with_label(_("Browse")); |
4491 | 639 g_signal_connect(GTK_OBJECT(browse), "clicked", G_CALLBACK(sel_icon_dlg), ma); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
640 gtk_box_pack_start(GTK_BOX(hbox), browse, FALSE, FALSE, 0); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
641 gtk_widget_show(browse); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
642 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
643 reset = gtk_button_new_with_label(_("Reset")); |
4491 | 644 g_signal_connect(GTK_OBJECT(reset), "clicked", G_CALLBACK(reset_icon), ma); |
2411
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
645 gtk_box_pack_start(GTK_BOX(hbox), reset, FALSE, FALSE, 0); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
646 gtk_widget_show(reset); |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
647 |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
648 return hbox; |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
649 } |
123aaa84109a
[gaim-migrate @ 2424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2403
diff
changeset
|
650 |
4491 | 651 static void generate_login_options(struct mod_account *ma, GtkWidget *box) |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
652 { |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
653 GtkWidget *frame, *frame_parent; |
960 | 654 GtkWidget *vbox; |
655 GtkWidget *hbox; | |
656 GtkWidget *label; | |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
657 |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
658 struct prpl *p; |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
659 |
3754 | 660 frame = make_frame(box, _("Login Options")); |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
661 frame_parent = gtk_widget_get_parent(gtk_widget_get_parent(frame)); |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
662 |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
663 vbox = gtk_vbox_new(FALSE, 5); |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
664 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
665 gtk_container_add(GTK_CONTAINER(frame), vbox); |
960 | 666 |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
667 hbox = gtk_hbox_new(FALSE, 5); |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
668 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
669 |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
670 label = gtk_label_new(_("Screenname:")); |
4491 | 671 gtk_size_group_add_widget(ma->sg, label); |
3754 | 672 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
673 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
960 | 674 |
4491 | 675 ma->name = gtk_entry_new(); |
676 gtk_box_pack_start(GTK_BOX(hbox), ma->name, TRUE, TRUE, 0); | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
677 |
4491 | 678 ma->pwdbox = gtk_hbox_new(FALSE, 5); |
679 gtk_box_pack_start(GTK_BOX(vbox), ma->pwdbox, FALSE, FALSE, 0); | |
960 | 680 |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
681 label = gtk_label_new(_("Password:")); |
4491 | 682 gtk_size_group_add_widget(ma->sg, label); |
3754 | 683 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
4491 | 684 gtk_box_pack_start(GTK_BOX(ma->pwdbox), label, FALSE, FALSE, 0); |
960 | 685 |
4491 | 686 ma->pass = gtk_entry_new(); |
687 gtk_box_pack_start(GTK_BOX(ma->pwdbox), ma->pass, TRUE, TRUE, 0); | |
688 gtk_entry_set_visibility(GTK_ENTRY(ma->pass), FALSE); | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
689 |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
690 hbox = gtk_hbox_new(FALSE, 5); |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
691 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
3205 | 692 |
693 label = gtk_label_new(_("Alias:")); | |
4491 | 694 gtk_size_group_add_widget(ma->sg, label); |
3754 | 695 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
3205 | 696 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
697 | |
4491 | 698 ma->alias = gtk_entry_new(); |
699 gtk_box_pack_start(GTK_BOX(hbox), ma->alias, TRUE, TRUE, 0); | |
3205 | 700 |
701 hbox = gtk_hbox_new(FALSE, 5); | |
702 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
960 | 703 gtk_widget_show(hbox); |
704 | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
705 label = gtk_label_new(_("Protocol:")); |
4491 | 706 gtk_size_group_add_widget(ma->sg, label); |
3754 | 707 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
708 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
960 | 709 |
4491 | 710 make_protocol_menu(hbox, ma); |
960 | 711 |
4491 | 712 ma->rempass = acct_button(_("Remember Password"), ma, OPT_ACCT_REM_PASS, vbox); |
713 acct_button(_("Auto-Login"), ma, OPT_ACCT_AUTO, vbox); | |
960 | 714 |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
715 gtk_widget_show_all(frame_parent); |
2100
a93aeb6f813d
[gaim-migrate @ 2110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
716 |
4491 | 717 if (ma->account) { |
718 gtk_entry_set_text(GTK_ENTRY(ma->name), ma->account->username); | |
719 gtk_entry_set_text(GTK_ENTRY(ma->alias), ma->account->alias); | |
720 gtk_entry_set_text(GTK_ENTRY(ma->pass), ma->account->password); | |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
721 } |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
722 |
4491 | 723 p = find_prpl(ma->protocol); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
724 if (p && (p->options & OPT_PROTO_NO_PASSWORD)) { |
4491 | 725 gtk_widget_hide(ma->pwdbox); |
726 gtk_widget_hide(ma->rempass); | |
2444
13ce96daf30f
[gaim-migrate @ 2457]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2442
diff
changeset
|
727 } |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
728 } |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
729 |
4491 | 730 static void generate_user_options(struct mod_account *ma, GtkWidget *box) |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
731 { |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
732 /* This function will add the appropriate (depending on the current |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
733 * protocol) widgets to frame and return TRUE if there anything |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
734 * was added (meaning the frame should be shown) |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
735 * Eric will most likely change this (as he does all other submitted code) |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
736 * so that it will accept the vbox as an argument and create, add, and show |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
737 * the frame itself (like generate_protocol_options). I'd do it myself, but I'm |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
738 * tired and I don't care. */ |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
739 /* Sean was right. I did do that. I told him I would. */ |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
740 |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
741 GtkWidget *vbox; |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
742 GtkWidget *frame; |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
743 |
4491 | 744 struct prpl *p = find_prpl(ma->protocol); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
745 |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
746 frame = make_frame(box, _("User Options")); |
4491 | 747 ma->user_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); |
748 gtk_widget_show_all(ma->user_frame); | |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
749 |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
750 vbox = gtk_vbox_new(FALSE, 5); |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
751 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
752 gtk_container_add(GTK_CONTAINER(frame), vbox); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
753 gtk_widget_show(vbox); |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
754 |
4491 | 755 ma->checkmail = acct_button(_("New Mail Notifications"), ma, OPT_ACCT_MAIL_CHECK, vbox); |
756 ma->iconsel = build_icon_selection(ma, vbox); | |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
757 |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
758 if (!p) { |
4491 | 759 gtk_widget_hide(ma->user_frame); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
760 return; |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
761 } |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
762 |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
763 if (!(p->options & OPT_PROTO_MAIL_CHECK)) |
4491 | 764 gtk_widget_hide(ma->checkmail); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
765 if (!(p->options & OPT_PROTO_BUDDY_ICON)) |
4491 | 766 gtk_widget_hide(ma->iconsel); |
2525
4fc6aac9da94
[gaim-migrate @ 2538]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2522
diff
changeset
|
767 |
4fc6aac9da94
[gaim-migrate @ 2538]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2522
diff
changeset
|
768 if ((p->options & OPT_PROTO_BUDDY_ICON) || (p->options & OPT_PROTO_MAIL_CHECK)) |
4fc6aac9da94
[gaim-migrate @ 2538]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2522
diff
changeset
|
769 return; |
4491 | 770 gtk_widget_hide(ma->user_frame); |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
771 } |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
772 |
4491 | 773 static void generate_protocol_options(struct mod_account *ma, GtkWidget *box) |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
774 { |
4491 | 775 struct prpl *p = find_prpl(ma->protocol); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
776 |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
777 GList *op, *tmp; |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
778 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
779 GtkWidget *vbox; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
780 GtkWidget *hbox; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
781 GtkWidget *label; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
782 GtkWidget *entry; |
3754 | 783 GtkWidget *frame; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
784 |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
785 char buf[256]; |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
786 |
4491 | 787 if (ma->proto_frame) |
788 gtk_widget_destroy(ma->proto_frame); | |
789 ma->proto_frame = NULL; | |
2203
14100685c95f
[gaim-migrate @ 2213]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2200
diff
changeset
|
790 |
4491 | 791 if (ma->opt_entries) { |
792 g_list_free(ma->opt_entries); | |
793 ma->opt_entries = NULL; | |
2190
24d947eff811
[gaim-migrate @ 2200]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2165
diff
changeset
|
794 } |
24d947eff811
[gaim-migrate @ 2200]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2165
diff
changeset
|
795 |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
796 if (!p) |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
797 return; |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
798 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
799 if (!p->user_opts) |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
800 return; |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
801 |
3572 | 802 tmp = op = p->user_opts; |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
803 |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
804 if (!op) |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
805 return; |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
806 |
4169 | 807 g_snprintf(buf, sizeof(buf), _("%s Options"), p->name); |
3754 | 808 frame = make_frame(box, buf); |
809 | |
810 /* BLEH */ | |
4491 | 811 ma->proto_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); |
812 gtk_widget_show_all(ma->proto_frame); | |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
813 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
814 vbox = gtk_vbox_new(FALSE, 5); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
815 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
3754 | 816 gtk_container_add(GTK_CONTAINER(frame), vbox); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
817 gtk_widget_show(vbox); |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
818 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
819 while (op) { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
820 struct proto_user_opt *puo = op->data; |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
821 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
822 hbox = gtk_hbox_new(FALSE, 5); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
823 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
824 gtk_widget_show(hbox); |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
825 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
826 label = gtk_label_new(puo->label); |
4491 | 827 gtk_size_group_add_widget(ma->sg, label); |
3754 | 828 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
829 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
830 gtk_widget_show(label); |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
831 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
832 entry = gtk_entry_new(); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
833 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
834 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)puo->pos); |
4491 | 835 if (ma->proto_opt[puo->pos][0]) { |
836 debug_printf("setting text %s\n", ma->proto_opt[puo->pos]); | |
837 gtk_entry_set_text(GTK_ENTRY(entry), ma->proto_opt[puo->pos]); | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
838 } else { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
839 gtk_entry_set_text(GTK_ENTRY(entry), puo->def); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
840 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
841 gtk_widget_show(entry); |
2154
cff133e0ec0c
[gaim-migrate @ 2164]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2153
diff
changeset
|
842 |
4491 | 843 ma->opt_entries = g_list_append(ma->opt_entries, entry); |
844 | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
845 op = op->next; |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
846 } |
2956 | 847 |
848 if(p->register_user != NULL) { | |
4491 | 849 ma->register_user = gtk_check_button_new_with_label(_("Register with server")); |
850 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ma->register_user), FALSE); | |
851 gtk_box_pack_start(GTK_BOX(vbox), ma->register_user, FALSE, FALSE, 0); | |
852 gtk_widget_show(ma->register_user); | |
2956 | 853 } |
854 | |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
855 } |
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
856 |
4634 | 857 static void proxy_dropdown_set(GtkObject *w, struct mod_account *ma) { |
858 int opt = (int)gtk_object_get_user_data(w); | |
859 gtk_widget_set_sensitive(ma->proxy_host_box, (opt != PROXY_NONE && opt != PROXY_USE_GLOBAL)); | |
860 } | |
861 | |
862 static void generate_proxy_options(struct mod_account *ma, GtkWidget *box) { | |
863 GtkWidget *frame; | |
864 GtkWidget *hbox; | |
865 GtkWidget *vbox; | |
866 GtkWidget *label; | |
867 GtkWidget *menu; | |
868 GtkWidget *dropdown; | |
869 GtkWidget *opt; | |
870 GtkWidget *entry; | |
871 GtkWidget *vbox2; | |
872 | |
873 struct gaim_proxy_info *gpi = NULL; | |
874 | |
875 if(ma->account) | |
876 gpi = ma->account->gpi; | |
877 | |
878 frame = make_frame(box, _("Proxy Options")); | |
879 ma->proxy_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); | |
880 gtk_widget_show_all(ma->proxy_frame); | |
881 | |
882 vbox = gtk_vbox_new(FALSE, 5); | |
883 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | |
884 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
885 gtk_widget_show(vbox); | |
886 | |
887 /* make the dropdown w/o the benefit of the easy helper funcs in prefs.c */ | |
888 hbox = gtk_hbox_new(FALSE, 5); | |
889 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
890 gtk_widget_show(hbox); | |
891 | |
892 label = gtk_label_new_with_mnemonic(_("Proxy _Type")); | |
893 gtk_size_group_add_widget(ma->sg, label); | |
894 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
895 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
896 gtk_widget_show(label); | |
897 | |
898 dropdown = gtk_option_menu_new(); | |
899 menu = gtk_menu_new(); | |
900 | |
901 opt = gtk_menu_item_new_with_label("Use Global Proxy Settings"); | |
902 gtk_object_set_user_data(GTK_OBJECT(opt), (gpointer)PROXY_USE_GLOBAL); | |
903 g_signal_connect(G_OBJECT(opt), "activate", | |
904 G_CALLBACK(proxy_dropdown_set), ma); | |
905 gtk_widget_show(opt); | |
906 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
907 if(!gpi) | |
908 gtk_menu_set_active(GTK_MENU(menu), 0); | |
909 | |
910 opt = gtk_menu_item_new_with_label("No Proxy"); | |
911 gtk_object_set_user_data(GTK_OBJECT(opt), (gpointer)PROXY_NONE); | |
912 g_signal_connect(G_OBJECT(opt), "activate", | |
913 G_CALLBACK(proxy_dropdown_set), ma); | |
914 gtk_widget_show(opt); | |
915 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
916 if(gpi && gpi->proxytype == PROXY_NONE) | |
917 gtk_menu_set_active(GTK_MENU(menu), 1); | |
918 | |
919 opt = gtk_menu_item_new_with_label("SOCKS 4"); | |
920 gtk_object_set_user_data(GTK_OBJECT(opt), (gpointer)PROXY_SOCKS4); | |
921 g_signal_connect(G_OBJECT(opt), "activate", | |
922 G_CALLBACK(proxy_dropdown_set), ma); | |
923 gtk_widget_show(opt); | |
924 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
925 if(gpi && gpi->proxytype == PROXY_SOCKS4) | |
926 gtk_menu_set_active(GTK_MENU(menu), 2); | |
927 | |
928 opt = gtk_menu_item_new_with_label("SOCKS 5"); | |
929 gtk_object_set_user_data(GTK_OBJECT(opt), (gpointer)PROXY_SOCKS5); | |
930 g_signal_connect(G_OBJECT(opt), "activate", | |
931 G_CALLBACK(proxy_dropdown_set), ma); | |
932 gtk_widget_show(opt); | |
933 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
934 if(gpi && gpi->proxytype == PROXY_SOCKS5) | |
935 gtk_menu_set_active(GTK_MENU(menu), 3); | |
936 | |
937 opt = gtk_menu_item_new_with_label("HTTP"); | |
938 gtk_object_set_user_data(GTK_OBJECT(opt), (gpointer)PROXY_HTTP); | |
939 g_signal_connect(G_OBJECT(opt), "activate", | |
940 G_CALLBACK(proxy_dropdown_set), ma); | |
941 gtk_widget_show(opt); | |
942 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt); | |
943 if(gpi && gpi->proxytype == PROXY_HTTP) | |
944 gtk_menu_set_active(GTK_MENU(menu), 4); | |
945 | |
946 gtk_option_menu_set_menu(GTK_OPTION_MENU(dropdown), menu); | |
947 gtk_box_pack_start(GTK_BOX(hbox), dropdown, FALSE, FALSE, 0); | |
948 gtk_widget_show(dropdown); | |
949 | |
950 ma->proxytype_menu = menu; | |
951 | |
952 | |
953 vbox2 = gtk_vbox_new(FALSE, 5); | |
954 gtk_container_add(GTK_CONTAINER(vbox), vbox2); | |
955 gtk_widget_show(vbox2); | |
956 ma->proxy_host_box = vbox2; | |
957 | |
958 hbox = gtk_hbox_new(FALSE, 5); | |
959 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); | |
960 gtk_widget_show(hbox); | |
961 | |
962 label = gtk_label_new_with_mnemonic(_("_Host:")); | |
963 gtk_size_group_add_widget(ma->sg, label); | |
964 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
965 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
966 gtk_widget_show(label); | |
967 entry = gtk_entry_new(); | |
968 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
969 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
970 gtk_entry_set_text(GTK_ENTRY(entry), gpi ? gpi->proxyhost : ""); | |
971 gtk_widget_show(entry); | |
972 ma->proxyhost_entry = entry; | |
973 | |
974 hbox = gtk_hbox_new(FALSE, 5); | |
975 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); | |
976 gtk_widget_show(hbox); | |
977 | |
978 label = gtk_label_new_with_mnemonic(_("Port:")); | |
979 gtk_size_group_add_widget(ma->sg, label); | |
980 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
981 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
982 gtk_widget_show(label); | |
983 entry = gtk_entry_new(); | |
984 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
985 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
986 if(gpi && gpi->proxyport) { | |
987 char buf[128]; | |
988 g_snprintf(buf, sizeof(buf), "%d", gpi->proxyport); | |
989 gtk_entry_set_text(GTK_ENTRY(entry), buf); | |
990 } | |
991 gtk_widget_show(entry); | |
992 ma->proxyport_entry = entry; | |
993 | |
994 hbox = gtk_hbox_new(FALSE, 5); | |
995 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); | |
996 gtk_widget_show(hbox); | |
997 | |
998 label = gtk_label_new_with_mnemonic(_("_User:")); | |
999 gtk_size_group_add_widget(ma->sg, label); | |
1000 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
1001 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
1002 gtk_widget_show(label); | |
1003 entry = gtk_entry_new(); | |
1004 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1005 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
1006 gtk_entry_set_text(GTK_ENTRY(entry), gpi ? gpi->proxyuser : ""); | |
1007 gtk_widget_show(entry); | |
1008 ma->proxyuser_entry = entry; | |
1009 | |
1010 hbox = gtk_hbox_new(FALSE, 5); | |
1011 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); | |
1012 gtk_widget_show(hbox); | |
1013 | |
1014 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); | |
1015 gtk_size_group_add_widget(ma->sg, label); | |
1016 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
1017 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
1018 gtk_widget_show(label); | |
1019 entry = gtk_entry_new(); | |
1020 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); | |
1021 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
1022 gtk_entry_set_text(GTK_ENTRY(entry), gpi ? gpi->proxypass : ""); | |
1023 gtk_widget_show(entry); | |
1024 ma->proxypass_entry = entry; | |
1025 | |
1026 gtk_widget_set_sensitive(vbox2, !(gpi == NULL || gpi->proxytype == PROXY_NONE)); | |
1027 } | |
1028 | |
4491 | 1029 static void show_acct_mod(struct gaim_account *a) |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1030 { |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
1031 /* This is the fucking modify account dialog. I've fucking seperated it into |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
1032 * three fucking frames: |
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
1033 * a fucking Login Options frame, a fucking User Options frame and a fucking |
4491 | 1034 * Protcol Options frame. This fucking removes the two fucking tabs, which |
1035 * were quite fucking uneccessary. Fuck. */ | |
2522
108b3eab22aa
[gaim-migrate @ 2535]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2458
diff
changeset
|
1036 /* -- SeanEgan */ |
3754 | 1037 /* YEAH!! -- ChipX86 */ |
1038 GtkWidget *hbox, *vbox; | |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1039 GtkWidget *button; |
3754 | 1040 GtkWidget *sep; |
1041 GtkSizeGroup *button_sg; | |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1042 |
4491 | 1043 struct mod_account *ma = mod_account_find(a); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1044 |
4491 | 1045 if (!ma) { |
1046 ma = g_new0(struct mod_account, 1); | |
1047 ma->account = a; | |
1048 mod_accounts = g_slist_append(mod_accounts, ma); | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1049 |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1050 if (a) { |
2458
8208e2016d9b
[gaim-migrate @ 2471]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2445
diff
changeset
|
1051 int i; |
4491 | 1052 ma->options = a->options; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1053 if (find_prpl(a->protocol)) |
4491 | 1054 ma->protocol = a->protocol; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1055 else if (protocols) |
4491 | 1056 ma->protocol = ((struct prpl *)protocols->data)->protocol; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1057 else |
4491 | 1058 ma->protocol = -1; |
1059 g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", a->iconfile); | |
2458
8208e2016d9b
[gaim-migrate @ 2471]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2445
diff
changeset
|
1060 for (i = 0; i < 7; i++) |
4491 | 1061 g_snprintf(ma->proto_opt[i], sizeof(ma->proto_opt[i]), "%s", |
2458
8208e2016d9b
[gaim-migrate @ 2471]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2445
diff
changeset
|
1062 a->proto_opt[i]); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1063 } else { |
4491 | 1064 ma->options = OPT_ACCT_REM_PASS; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1065 if (find_prpl(DEFAULT_PROTO)) |
4491 | 1066 ma->protocol = DEFAULT_PROTO; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1067 else if (protocols) |
4491 | 1068 ma->protocol = ((struct prpl *)protocols->data)->protocol; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1069 else |
4491 | 1070 ma->protocol = -1; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1071 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1072 } else { |
4491 | 1073 gtk_widget_show(ma->mod); |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1074 return; |
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1075 } |
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1076 |
4491 | 1077 ma->mod = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
1078 gtk_window_set_role(GTK_WINDOW(ma->mod), "account"); | |
1079 gtk_widget_realize(ma->mod); | |
1080 gtk_window_set_title(GTK_WINDOW(ma->mod), _("Gaim - Modify Account")); | |
1081 gtk_window_set_policy(GTK_WINDOW(ma->mod), FALSE, FALSE, TRUE); /* nothing odd here :) */ | |
1082 g_signal_connect(GTK_OBJECT(ma->mod), "destroy", G_CALLBACK(delmod), ma); | |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1083 |
3754 | 1084 vbox = gtk_vbox_new(FALSE, 6); |
1085 gtk_container_border_width(GTK_CONTAINER(vbox), 6); | |
4491 | 1086 gtk_container_add(GTK_CONTAINER(ma->mod), vbox); |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
1087 gtk_widget_show(vbox); |
3754 | 1088 |
4491 | 1089 ma->main = gtk_vbox_new(FALSE, 12); |
1090 gtk_container_border_width(GTK_CONTAINER(ma->main), 6); | |
1091 gtk_box_pack_start(GTK_BOX(vbox), ma->main, FALSE, FALSE, 0); | |
1092 gtk_widget_show(ma->main); | |
3754 | 1093 |
4491 | 1094 ma->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1095 |
4491 | 1096 generate_login_options(ma, ma->main); |
1097 generate_user_options(ma, ma->main); | |
1098 generate_protocol_options(ma, ma->main); | |
4634 | 1099 generate_proxy_options(ma, ma->main); |
1075
2fe18b2d6105
[gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1074
diff
changeset
|
1100 |
3754 | 1101 hbox = gtk_hbox_new(FALSE, 6); |
1102 gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); | |
1103 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
960 | 1104 |
3754 | 1105 button_sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); |
1106 | |
1107 button = gtk_button_new_from_stock(GTK_STOCK_OK); | |
1108 gtk_size_group_add_widget(button_sg, button); | |
1109 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
4491 | 1110 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(ok_mod), ma); |
3754 | 1111 |
1112 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); | |
1113 gtk_size_group_add_widget(button_sg, button); | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1114 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
4491 | 1115 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(cancel_mod), ma); |
960 | 1116 |
3756
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
1117 sep = gtk_hseparator_new(); |
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
1118 gtk_box_pack_end (GTK_BOX (vbox), sep, FALSE, FALSE, 0); |
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
1119 gtk_widget_show(sep); |
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
1120 |
08742bf8a7be
[gaim-migrate @ 3895]
Christian Hammond <chipx86@chipx86.com>
parents:
3755
diff
changeset
|
1121 gtk_widget_show_all(hbox); |
4491 | 1122 gtk_widget_show(ma->mod); |
960 | 1123 } |
1124 | |
1125 static void add_acct(GtkWidget *w, gpointer d) | |
1126 { | |
1127 show_acct_mod(NULL); | |
1128 } | |
1129 | |
3754 | 1130 static void mod_acct_func(GtkTreeModel *model, GtkTreePath *path, |
1131 GtkTreeIter *iter, gpointer data) | |
1132 { | |
4491 | 1133 struct gaim_account *a; |
3754 | 1134 |
4491 | 1135 gtk_tree_model_get(model, iter, COLUMN_DATA, &a, -1); |
3754 | 1136 |
4491 | 1137 if (a != NULL) |
1138 show_acct_mod(a); | |
3754 | 1139 } |
1140 | |
960 | 1141 static void mod_acct(GtkWidget *w, gpointer d) |
1142 { | |
3754 | 1143 GtkTreeSelection *selection; |
1144 | |
1145 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); | |
1146 | |
1147 gtk_tree_selection_selected_foreach(selection, mod_acct_func, NULL); | |
960 | 1148 } |
1149 | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1150 struct pass_prompt { |
4491 | 1151 struct gaim_account *account; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1152 GtkWidget *win; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1153 GtkWidget *entry; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1154 }; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1155 static GSList *passes = NULL; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1156 |
4491 | 1157 static struct pass_prompt *find_pass_prompt(struct gaim_account *account) |
960 | 1158 { |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1159 GSList *p = passes; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1160 while (p) { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1161 struct pass_prompt *r = p->data; |
4491 | 1162 if (r->account == account) |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1163 return r; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1164 p = p->next; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1165 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1166 return NULL; |
960 | 1167 } |
1168 | |
4483 | 1169 static void pass_callback(GtkDialog *d, gint resp, struct pass_prompt *p) |
960 | 1170 { |
4483 | 1171 if (resp == GTK_RESPONSE_YES) { |
1172 const char *txt = gtk_entry_get_text(GTK_ENTRY(p->entry)); | |
4491 | 1173 g_snprintf(p->account->password, sizeof(p->account->password), "%s", txt); |
1174 serv_login(p->account); | |
4483 | 1175 } |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1176 passes = g_slist_remove(passes, p); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1177 gtk_widget_destroy(p->win); |
4483 | 1178 g_free(p); |
960 | 1179 } |
1180 | |
4491 | 1181 static void do_pass_dlg(struct gaim_account *account) |
960 | 1182 { |
1183 /* we can safely assume that u is not NULL */ | |
4491 | 1184 struct pass_prompt *p = find_pass_prompt(account); |
960 | 1185 GtkWidget *label; |
4483 | 1186 GtkWidget *hbox, *vbox; |
1187 char *labeltext=NULL; | |
4491 | 1188 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_auth.png", NULL); |
4483 | 1189 GtkWidget *img = gtk_image_new_from_file(filename); |
1190 g_free(filename); | |
4491 | 1191 |
960 | 1192 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1193 if (p) { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1194 gtk_widget_show(p->win); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1195 return; |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1196 } |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1197 |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1198 p = g_new0(struct pass_prompt, 1); |
4491 | 1199 p->account = account; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1200 passes = g_slist_append(passes, p); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1201 |
4491 | 1202 p->win = gtk_dialog_new_with_buttons("", NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
4483 | 1203 _("_Login"), GTK_RESPONSE_YES, NULL); |
1204 | |
1205 gtk_dialog_set_default_response (GTK_DIALOG(p->win), GTK_RESPONSE_YES); | |
1206 g_signal_connect(G_OBJECT(p->win), "response", G_CALLBACK(pass_callback), p); | |
960 | 1207 |
4483 | 1208 gtk_container_set_border_width (GTK_CONTAINER(p->win), 6); |
1209 gtk_window_set_resizable(GTK_WINDOW(p->win), FALSE); | |
1210 gtk_dialog_set_has_separator(GTK_DIALOG(p->win), FALSE); | |
1211 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(p->win)->vbox), 12); | |
1212 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(p->win)->vbox), 6); | |
1213 | |
1214 hbox = gtk_hbox_new(FALSE, 12); | |
1215 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(p->win)->vbox), hbox); | |
1216 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
960 | 1217 |
4483 | 1218 vbox = gtk_vbox_new(FALSE, 0); |
1219 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
960 | 1220 |
4491 | 1221 labeltext = g_strdup_printf(_("Please enter your password for %s.\n\n"), |
1222 account->username); | |
4483 | 1223 label = gtk_label_new(labeltext); |
1224 g_free(labeltext); | |
1225 | |
1226 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
1227 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1228 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
4491 | 1229 |
960 | 1230 hbox = gtk_hbox_new(FALSE, 5); |
4483 | 1231 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
1232 label = gtk_label_new_with_mnemonic(_("_Password")); | |
1233 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
960 | 1234 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
1235 | |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1236 p->entry = gtk_entry_new(); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1237 gtk_entry_set_visibility(GTK_ENTRY(p->entry), FALSE); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1238 gtk_box_pack_start(GTK_BOX(hbox), p->entry, FALSE, FALSE, 5); |
4483 | 1239 gtk_label_set_mnemonic_widget(GTK_LABEL(label), p->entry); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1240 gtk_widget_grab_focus(p->entry); |
960 | 1241 |
4413 | 1242 gtk_widget_show_all(p->win); |
960 | 1243 } |
1244 | |
3754 | 1245 static void acct_signin(GtkCellRendererToggle *cell, gchar *path_str, |
1246 gpointer d) | |
960 | 1247 { |
3754 | 1248 GtkTreeModel *model = (GtkTreeModel *)d; |
1249 GtkTreeIter iter; | |
1250 | |
4491 | 1251 struct gaim_account *account = NULL; |
3069 | 1252 struct prpl *p = NULL; |
3754 | 1253 |
1254 gtk_tree_model_get_iter_from_string(model, &iter, path_str); | |
4491 | 1255 gtk_tree_model_get(model, &iter, COLUMN_DATA, &account, -1); |
3754 | 1256 |
4491 | 1257 p = find_prpl(account->protocol); |
1258 if (!account->gc && p && p->login) { | |
1259 struct prpl *p = find_prpl(account->protocol); | |
3789 | 1260 if (p && !(p->options & OPT_PROTO_NO_PASSWORD) && |
4491 | 1261 !(p->options & OPT_PROTO_PASSWORD_OPTIONAL) && !account->password[0]) { |
1262 do_pass_dlg(account); | |
3069 | 1263 } else { |
4491 | 1264 serv_login(account); |
960 | 1265 } |
4491 | 1266 } else if (account->gc) { |
1267 account->gc->wants_to_die = TRUE; | |
1268 signoff(account->gc); | |
3754 | 1269 } else { |
4491 | 1270 if (account->protocol == PROTO_TOC) |
3754 | 1271 do_error_dialog(_("TOC not found."), |
1272 _("You have attempted to login an IM account using the " | |
1273 "TOC protocol. Because this protocol is inferior to " | |
1274 "OSCAR, it is now compiled as a plugin by default. " | |
1275 "To login, edit this account to use OSCAR or load the " | |
1276 "TOC plugin."), GAIM_ERROR); | |
1277 else | |
1278 do_error_dialog(_("Protocol not found."), | |
1279 _("You cannot log this account in; you do not have " | |
1280 "the protocol it uses loaded, or the protocol does " | |
1281 "not have a login function."), GAIM_ERROR); | |
960 | 1282 } |
1283 } | |
3754 | 1284 |
1285 static void acct_autologin(GtkCellRendererToggle *cell, gchar *path_str, | |
1286 gpointer d) | |
2007
948a67a691a6
[gaim-migrate @ 2017]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1956
diff
changeset
|
1287 { |
3867 | 1288 GtkTreeModel *model = (GtkTreeModel *)d; |
1289 GtkTreeIter iter; | |
3754 | 1290 |
4491 | 1291 struct gaim_account *account = NULL; |
3754 | 1292 |
1293 gtk_tree_model_get_iter_from_string(model, &iter, path_str); | |
4491 | 1294 gtk_tree_model_get(model, &iter, COLUMN_DATA, &account, -1); |
3754 | 1295 |
4491 | 1296 account->options ^= OPT_ACCT_AUTO; |
3754 | 1297 |
1298 gtk_list_store_set(GTK_LIST_STORE(model), &iter, | |
4491 | 1299 COLUMN_AUTOLOGIN, (account->options & OPT_ACCT_AUTO), -1); |
3754 | 1300 |
1301 save_prefs(); | |
1302 } | |
1303 | |
4491 | 1304 static void do_del_acct(struct gaim_account *account) |
3754 | 1305 { |
1306 GtkTreeIter iter; | |
4349 | 1307 GSList *grps = groups, *buds; |
3754 | 1308 |
4491 | 1309 if (account->gc) { |
1310 account->gc->wants_to_die = TRUE; | |
1311 signoff(account->gc); | |
2007
948a67a691a6
[gaim-migrate @ 2017]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1956
diff
changeset
|
1312 } |
3754 | 1313 |
4491 | 1314 if (get_iter_from_data(GTK_TREE_VIEW(treeview), account, &iter)) { |
3754 | 1315 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
1316 } | |
1317 | |
4349 | 1318 |
1319 /* remove the buddies for the account we just destroyed */ | |
1320 while(grps) { | |
1321 struct group *g = grps->data; | |
1322 grps = grps->next; | |
1323 buds = g->members; | |
1324 while(buds) { | |
1325 struct buddy *b = buds->data; | |
1326 buds = buds->next; | |
4491 | 1327 if(b->account == account) { |
4349 | 1328 /* sigh, someday we'll get a central gaim_buddy_free() */ |
1329 g->members = g_slist_remove(g->members, b); | |
1330 g_hash_table_destroy(b->settings); | |
1331 g_free(b); | |
1332 } | |
1333 } | |
1334 if(!g->members) { | |
1335 ui_remove_group(g); | |
1336 groups = g_slist_remove(groups, g); | |
1337 g_free(g); | |
1338 } | |
1339 } | |
1340 | |
4491 | 1341 gaim_accounts = g_slist_remove(gaim_accounts, account); |
4349 | 1342 |
1343 gaim_blist_save(); | |
1344 | |
2007
948a67a691a6
[gaim-migrate @ 2017]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1956
diff
changeset
|
1345 save_prefs(); |
948a67a691a6
[gaim-migrate @ 2017]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1956
diff
changeset
|
1346 } |
948a67a691a6
[gaim-migrate @ 2017]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1956
diff
changeset
|
1347 |
3754 | 1348 static void del_acct_func(GtkTreeModel *model, GtkTreePath *path, |
1349 GtkTreeIter *iter, gpointer data) | |
1350 { | |
4491 | 1351 struct gaim_account *account; |
3754 | 1352 |
4491 | 1353 gtk_tree_model_get(model, iter, COLUMN_DATA, &account, -1); |
3754 | 1354 |
4491 | 1355 if (account != NULL) { |
3754 | 1356 char buf[8192]; |
1357 | |
1358 g_snprintf(buf, sizeof(buf), | |
4491 | 1359 _("Are you sure you want to delete %s?"), account->username); |
1360 do_ask_dialog(buf, NULL, account, _("Delete"), do_del_acct, _("Cancel"), NULL, NULL, FALSE); | |
3754 | 1361 } |
1362 } | |
1363 | |
960 | 1364 static void del_acct(GtkWidget *w, gpointer d) |
1365 { | |
3754 | 1366 GtkTreeSelection *selection; |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1367 |
3754 | 1368 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); |
1369 | |
1370 gtk_tree_selection_selected_foreach(selection, del_acct_func, NULL); | |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1371 } |
2007
948a67a691a6
[gaim-migrate @ 2017]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1956
diff
changeset
|
1372 |
960 | 1373 void account_editor(GtkWidget *w, GtkWidget *W) |
1374 { | |
1375 /* please kill me */ | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1376 GtkWidget *vbox; |
960 | 1377 GtkWidget *hbox; |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1378 GtkWidget *sw; |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1379 GtkWidget *button; /* used for many things */ |
3754 | 1380 GtkWidget *sep; |
1381 GtkSizeGroup *sg; | |
960 | 1382 |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1383 if (acctedit) { |
3472 | 1384 gtk_window_present(GTK_WINDOW(acctedit)); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1385 return; |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1386 } |
3764 | 1387 |
960 | 1388 acctedit = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
1389 gtk_window_set_title(GTK_WINDOW(acctedit), _("Gaim - Account Editor")); | |
4074 | 1390 gtk_window_set_role(GTK_WINDOW(acctedit), "accounteditor"); |
960 | 1391 gtk_widget_realize(acctedit); |
3754 | 1392 gtk_widget_set_usize(acctedit, -1, 250); |
3755 | 1393 gtk_window_set_default_size(GTK_WINDOW(acctedit), 550, 250); |
4275 | 1394 g_signal_connect(GTK_OBJECT(acctedit), "delete_event", G_CALLBACK(on_delete_acctedit), W); |
960 | 1395 |
3754 | 1396 vbox = gtk_vbox_new(FALSE, 6); |
1397 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1398 gtk_container_add(GTK_CONTAINER(acctedit), vbox); |
960 | 1399 |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1400 sw = generate_list(); |
3754 | 1401 hbox = gtk_hbox_new(FALSE, 6); |
1402 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 6); | |
1403 | |
4550
972af41f277c
[gaim-migrate @ 4830]
Christian Hammond <chipx86@chipx86.com>
parents:
4493
diff
changeset
|
1404 gtk_box_pack_start(GTK_BOX(hbox), sw, TRUE, TRUE, 0); |
3754 | 1405 |
1406 #if 0 | |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1407 vbox2 = gtk_vbox_new(TRUE, 5); |
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1408 gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0); |
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1409 |
3754 | 1410 button = gtk_button_new_from_stock(GTK_STOCK_REFRESH); |
1411 gtk_button_set_use_stock(GTK_BUTTON(button), FALSE); | |
1412 gtk_button_set_label(GTK_BUTTON(button), "Select All"); | |
1413 // button = picture_button2(acctedit, _("Select All"), tb_refresh_xpm, 2); | |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1414 gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, TRUE, 0); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1415 g_signal_connect_swapped(GTK_OBJECT(button), "clicked", |
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1416 G_CALLBACK(gtk_clist_select_all), GTK_OBJECT(list)); |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1417 |
3754 | 1418 button = gtk_button_new_from_stock(GTK_STOCK_REDO); |
1419 gtk_button_set_use_stock(GTK_BUTTON(button), FALSE); | |
1420 // gtk_button_set_label(button, "Select Autos"); | |
1421 // button = picture_button2(acctedit, _("Select Autos"), tb_redo_xpm, 2); | |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1422 gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, TRUE, 0); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1423 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(sel_auto), NULL); |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1424 |
3754 | 1425 button = gtk_button_new_from_stock(GTK_STOCK_UNDO); |
1426 gtk_button_set_use_stock(GTK_BUTTON(button), FALSE); | |
1427 gtk_button_set_label(GTK_BUTTON(button), "Select None"); | |
1428 // button = picture_button2(acctedit, _("Select None"), tb_undo_xpm, 2); | |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1429 gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, TRUE, 0); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1430 g_signal_connect_swapped(GTK_OBJECT(button), "clicked", |
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1431 G_CALLBACK(gtk_clist_unselect_all), GTK_OBJECT(list)); |
2008
6f049002d963
[gaim-migrate @ 2018]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2007
diff
changeset
|
1432 |
3754 | 1433 #endif |
960 | 1434 |
3754 | 1435 sep = gtk_hseparator_new(); |
1436 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); | |
1437 | |
1438 hbox = gtk_hbox_new(FALSE, 6); | |
1439 gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1440 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
960 | 1441 |
3754 | 1442 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); |
1443 | |
3885 | 1444 button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); |
3754 | 1445 gtk_size_group_add_widget(sg, button); |
1446 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
4275 | 1447 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(on_close_acctedit), W); |
960 | 1448 |
3754 | 1449 button = gtk_button_new_from_stock(GTK_STOCK_DELETE); |
1450 gtk_size_group_add_widget(sg, button); | |
1451 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1452 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(del_acct), NULL); |
3754 | 1453 |
4114 | 1454 button = gaim_pixbuf_button_from_stock(_("_Modify"), GTK_STOCK_PREFERENCES, |
3754 | 1455 GAIM_BUTTON_HORIZONTAL); |
1456 gtk_size_group_add_widget(sg, button); | |
1457 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1458 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(mod_acct), NULL); |
960 | 1459 |
3754 | 1460 button = gtk_button_new_from_stock(GTK_STOCK_ADD); |
1461 gtk_size_group_add_widget(sg, button); | |
1462 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1463 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(add_acct), NULL); |
960 | 1464 |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1465 gtk_widget_show_all(acctedit); |
960 | 1466 } |
1467 | |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1468 struct signon_meter { |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1469 struct gaim_connection *gc; |
3060 | 1470 GtkWidget *button; |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1471 GtkWidget *progress; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1472 GtkWidget *status; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1473 }; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1474 static GSList *meters = NULL; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1475 |
3060 | 1476 GtkWidget* create_meter_pixmap (GtkWidget *widget, struct gaim_connection *gc) |
1477 { | |
1478 GdkPixmap *gdkpixmap; | |
1479 GdkBitmap *mask; | |
1480 GtkWidget *pixmap; | |
3111 | 1481 |
1482 create_prpl_icon (widget, gc, &gdkpixmap, &mask); | |
3060 | 1483 |
1484 pixmap = gtk_pixmap_new (gdkpixmap, mask); | |
1485 gdk_pixmap_unref (gdkpixmap); | |
1486 gdk_bitmap_unref (mask); | |
1487 return pixmap; | |
1488 } | |
1489 | |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1490 static struct signon_meter *find_signon_meter(struct gaim_connection *gc) |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1491 { |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1492 GSList *m = meters; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1493 while (m) { |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1494 if (((struct signon_meter *)m->data)->gc == gc) |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1495 return m->data; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1496 m = m->next; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1497 } |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1498 return NULL; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1499 } |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1500 |
3060 | 1501 void kill_meter(struct signon_meter *meter) { |
1502 gtk_widget_set_sensitive (meter->button, FALSE); | |
4275 | 1503 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(meter->progress), 1); |
3060 | 1504 gtk_statusbar_pop(GTK_STATUSBAR(meter->status), 1); |
4169 | 1505 gtk_statusbar_push(GTK_STATUSBAR(meter->status), 1, _("Done.")); |
3060 | 1506 meter_win->active_count--; |
1507 if (meter_win->active_count == 0) { | |
1508 gtk_widget_destroy(meter_win->window); | |
1509 g_free (meter_win); | |
1510 meter_win = NULL; | |
3554 | 1511 } |
3060 | 1512 } |
1513 | |
1089
f0f5c10cce63
[gaim-migrate @ 1099]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1086
diff
changeset
|
1514 void account_online(struct gaim_connection *gc) |
960 | 1515 { |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1516 struct signon_meter *meter = find_signon_meter(gc); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1517 GList *wins; |
3754 | 1518 GtkTreeIter iter; |
4349 | 1519 GSList *grps, *buds; |
1520 GList *add_buds=NULL; | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1521 GList *l; |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1522 |
4333 | 1523 /* Set the time the account came online */ |
1524 time(&gc->login_time); | |
1525 | |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1526 /* first we hide the login progress meter */ |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1527 if (meter) { |
3060 | 1528 kill_meter(meter); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1529 meters = g_slist_remove(meters, meter); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1530 g_free(meter); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1531 } |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1532 |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1533 /* then we do the buddy list stuff */ |
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1534 if (mainwindow) |
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1535 gtk_widget_hide(mainwindow); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1536 |
2118
fa3dfde4727e
[gaim-migrate @ 2128]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2117
diff
changeset
|
1537 show_buddy_list(); |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1538 |
3367 | 1539 update_privacy_connections(); |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1391
diff
changeset
|
1540 do_away_menu(); |
1499
de0b946e86a4
[gaim-migrate @ 1509]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1474
diff
changeset
|
1541 do_proto_menu(); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1542 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1543 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1544 * XXX This is a hack! Remove this and replace it with a better event |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1545 * notification system. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1546 */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1547 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1548 struct gaim_window *win = (struct gaim_window *)wins->data; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1549 gaim_conversation_update(gaim_window_get_conversation_at(win, 0), |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1550 GAIM_CONV_ACCOUNT_ONLINE); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1551 } |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1552 |
4349 | 1553 redo_buddy_list(); |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1554 gaim_setup(gc); |
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1555 |
4491 | 1556 gc->account->connecting = FALSE; |
3726 | 1557 connecting_count--; |
3570 | 1558 debug_printf("connecting_count: %d\n", connecting_count); |
1559 | |
3517 | 1560 plugin_event(event_signon, gc); |
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1499
diff
changeset
|
1561 system_log(log_signon, gc, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1562 |
1254
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1563 /* away option given? */ |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1564 if (opt_away) { |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1565 away_on_login(opt_away_arg); |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1566 /* don't do it again */ |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1567 opt_away = 0; |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1391
diff
changeset
|
1568 } else if (awaymessage) { |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1391
diff
changeset
|
1569 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message); |
1254
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1570 } |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1571 if (opt_away_arg != NULL) { |
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2364
diff
changeset
|
1572 g_free(opt_away_arg); |
1254
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1573 opt_away_arg = NULL; |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1574 } |
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1575 |
4349 | 1576 /* let the prpl know what buddies we pulled out of the local list */ |
1577 | |
1578 for(grps = groups; grps; grps = grps->next) { | |
1579 struct group *g = grps->data; | |
1580 for(buds = g->members; buds; buds = buds->next) { | |
1581 struct buddy *b = buds->data; | |
4491 | 1582 if(b->account == gc->account) { |
4349 | 1583 add_buds = g_list_append(add_buds, b->name); |
1584 } | |
1585 } | |
1586 } | |
1587 | |
1588 if(add_buds) { | |
1589 serv_add_buddies(gc, add_buds); | |
1590 g_list_free(add_buds); | |
1591 } | |
1592 | |
1593 serv_set_permit_deny(gc); | |
1594 | |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1595 /* everything for the account editor */ |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1596 if (!acctedit) |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1597 return; |
3754 | 1598 |
4491 | 1599 if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->account, &iter)) { |
3754 | 1600 gtk_list_store_set(model, &iter, |
1601 COLUMN_ONLINE, TRUE, | |
1602 COLUMN_PROTOCOL, gc->prpl->name, | |
1603 -1); | |
1604 } | |
1002
1d8f05ea6bdf
[gaim-migrate @ 1012]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
998
diff
changeset
|
1605 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1606 /* Update the conversation windows that use this account. */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1607 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1608 struct gaim_conversation *conv = (struct gaim_conversation *)l->data; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1609 |
4491 | 1610 if (gaim_conversation_get_account(conv) == gc->account) { |
1611 gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT); | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1612 } |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1613 } |
960 | 1614 } |
1615 | |
1616 void account_offline(struct gaim_connection *gc) | |
1617 { | |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1618 struct signon_meter *meter = find_signon_meter(gc); |
3754 | 1619 GtkTreeIter iter; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1620 GList *l; |
3754 | 1621 |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1622 if (meter) { |
3060 | 1623 kill_meter(meter); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1624 meters = g_slist_remove(meters, meter); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1625 g_free(meter); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1626 } |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1627 debug_printf("Disconnecting. user = %p, gc = %p (%p)\n", |
4491 | 1628 gc->account, gc->account->gc, gc); |
1629 gc->account->gc = NULL; /* wasn't that awkward? */ | |
4388 | 1630 |
1631 /* take these buddies out of the edit tree */ | |
1632 build_edit_tree(); | |
1633 | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1634 if (!acctedit) |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1635 return; |
3754 | 1636 |
4491 | 1637 if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->account, &iter)) { |
3754 | 1638 gtk_list_store_set(model, &iter, COLUMN_ONLINE, FALSE, -1); |
1639 } | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1640 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1641 /* Update the conversation windows that use this account. */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1642 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1643 struct gaim_conversation *conv = (struct gaim_conversation *)l->data; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1644 |
4491 | 1645 if (gaim_conversation_get_account(conv) == gc->account) { |
1646 gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT); | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1647 } |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1648 } |
960 | 1649 } |
1650 | |
1651 void auto_login() | |
1652 { | |
4491 | 1653 GSList *accts = gaim_accounts; |
1654 struct gaim_account *a = NULL; | |
960 | 1655 |
4491 | 1656 while (accts) { |
1657 a = (struct gaim_account *)accts->data; | |
1658 if ((a->options & OPT_ACCT_AUTO) && (a->options & OPT_ACCT_REM_PASS)) { | |
980
82c5865f7cfe
[gaim-migrate @ 990]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
977
diff
changeset
|
1659 serv_login(a); |
960 | 1660 } |
4491 | 1661 accts = accts->next; |
960 | 1662 } |
1663 } | |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1664 |
3458 | 1665 /* |
1666 * d:)->-< | |
1667 * | |
1668 * d:O-\-< | |
1669 * | |
1670 * d:D-/-< | |
1671 * | |
1672 * d8D->-< DANCE! | |
1673 */ | |
1674 | |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1675 static void cancel_signon(GtkWidget *button, struct signon_meter *meter) |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1676 { |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1677 meter->gc->wants_to_die = TRUE; |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1678 signoff(meter->gc); |
1089
f0f5c10cce63
[gaim-migrate @ 1099]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1086
diff
changeset
|
1679 } |
f0f5c10cce63
[gaim-migrate @ 1099]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1086
diff
changeset
|
1680 |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1681 static gint meter_destroy(GtkWidget *window, GdkEvent *evt, struct signon_meter *meter) |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1682 { |
1089
f0f5c10cce63
[gaim-migrate @ 1099]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1086
diff
changeset
|
1683 return TRUE; |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1684 } |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1685 |
3060 | 1686 static struct signon_meter *register_meter(struct gaim_connection *gc, GtkWidget *widget, GtkTable *table, gint *rows) |
1687 { | |
1688 GtkWidget *graphic; | |
3378 | 1689 GtkWidget *label; |
3060 | 1690 GtkWidget *nest_vbox; |
1691 GString *name_to_print; | |
1692 struct signon_meter *meter; | |
4491 | 1693 |
3060 | 1694 name_to_print = g_string_new(gc->username); |
4491 | 1695 |
3060 | 1696 meter = g_new0(struct signon_meter, 1); |
4491 | 1697 |
3060 | 1698 (*rows)++; |
1699 gtk_table_resize (table, *rows, 4); | |
4491 | 1700 |
3060 | 1701 graphic = create_meter_pixmap( widget , gc); |
4491 | 1702 |
3060 | 1703 nest_vbox = gtk_vbox_new (FALSE, 0); |
4491 | 1704 |
4225 | 1705 g_string_prepend(name_to_print, _("Signon: ")); |
3378 | 1706 label = gtk_label_new (name_to_print->str); |
4225 | 1707 g_string_free(name_to_print, TRUE); |
3378 | 1708 gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); |
4491 | 1709 |
3060 | 1710 meter->status = gtk_statusbar_new(); |
1711 gtk_widget_set_usize(meter->status, 250, 0); | |
4491 | 1712 |
3060 | 1713 meter->progress = gtk_progress_bar_new (); |
4491 | 1714 |
4114 | 1715 meter->button = gtk_button_new_with_label (_("Cancel")); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1716 g_signal_connect (GTK_OBJECT (meter->button), "clicked", G_CALLBACK (cancel_signon), meter); |
4491 | 1717 |
3060 | 1718 gtk_table_attach (GTK_TABLE (table), graphic, 0, 1, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); |
1719 gtk_table_attach (GTK_TABLE (table), nest_vbox, 1, 2, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
3378 | 1720 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (label), FALSE, FALSE, 0); |
3060 | 1721 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (meter->status), FALSE, FALSE, 0); |
1722 gtk_table_attach (GTK_TABLE (table), meter->progress, 2, 3, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
1723 gtk_table_attach (GTK_TABLE (table), meter->button, 3, 4, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
1724 | |
1725 gtk_widget_show_all (GTK_WIDGET (meter_win->window)); | |
4491 | 1726 |
3060 | 1727 meter_win->active_count++; |
4491 | 1728 |
3060 | 1729 return meter; |
1730 } | |
1731 | |
1732 static void loop_cancel () { | |
1733 GSList *m = meters; | |
1734 struct signon_meter *meter = NULL; | |
1735 | |
1736 while (m) { | |
1737 meter = (struct signon_meter *) (m->data); | |
1738 meter->gc->wants_to_die = TRUE; | |
1739 signoff((struct gaim_connection *) meter->gc); | |
1740 m = meters; | |
1741 } | |
1742 } | |
1743 | |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1744 void set_login_progress(struct gaim_connection *gc, float howfar, char *message) |
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1172
diff
changeset
|
1745 { |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1746 struct signon_meter *meter = find_signon_meter(gc); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1747 |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1748 if (mainwindow) |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1749 gtk_widget_hide(mainwindow); |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1750 |
3060 | 1751 if (!meter_win) { |
1752 GtkWidget *cancel_button; | |
1753 GtkWidget *vbox; | |
3067 | 1754 |
3060 | 1755 meter_win = g_new0(struct meter_window, 1); |
1756 meter_win->rows=0; | |
1757 | |
1758 meter_win->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); | |
1759 GAIM_DIALOG(meter_win->window); | |
1760 gtk_window_set_policy(GTK_WINDOW(meter_win->window), 0, 0, 1); | |
4074 | 1761 gtk_window_set_role(GTK_WINDOW(meter_win->window), "signon"); |
3060 | 1762 gtk_container_set_border_width(GTK_CONTAINER(meter_win->window), 5); |
4169 | 1763 gtk_window_set_title (GTK_WINDOW (meter_win->window), _("Gaim Account Signon")); |
3060 | 1764 gtk_widget_realize(meter_win->window); |
1765 | |
1766 vbox = gtk_vbox_new (FALSE, 0); | |
1767 gtk_container_add (GTK_CONTAINER (meter_win->window), GTK_WIDGET (vbox)); | |
1768 | |
1769 meter_win->table = (GtkTable *) gtk_table_new (1 , 4, FALSE); | |
1770 gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (meter_win->table), FALSE, FALSE, 0); | |
1771 gtk_container_set_border_width (GTK_CONTAINER (meter_win->table), 5); | |
1772 gtk_table_set_row_spacings (GTK_TABLE (meter_win->table), 5); | |
1773 gtk_table_set_col_spacings (GTK_TABLE (meter_win->table), 10); | |
1774 | |
4114 | 1775 cancel_button = gtk_button_new_with_label (_("Cancel All")); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1776 g_signal_connect_swapped (GTK_OBJECT (cancel_button), "clicked", G_CALLBACK (loop_cancel), NULL); |
3060 | 1777 gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (cancel_button), FALSE, FALSE, 0); |
1778 | |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1779 g_signal_connect (GTK_OBJECT (meter_win->window), "delete_event", G_CALLBACK (meter_destroy), NULL); |
3060 | 1780 } |
1781 | |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1782 if (!meter) { |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1783 char buf[256]; |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1784 |
3060 | 1785 meter = register_meter(gc, GTK_WIDGET (meter_win->window), GTK_TABLE (meter_win->table), (gint *) &meter_win->rows); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1786 meter->gc = gc; |
2403
8555e48c02df
[gaim-migrate @ 2416]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2402
diff
changeset
|
1787 meters = g_slist_append(meters, meter); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1788 |
3572 | 1789 g_snprintf(buf, sizeof(buf), "%s Signing On (using %s)", gc->username, gc->prpl->name); |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1790 } |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1791 |
4275 | 1792 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(meter->progress), howfar / LOGIN_STEPS); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1793 gtk_statusbar_pop(GTK_STATUSBAR(meter->status), 1); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1794 gtk_statusbar_push(GTK_STATUSBAR(meter->status), 1, message); |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1795 } |
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1796 |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1797 struct kick_dlg { |
4491 | 1798 struct gaim_account *account; |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1799 GtkWidget *dlg; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1800 }; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1801 static GSList *kicks = NULL; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1802 |
4491 | 1803 static struct kick_dlg *find_kick_dlg(struct gaim_account *account) |
1817
b367beee6448
[gaim-migrate @ 1827]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1772
diff
changeset
|
1804 { |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1805 GSList *k = kicks; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1806 while (k) { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1807 struct kick_dlg *d = k->data; |
4491 | 1808 if (d->account == account) |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1809 return d; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1810 k = k->next; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1811 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1812 return NULL; |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1813 } |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1814 |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1815 static void set_kick_null(GtkObject *obj, struct kick_dlg *k) |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1816 { |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1817 kicks = g_slist_remove(kicks, k); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1818 g_free(k); |
1817
b367beee6448
[gaim-migrate @ 1827]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1772
diff
changeset
|
1819 } |
b367beee6448
[gaim-migrate @ 1827]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1772
diff
changeset
|
1820 |
2956 | 1821 /* |
1822 * Common code for hide_login_progress(), and hide_login_progress_info() | |
1823 */ | |
1824 static void hide_login_progress_common(struct gaim_connection *gc, | |
1825 char *details, | |
1826 char *title, | |
1827 char *prologue) | |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1828 { |
4617 | 1829 gchar *buf; |
4491 | 1830 struct kick_dlg *k = find_kick_dlg(gc->account); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1831 struct signon_meter *meter = find_signon_meter(gc); |
4617 | 1832 buf = g_strdup_printf(_("%s\n%s: %s"), full_date(), prologue, details); |
2442
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1833 if (k) |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1834 gtk_widget_destroy(k->dlg); |
895e2469cb3a
[gaim-migrate @ 2455]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2438
diff
changeset
|
1835 k = g_new0(struct kick_dlg, 1); |
4491 | 1836 k->account = gc->account; |
3427 | 1837 k->dlg = do_error_dialog(title, buf, GAIM_ERROR); |
2709
df0832a9ccec
[gaim-migrate @ 2722]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2707
diff
changeset
|
1838 kicks = g_slist_append(kicks, k); |
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4114
diff
changeset
|
1839 g_signal_connect(GTK_OBJECT(k->dlg), "destroy", G_CALLBACK(set_kick_null), k); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1840 if (meter) { |
3060 | 1841 kill_meter(meter); |
2402
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1842 meters = g_slist_remove(meters, meter); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1843 g_free(meter); |
6e3dc0b3b9b1
[gaim-migrate @ 2415]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2397
diff
changeset
|
1844 } |
4617 | 1845 g_free(buf); |
988
9523b772e546
[gaim-migrate @ 998]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
984
diff
changeset
|
1846 } |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
1847 |
2956 | 1848 void hide_login_progress(struct gaim_connection *gc, char *why) |
1849 { | |
4617 | 1850 gchar *buf; |
2956 | 1851 |
4617 | 1852 plugin_event(event_error, gc, why); |
1853 buf = g_strdup_printf(_("%s was unable to sign on"), gc->username); | |
2956 | 1854 hide_login_progress_common(gc, why, _("Signon Error"), buf); |
4617 | 1855 g_free(buf); |
2956 | 1856 } |
1857 | |
1858 /* | |
1859 * Like hide_login_progress(), but for informational, not error/warning, | |
1860 * messages. | |
1861 * | |
1862 */ | |
1863 void hide_login_progress_notice(struct gaim_connection *gc, char *why) | |
1864 { | |
1865 hide_login_progress_common(gc, why, _("Notice"), gc->username); | |
1866 } | |
1867 | |
3074 | 1868 /* |
1869 * Like hide_login_progress(), but for non-signon error messages. | |
1870 * | |
1871 */ | |
1872 void hide_login_progress_error(struct gaim_connection *gc, char *why) | |
1873 { | |
1874 char buf[2048]; | |
4617 | 1875 |
1876 plugin_event(event_error, gc, why); | |
3074 | 1877 g_snprintf(buf, sizeof(buf), _("%s has been signed off"), gc->username); |
1878 hide_login_progress_common(gc, why, _("Connection Error"), buf); | |
1879 } | |
1880 | |
2559
e49ab50736bf
[gaim-migrate @ 2572]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2525
diff
changeset
|
1881 void signoff_all() |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1882 { |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1883 GSList *c = connections; |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1884 struct gaim_connection *g = NULL; |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1885 |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1886 while (c) { |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1887 g = (struct gaim_connection *)c->data; |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1888 g->wants_to_die = TRUE; |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1889 signoff(g); |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1890 c = connections; |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1891 } |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1892 } |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1893 |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1894 void signoff(struct gaim_connection *gc) |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1895 { |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1896 GList *wins; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1897 |
3510 | 1898 /* UI stuff */ |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1899 /* CONV XXX |
3510 | 1900 convo_menu_remove(gc); |
1901 remove_icon_data(gc); | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1902 */ |
3510 | 1903 |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1904 /* core stuff */ |
3510 | 1905 /* remove this here so plugins get a sensible count of connections */ |
1906 connections = g_slist_remove(connections, gc); | |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1907 debug_printf("date: %s\n", full_date()); |
3517 | 1908 plugin_event(event_signoff, gc); |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1909 system_log(log_signoff, gc, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); |
3510 | 1910 /* set this in case the plugin died before really connecting. |
1911 do it after calling the plugins so they can determine if | |
1912 this user was ever on-line or not */ | |
4491 | 1913 if (gc->account->connecting) { |
1914 gc->account->connecting = FALSE; | |
3726 | 1915 connecting_count--; |
3517 | 1916 } |
3570 | 1917 debug_printf("connecting_count: %d\n", connecting_count); |
3510 | 1918 serv_close(gc); |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1919 |
3510 | 1920 /* more UI stuff */ |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1921 redo_buddy_list(); |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1922 do_away_menu(); |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1923 do_proto_menu(); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1924 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1925 /* |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1926 * XXX This is a hack! Remove this and replace it with a better event |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1927 * notification system. |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1928 */ |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1929 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1930 struct gaim_window *win = (struct gaim_window *)wins->data; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1931 gaim_conversation_update(gaim_window_get_conversation_at(win, 0), |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1932 GAIM_CONV_ACCOUNT_OFFLINE); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1933 } |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1934 |
3367 | 1935 update_privacy_connections(); |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1936 |
3510 | 1937 /* in, out, shake it all about */ |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1938 if (connections) |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1939 return; |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1940 |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1941 destroy_all_dialogs(); |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1942 destroy_buddy(); |
3472 | 1943 |
2380
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1944 show_login(); |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1945 } |
6f83c22d9e70
[gaim-migrate @ 2393]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
1946 |
4491 | 1947 struct gaim_account *gaim_account_new(const char *name, int proto, int opts) |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
1948 { |
4491 | 1949 struct gaim_account *account = g_new0(struct gaim_account, 1); |
1950 g_snprintf(account->username, sizeof(account->username), "%s", name); | |
1951 g_snprintf(account->user_info, sizeof(account->user_info), "%s", DEFAULT_INFO); | |
1952 account->protocol = proto; | |
1953 account->options = opts; | |
1954 account->permit = NULL; | |
1955 account->deny = NULL; | |
1956 gaim_accounts = g_slist_append(gaim_accounts, account); | |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
1957 |
3754 | 1958 if (treeview) { |
1959 GtkTreeIter iter; | |
1960 | |
1961 gtk_list_store_append(model, &iter); | |
1962 gtk_list_store_set(model, &iter, | |
4491 | 1963 COLUMN_SCREENNAME, account->username, |
1964 COLUMN_ONLINE, (account->gc ? TRUE : FALSE), | |
1965 COLUMN_AUTOLOGIN, (account->options & OPT_ACCT_AUTO), | |
1966 COLUMN_PROTOCOL, proto_name(account->protocol), | |
1967 COLUMN_DATA, account, | |
3754 | 1968 -1); |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
1969 } |
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
1970 |
4491 | 1971 return account; |
1355
04874e92af24
[gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1261
diff
changeset
|
1972 } |