Mercurial > pidgin
annotate src/aim.c @ 142:fbabd28795d2
[gaim-migrate @ 152]
Added auto-load for plugins. Rob pointed out this might be a bad idea: what
if plugins modify the buddy list; the plugins are loaded before signon, thus
before the buddy list appears. That would cause errors; then when the list
does appear, the plugin doesn't work right because it didn't start off well.
My response:
EWarmenhoven: there are ways around that
EWarmenhoven: in gaim_plugin_init you could have:
EWarmenhoven:
if (blist) {
do_the_normal_thing();
} else {
gaim_signal_connect(handle, event_signon, now_the_buddy_list_is_here, NULL);
}
EWarmenhoven: and actually, that's the way it should be for all plugins that
modify the buddy list, because there will be at least one point during
execution that it could be loaded when the person is signed off (and i'm not
talking about when they first start it up, i'm talking about when they choose
'sign off' instead of 'close' in the buddy list menu)
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Thu, 20 Apr 2000 00:12:58 +0000 |
| parents | 436bead8f65d |
| children | 8f5bc6859549 |
| 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) { | |
|
138
e8ea1e2fdf0c
[gaim-migrate @ 148]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
133
diff
changeset
|
407 GList *all = aim_users; |
|
e8ea1e2fdf0c
[gaim-migrate @ 148]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
133
diff
changeset
|
408 GList *srch = g_list_find(all, (void *)current_user); |
| 85 | 409 int length = g_list_length(all) - g_list_length(srch); |
| 410 | |
| 411 gtk_combo_set_value_in_list(GTK_COMBO(name), length, 0); | |
| 1 | 412 if ((general_options & OPT_GEN_REMEMBER_PASS)) { |
|
140
436bead8f65d
[gaim-migrate @ 150]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
138
diff
changeset
|
413 combo_changed(NULL, name); |
| 1 | 414 } |
| 415 | |
| 416 | |
| 417 gtk_widget_grab_focus(signon); | |
| 418 } else | |
| 419 gtk_widget_grab_focus(name); | |
| 420 | |
| 421 | |
| 422 | |
| 423 gtk_signal_connect(GTK_OBJECT(remember), "clicked", GTK_SIGNAL_FUNC(set_general_option), (int *)OPT_GEN_REMEMBER_PASS); | |
| 424 | |
| 425 | |
| 426 gtk_widget_realize(mainwindow); | |
| 427 | |
| 428 #ifndef USE_APPLET | |
| 429 /* Logo at the top */ | |
| 430 style = gtk_widget_get_style(mainwindow); | |
| 431 pm = gdk_pixmap_create_from_xpm_d(mainwindow->window, &mask, | |
| 432 &style->bg[GTK_STATE_NORMAL], (gchar **)aol_logo); | |
| 433 pmw = gtk_pixmap_new( pm, mask); | |
| 434 gtk_table_attach(GTK_TABLE(table), pmw, 0,2,0,1,0,0,5,5); | |
| 435 gtk_widget_show(pmw); | |
| 436 #endif /* USE_APPLET */ | |
| 437 | |
| 438 | |
| 439 aol_icon(mainwindow->window); | |
| 440 #ifndef _WIN32 | |
| 441 gdk_window_set_group(mainwindow->window, mainwindow->window); | |
| 442 #endif | |
| 443 | |
| 444 | |
| 445 gtk_widget_show(mainwindow); | |
| 446 | |
| 447 if((general_options & OPT_GEN_AUTO_LOGIN) && | |
| 448 (general_options & OPT_GEN_REMEMBER_PASS)) { | |
| 449 dologin(signon, NULL); | |
| 450 } | |
| 451 } | |
| 452 | |
| 453 | |
| 454 int main(int argc, char *argv[]) | |
| 455 { | |
| 456 #ifdef USE_APPLET | |
| 457 InitAppletMgr( argc, argv ); | |
| 458 #elif defined USE_THEMES | |
| 459 gnome_init("GAIM",NULL,argc,argv); | |
| 460 #else | |
| 461 gtk_init(&argc, &argv); | |
| 462 #endif /* USE_THEMES */ | |
| 463 | |
| 464 | |
| 465 set_defaults(); | |
| 466 load_prefs(); | |
| 467 | |
| 468 #ifdef USE_APPLET | |
| 469 applet_widget_register_callback(APPLET_WIDGET(applet), | |
| 470 "prefs", | |
| 471 _("Preferences"), | |
| 472 show_prefs, | |
| 473 NULL); | |
| 474 applet_widget_register_callback(APPLET_WIDGET(applet), | |
| 475 "signon", | |
| 476 _("Signon"), | |
| 477 applet_show_login, | |
| 478 NULL); | |
|
97
5b4b7aa8dd9a
[gaim-migrate @ 107]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
96
diff
changeset
|
479 #ifdef GAIM_PLUGINS |
|
96
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
480 applet_widget_register_callback(APPLET_WIDGET(applet), |
|
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
481 "plugins", |
|
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
482 _("Plugins"), |
|
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
483 GTK_SIGNAL_FUNC(show_plugins), |
|
247f540ea6e1
[gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
94
diff
changeset
|
484 NULL); |
|
97
5b4b7aa8dd9a
[gaim-migrate @ 107]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
96
diff
changeset
|
485 #endif /* GAIM_PLUGINS */ |
| 1 | 486 |
| 487 if((general_options & OPT_GEN_AUTO_LOGIN) && | |
| 488 (general_options & OPT_GEN_REMEMBER_PASS)) { | |
| 489 | |
| 490 applet_show_login(APPLET_WIDGET(applet), NULL); | |
| 491 } | |
| 82 | 492 |
| 493 update_pixmaps(); | |
| 1 | 494 |
| 495 applet_widget_gtk_main(); | |
| 496 #else | |
| 497 | |
| 498 | |
| 499 show_login(); | |
| 500 gtk_main(); | |
| 501 | |
| 502 #endif /* USE_APPLET */ | |
| 503 | |
| 504 return 0; | |
| 505 | |
| 506 } |
