Mercurial > pidgin
annotate src/aim.c @ 133:e277d5f0c1dd
[gaim-migrate @ 143]
Let's see if I can remember everything I did:
- Fixed a bug I let slip. If you choose the new option to not play
login sounds when you log in, and then quit before the timeout is
up, it would save that you didn't want login sounds at all.
- Added two new plugin events: event_away and event_buddy_away.
- Made GtkWidget *imaway in away.c and void play(uchar *, int) in
sound.c not static any more (though not referenced in gaim.h).
This is so plugins can use those (and not have to worry about
writing their own sound code).
- Wrote a quick plugin to auto-iconify windows when you go away. I
had just been locally patching my own copy, since I figured it wasn't
worth including as an option. It also demonstrates some of the issues
of deciding between USE_APPLET and not. Perhaps plugins are the way
to go with some things that would otherwise have been options (for
example, the Lag-O-Meter is one of those things that could possibly
have been a plugin instead of hard-coded in).
I think that's everything.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 19 Apr 2000 02:04:30 +0000 |
parents | 45bcfa3b584c |
children | e8ea1e2fdf0c |
rev | line source |
---|---|
1 | 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 | |
22 #ifdef USE_THEMES | |
23 #include <gnome.h> | |
24 #else | |
25 #ifdef USE_APPLET | |
26 #include "gnome_applet_mgr.h" | |
27 #include <gnome.h> | |
28 #endif /* USE_APPLET */ | |
29 #endif /* USE_THEMES */ | |
30 #include <gtk/gtk.h> | |
31 #include <gdk/gdkx.h> | |
32 #include <unistd.h> | |
33 #include <netinet/in.h> | |
34 #include <arpa/inet.h> | |
35 #include <sys/wait.h> | |
36 #include <stdio.h> | |
37 #include <string.h> | |
38 #include <stdarg.h> | |
39 #include <stdlib.h> | |
40 #include "gaim.h" | |
41 #ifndef USE_APPLET | |
42 #include "pixmaps/logo.xpm" | |
43 #endif /* USE_APPLET */ | |
44 | |
45 static GtkWidget *name; | |
46 static GtkWidget *pass; | |
47 static GtkWidget *signon; | |
48 static GtkWidget *cancel; | |
49 static GtkWidget *progress; | |
50 static GtkWidget *notice; | |
51 | |
52 GList *permit = NULL; | |
53 GList *deny = NULL; | |
54 GList *log_conversations = NULL; | |
55 GList *buddy_pounces = NULL; | |
56 GList *away_messages = NULL; | |
57 GList *groups = NULL; | |
58 GList *buddy_chats = NULL; | |
59 GList *conversations = NULL; | |
60 GList *chat_rooms = NULL; | |
61 | |
62 GtkWidget *mainwindow = NULL; | |
63 | |
64 char toc_addy[16]; | |
26 | 65 char *quad_addr = NULL; |
1 | 66 |
67 | |
68 void cancel_logon(void) | |
69 { | |
70 #ifdef USE_APPLET | |
71 set_applet_draw_closed(); | |
72 AppletCancelLogon(); | |
73 gtk_widget_hide(mainwindow); | |
74 #else | |
75 exit(0); | |
76 #endif /* USE_APPLET */ | |
77 } | |
78 | |
79 void set_login_progress(int howfar, char *whattosay) | |
80 { | |
81 gtk_progress_bar_update(GTK_PROGRESS_BAR(progress), | |
82 ((float)howfar / (float)LOGIN_STEPS)); | |
83 gtk_statusbar_pop(GTK_STATUSBAR(notice), 1); | |
84 gtk_statusbar_push(GTK_STATUSBAR(notice), 1, whattosay); | |
85 | |
86 while (gtk_events_pending()) | |
87 gtk_main_iteration(); | |
88 | |
89 /* Why do I need these? */ | |
90 usleep(10); | |
91 while (gtk_events_pending()) | |
92 gtk_main_iteration(); | |
93 | |
94 } | |
95 | |
96 void hide_login_progress(char *why) | |
97 { | |
98 gtk_progress_bar_update(GTK_PROGRESS_BAR(progress), | |
99 0); | |
100 gtk_statusbar_pop(GTK_STATUSBAR(notice), 1); | |
101 gtk_statusbar_push(GTK_STATUSBAR(notice), 1, why); | |
102 | |
103 while (gtk_events_pending()) | |
104 gtk_main_iteration(); | |
105 | |
106 /* Why do I need these? */ | |
107 usleep(10); | |
108 while (gtk_events_pending()) | |
109 gtk_main_iteration(); | |
110 } | |
111 | |
109
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
112 static int snd_tmout; |
133
e277d5f0c1dd
[gaim-migrate @ 143]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
109
diff
changeset
|
113 int logins_not_muted = 1; |
109
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
114 static void sound_timeout() { |
133
e277d5f0c1dd
[gaim-migrate @ 143]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
109
diff
changeset
|
115 logins_not_muted = 1; |
109
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
116 gtk_timeout_remove(snd_tmout); |
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
117 } |
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
118 |
1 | 119 void dologin(GtkWidget *widget, GtkWidget *w) |
120 { | |
84 | 121 static gboolean running = FALSE; |
1 | 122 char *username = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(name)->entry)); |
123 char *password = gtk_entry_get_text(GTK_ENTRY(pass)); | |
124 | |
125 if (query_state() != STATE_OFFLINE) | |
126 return; | |
127 | |
128 if (!strlen(username)) { | |
129 hide_login_progress("Please enter your logon"); | |
130 return; | |
131 } | |
132 if (!strlen(password)) { | |
133 hide_login_progress("You must give your password"); | |
134 return; | |
135 } | |
136 | |
137 #ifdef USE_APPLET | |
138 set_applet_draw_closed(); | |
139 setUserState(signing_on); | |
140 #endif /* USE_APPLET */ | |
141 | |
84 | 142 if (running) return; |
143 running = TRUE; | |
1 | 144 |
84 | 145 if (serv_login(username, password) < 0) { |
146 running = FALSE; | |
1 | 147 return; |
84 | 148 } |
1 | 149 |
109
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
150 if (sound_options & OPT_SOUND_LOGIN && |
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
151 sound_options & OPT_SOUND_SILENT_SIGNON) { |
133
e277d5f0c1dd
[gaim-migrate @ 143]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
109
diff
changeset
|
152 logins_not_muted = 0; |
109
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
153 snd_tmout = gtk_timeout_add(10000, (GtkFunction)sound_timeout, |
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
154 NULL); |
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
155 } |
45bcfa3b584c
[gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
156 |
84 | 157 #ifdef USE_APPLET |
158 applet_widget_unregister_callback(APPLET_WIDGET(applet),"signon"); | |
159 applet_widget_register_callback(APPLET_WIDGET(applet), | |
160 "buddy", | |
161 _("Buddy List"), | |
107
55faf2e3a134
[gaim-migrate @ 117]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
97
diff
changeset
|
162 (AppletCallbackFunc)createOnlinePopup, |
84 | 163 NULL); |
164 applet_widget_register_callback(APPLET_WIDGET(applet), | |
165 "signoff", | |
166 _("Signoff"), | |
167 signoff, | |
168 NULL); | |
169 #endif | |
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
170 |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
171 #ifdef GAIM_PLUGINS |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
172 { |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
173 GList *c = callbacks; |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
174 struct gaim_callback *g; |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
175 void (*function)(void *); |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
176 while (c) { |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
177 g = (struct gaim_callback *)c->data; |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
178 if (g->event == event_signon && g->function != NULL) { |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
179 function = g->function; |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
180 (*function)(g->data); |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
181 } |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
182 c = c->next; |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
183 } |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
184 } |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
185 #endif |
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
85
diff
changeset
|
186 |
84 | 187 running = FALSE; |
188 return; | |
1 | 189 } |
190 | |
191 | |
192 | |
193 | |
194 void doenter(GtkWidget *widget, GtkWidget *w) | |
195 { | |
196 if (widget == name) { | |
197 gtk_entry_set_text(GTK_ENTRY(pass),""); | |
198 gtk_entry_select_region(GTK_ENTRY(GTK_COMBO(name)->entry), 0, 0); | |
199 gtk_window_set_focus(GTK_WINDOW(mainwindow), pass); | |
200 } else if (widget == pass) { | |
201 gtk_window_set_focus(GTK_WINDOW(mainwindow), signon); | |
202 } else { | |
203 g_print("what did you press enter on?\n"); | |
204 } | |
205 | |
206 } | |
207 | |
208 | |
209 static void combo_changed(GtkWidget *w, GtkWidget *combo) | |
210 { | |
211 char *txt = gtk_editable_get_chars(GTK_EDITABLE(GTK_COMBO(combo)->entry), 0, -1); | |
212 struct aim_user *u; | |
213 | |
25 | 214 if (!(general_options & OPT_GEN_REMEMBER_PASS)) { |
215 g_free(txt); | |
1 | 216 return; |
25 | 217 } |
218 | |
1 | 219 u = find_user(txt); |
220 | |
221 if (u != NULL) { | |
222 gtk_entry_set_text(GTK_ENTRY(pass), u->password); | |
223 } else { | |
224 gtk_entry_set_text(GTK_ENTRY(pass), ""); | |
225 } | |
25 | 226 |
227 g_free(txt); | |
1 | 228 return; |
229 } | |
230 | |
231 static GList *combo_user_names() | |
232 { | |
233 GList *usr = aim_users; | |
234 GList *tmp = NULL; | |
235 struct aim_user *u; | |
236 | |
237 | |
238 if (!usr) | |
239 return g_list_append(NULL, "<unknown>"); | |
240 | |
241 while(usr) { | |
242 u = (struct aim_user *)usr->data; | |
243 tmp = g_list_append(tmp, g_strdup(u->username)); | |
244 usr = usr->next; | |
245 | |
246 } | |
247 | |
248 return tmp; | |
249 } | |
250 | |
251 | |
252 | |
253 void show_login() | |
254 { | |
255 GtkWidget *options; | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
256 #ifdef GAIM_PLUGINS |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
257 GtkWidget *plugs; |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
258 #endif |
1 | 259 GtkWidget *reg; |
260 GtkWidget *bbox; | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
261 GtkWidget *hbox; |
1 | 262 GtkWidget *sbox; |
263 GtkWidget *label; | |
264 GtkWidget *table; | |
265 GtkWidget *remember; | |
266 | |
267 #ifndef USE_APPLET | |
268 GtkWidget *pmw; | |
269 GdkPixmap *pm; | |
270 GtkStyle *style; | |
271 GdkBitmap *mask; | |
272 #endif /* USE_APPLET */ | |
273 | |
274 if (mainwindow) { | |
275 gtk_widget_show(mainwindow); | |
276 return; | |
277 } | |
278 | |
279 mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
280 signon = gtk_button_new_with_label("Signon"); | |
281 cancel = gtk_button_new_with_label("Cancel"); | |
282 reg = gtk_button_new_with_label("Register"); | |
283 options = gtk_button_new_with_label("Options"); | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
284 #ifdef GAIM_PLUGINS |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
285 plugs = gtk_button_new_with_label("Plugins"); |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
286 #endif |
1 | 287 table = gtk_table_new(8, 2, FALSE); |
288 name = gtk_combo_new(); | |
289 pass = gtk_entry_new(); | |
290 notice = gtk_statusbar_new(); | |
291 progress = gtk_progress_bar_new(); | |
292 | |
293 gtk_combo_set_popdown_strings(GTK_COMBO(name), combo_user_names()); | |
294 | |
295 /* Make the buttons do stuff */ | |
296 /* Clicking the button initiates a login */ | |
297 gtk_signal_connect(GTK_OBJECT(signon), "clicked", | |
298 GTK_SIGNAL_FUNC(dologin), mainwindow); | |
299 gtk_signal_connect(GTK_OBJECT(cancel), "clicked", | |
300 GTK_SIGNAL_FUNC(cancel_logon), mainwindow); | |
301 /* Allow user to change prefs before logging in */ | |
302 gtk_signal_connect(GTK_OBJECT(options), "clicked", | |
303 GTK_SIGNAL_FUNC(show_prefs), NULL); | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
304 #ifdef GAIM_PLUGINS |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
305 /* Allow user to control plugins before logging in */ |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
306 gtk_signal_connect(GTK_OBJECT(plugs), "clicked", |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
307 GTK_SIGNAL_FUNC(show_plugins), NULL); |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
308 #endif |
1 | 309 |
310 /* Register opens the right URL */ | |
311 gtk_signal_connect(GTK_OBJECT(reg), "clicked", | |
312 GTK_SIGNAL_FUNC(open_url), "http://www.aol.com/aim"); | |
313 /* Enter in the username clears the password and sets | |
314 the pointer in the password field */ | |
315 gtk_signal_connect(GTK_OBJECT(GTK_COMBO(name)->entry), "activate", | |
316 GTK_SIGNAL_FUNC(doenter), mainwindow); | |
317 | |
318 gtk_signal_connect(GTK_OBJECT(GTK_COMBO(name)->entry), "changed", | |
319 GTK_SIGNAL_FUNC(combo_changed), name); | |
320 | |
321 gtk_signal_connect(GTK_OBJECT(pass), "activate", | |
322 GTK_SIGNAL_FUNC(doenter), mainwindow); | |
323 gtk_signal_connect(GTK_OBJECT(mainwindow), "delete_event", | |
324 GTK_SIGNAL_FUNC(cancel_logon), mainwindow); | |
325 /* Homogenous spacing, 10 padding */ | |
326 bbox = gtk_hbox_new(TRUE, 10); | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
327 hbox = gtk_hbox_new(TRUE, 10); |
1 | 328 sbox = gtk_vbox_new(TRUE, 10); |
329 | |
330 gtk_box_pack_start(GTK_BOX(bbox), reg, TRUE, TRUE, 0); | |
331 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); | |
332 gtk_box_pack_start(GTK_BOX(bbox), signon, TRUE, TRUE, 0); | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
333 |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
334 gtk_box_pack_start(GTK_BOX(hbox), options, TRUE, TRUE, 0); |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
335 #ifdef GAIM_PLUGINS |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
336 gtk_box_pack_start(GTK_BOX(hbox), plugs, TRUE, TRUE, 0); |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
337 #endif |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
338 |
1 | 339 gtk_box_pack_start(GTK_BOX(sbox), bbox, TRUE, TRUE, 0); |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
340 gtk_box_pack_start(GTK_BOX(sbox), hbox, TRUE, TRUE, 0); |
1 | 341 |
342 /* Labels for selectors and text boxes */ | |
343 #if 0 | |
344 label = gtk_label_new("TOC: "); | |
345 gtk_table_attach(GTK_TABLE(table), label, 0,1,1,2,0,0, 5, 5); | |
346 gtk_widget_show(label); | |
347 #endif | |
348 label = gtk_label_new("Screen Name: "); | |
349 gtk_table_attach(GTK_TABLE(table), label, 0,1,2,3,0,0, 5, 5); | |
350 gtk_widget_show(label); | |
351 label = gtk_label_new("Password: "); | |
352 gtk_table_attach(GTK_TABLE(table), label, 0,1,3,4,0,0, 5, 5); | |
353 gtk_widget_show(label); | |
354 remember = gtk_check_button_new_with_label("Remember Password"); | |
355 gtk_table_attach(GTK_TABLE(table), remember, 0,2,4,5,0,0, 5, 5); | |
356 gtk_widget_show(remember); | |
357 | |
358 gtk_widget_show(options); | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
359 #ifdef GAIM_PLUGINS |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
360 gtk_widget_show(plugs); |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
361 #endif |
1 | 362 |
363 /* Adjust sizes of inputs */ | |
364 gtk_widget_set_usize(name,95,0); | |
365 gtk_widget_set_usize(pass,95,0); | |
366 | |
367 | |
368 /* Status and label */ | |
369 gtk_widget_show(notice); | |
370 | |
371 gtk_widget_set_usize(progress,150,0); | |
372 | |
373 gtk_widget_show(progress); | |
374 | |
375 gtk_table_attach(GTK_TABLE(table), progress, 0, 2, 6, 7, 0, 0, 5, 5); | |
376 gtk_widget_set_usize(GTK_STATUSBAR(notice)->label, 150, 0); | |
377 gtk_table_attach(GTK_TABLE(table), notice, 0, 2, 8, 9, 0, 0, 5, 5); | |
378 | |
379 /* Attach the buttons at the bottom */ | |
380 gtk_widget_show(signon); | |
381 gtk_widget_show(cancel); | |
382 gtk_widget_show(reg); | |
383 gtk_widget_show(bbox); | |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
384 gtk_widget_show(hbox); |
1 | 385 gtk_widget_show(sbox); |
386 gtk_table_attach(GTK_TABLE(table), sbox, 0,2,7,8,0,0, 5, 5); | |
387 | |
388 /* Text fields */ | |
389 | |
390 gtk_table_attach(GTK_TABLE(table),name,1,2,2,3,0,0,5,5); | |
391 gtk_widget_show(name); | |
392 gtk_table_attach(GTK_TABLE(table),pass,1,2,3,4,0,0,5,5); | |
393 gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE); | |
394 gtk_widget_show(pass); | |
395 | |
396 gtk_container_border_width(GTK_CONTAINER(sbox), 10); | |
397 | |
398 gtk_container_add(GTK_CONTAINER(mainwindow),table ); | |
399 | |
400 gtk_widget_show(table); | |
401 gtk_window_set_title(GTK_WINDOW(mainwindow),"Gaim - Login"); | |
402 | |
403 | |
404 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(remember), (general_options & OPT_GEN_REMEMBER_PASS)); | |
405 | |
406 if (current_user) { | |
85 | 407 GList *all = combo_user_names(); |
408 GList *srch = g_list_find(all, (void *)current_user->username); | |
409 int length = g_list_length(all) - g_list_length(srch); | |
410 g_list_free(srch); | |
411 g_list_free(all); | |
412 | |
413 gtk_combo_set_value_in_list(GTK_COMBO(name), length, 0); | |
1 | 414 if ((general_options & OPT_GEN_REMEMBER_PASS)) { |
415 gtk_entry_set_text(GTK_ENTRY(pass), current_user->password); | |
416 } | |
417 | |
418 | |
419 gtk_widget_grab_focus(signon); | |
420 } else | |
421 gtk_widget_grab_focus(name); | |
422 | |
423 | |
424 | |
425 gtk_signal_connect(GTK_OBJECT(remember), "clicked", GTK_SIGNAL_FUNC(set_general_option), (int *)OPT_GEN_REMEMBER_PASS); | |
426 | |
427 | |
428 gtk_widget_realize(mainwindow); | |
429 | |
430 #ifndef USE_APPLET | |
431 /* Logo at the top */ | |
432 style = gtk_widget_get_style(mainwindow); | |
433 pm = gdk_pixmap_create_from_xpm_d(mainwindow->window, &mask, | |
434 &style->bg[GTK_STATE_NORMAL], (gchar **)aol_logo); | |
435 pmw = gtk_pixmap_new( pm, mask); | |
436 gtk_table_attach(GTK_TABLE(table), pmw, 0,2,0,1,0,0,5,5); | |
437 gtk_widget_show(pmw); | |
438 #endif /* USE_APPLET */ | |
439 | |
440 | |
441 aol_icon(mainwindow->window); | |
442 #ifndef _WIN32 | |
443 gdk_window_set_group(mainwindow->window, mainwindow->window); | |
444 #endif | |
445 | |
446 | |
447 gtk_widget_show(mainwindow); | |
448 | |
449 if((general_options & OPT_GEN_AUTO_LOGIN) && | |
450 (general_options & OPT_GEN_REMEMBER_PASS)) { | |
451 dologin(signon, NULL); | |
452 } | |
453 } | |
454 | |
455 | |
456 int main(int argc, char *argv[]) | |
457 { | |
458 #ifdef USE_APPLET | |
459 InitAppletMgr( argc, argv ); | |
460 #elif defined USE_THEMES | |
461 gnome_init("GAIM",NULL,argc,argv); | |
462 #else | |
463 gtk_init(&argc, &argv); | |
464 #endif /* USE_THEMES */ | |
465 | |
466 | |
467 set_defaults(); | |
468 load_prefs(); | |
469 | |
470 #ifdef USE_APPLET | |
471 applet_widget_register_callback(APPLET_WIDGET(applet), | |
472 "prefs", | |
473 _("Preferences"), | |
474 show_prefs, | |
475 NULL); | |
476 applet_widget_register_callback(APPLET_WIDGET(applet), | |
477 "signon", | |
478 _("Signon"), | |
479 applet_show_login, | |
480 NULL); | |
97
5b4b7aa8dd9a
[gaim-migrate @ 107]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
96
diff
changeset
|
481 #ifdef GAIM_PLUGINS |
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
482 applet_widget_register_callback(APPLET_WIDGET(applet), |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
483 "plugins", |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
484 _("Plugins"), |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
485 GTK_SIGNAL_FUNC(show_plugins), |
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
486 NULL); |
97
5b4b7aa8dd9a
[gaim-migrate @ 107]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
96
diff
changeset
|
487 #endif /* GAIM_PLUGINS */ |
1 | 488 |
489 if((general_options & OPT_GEN_AUTO_LOGIN) && | |
490 (general_options & OPT_GEN_REMEMBER_PASS)) { | |
491 | |
492 applet_show_login(APPLET_WIDGET(applet), NULL); | |
493 } | |
82 | 494 |
495 update_pixmaps(); | |
1 | 496 |
497 applet_widget_gtk_main(); | |
498 #else | |
499 | |
500 | |
501 show_login(); | |
502 gtk_main(); | |
503 | |
504 #endif /* USE_APPLET */ | |
505 | |
506 return 0; | |
507 | |
508 } |