Mercurial > pidgin
comparison src/aim.c @ 989:bd8eb3efe14e
[gaim-migrate @ 999]
putting the login window back the way it was, mostly
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Fri, 13 Oct 2000 20:21:38 +0000 |
| parents | 9523b772e546 |
| children | 3dbc2cd326e2 |
comparison
equal
deleted
inserted
replaced
| 988:9523b772e546 | 989:bd8eb3efe14e |
|---|---|
| 51 #include <signal.h> | 51 #include <signal.h> |
| 52 #endif | 52 #endif |
| 53 #include "locale.h" | 53 #include "locale.h" |
| 54 #include "gtkticker.h" | 54 #include "gtkticker.h" |
| 55 | 55 |
| 56 static GtkWidget *name; | |
| 57 static GtkWidget *pass; | |
| 58 | |
| 56 GList *permit = NULL; | 59 GList *permit = NULL; |
| 57 GList *deny = NULL; | 60 GList *deny = NULL; |
| 58 GList *log_conversations = NULL; | 61 GList *log_conversations = NULL; |
| 59 GList *buddy_pounces = NULL; | 62 GList *buddy_pounces = NULL; |
| 60 GSList *away_messages = NULL; | 63 GSList *away_messages = NULL; |
| 141 | 144 |
| 142 return; | 145 return; |
| 143 } | 146 } |
| 144 | 147 |
| 145 | 148 |
| 149 static void dologin(GtkWidget *widget, GtkWidget *w) | |
| 150 { | |
| 151 struct aim_user *u; | |
| 152 char *username = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(name)->entry)); | |
| 153 char *password = gtk_entry_get_text(GTK_ENTRY(pass)); | |
| 154 | |
| 155 if (!strlen(username)) { | |
| 156 do_error_dialog(_("Please enter your logon"), _("Signon Error")); | |
| 157 return; | |
| 158 } | |
| 159 | |
| 160 if (!strlen(password)) { | |
| 161 do_error_dialog(_("Please enter your password"), _("Signon Error")); | |
| 162 return; | |
| 163 } | |
| 164 | |
| 165 u = find_user(username); | |
| 166 if (!u) { | |
| 167 /* FIXME : add user */ | |
| 168 } | |
| 169 g_snprintf(u->password, sizeof u->password, "%s", password); | |
| 170 save_prefs(); | |
| 171 serv_login(u); | |
| 172 } | |
| 173 | |
| 174 | |
| 175 static void doenter(GtkWidget *widget, GtkWidget *w) | |
| 176 { | |
| 177 if (widget == name) { | |
| 178 gtk_entry_set_text(GTK_ENTRY(pass), ""); | |
| 179 gtk_entry_select_region(GTK_ENTRY(GTK_COMBO(name)->entry), 0, 0); | |
| 180 gtk_widget_grab_focus(pass); | |
| 181 } else if (widget == pass) { | |
| 182 dologin(widget, w); | |
| 183 } | |
| 184 } | |
| 185 | |
| 186 | |
| 187 static void combo_changed(GtkWidget *w, GtkWidget *combo) | |
| 188 { | |
| 189 char *txt = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry)); | |
| 190 struct aim_user *u; | |
| 191 | |
| 192 u = find_user(txt); | |
| 193 | |
| 194 if (u && u->options & OPT_USR_REM_PASS) { | |
| 195 gtk_entry_set_text(GTK_ENTRY(pass), u->password); | |
| 196 } else { | |
| 197 gtk_entry_set_text(GTK_ENTRY(pass), ""); | |
| 198 } | |
| 199 } | |
| 200 | |
| 201 | |
| 202 static GList *combo_user_names() | |
| 203 { | |
| 204 GList *usr = aim_users; | |
| 205 GList *tmp = NULL; | |
| 206 struct aim_user *u; | |
| 207 | |
| 208 if (!usr) | |
| 209 return g_list_append(NULL, "<unknown>"); | |
| 210 | |
| 211 while (usr) { | |
| 212 u = (struct aim_user *)usr->data; | |
| 213 tmp = g_list_append(tmp, g_strdup(u->username)); | |
| 214 usr = usr->next; | |
| 215 } | |
| 216 | |
| 217 return tmp; | |
| 218 } | |
| 146 | 219 |
| 147 | 220 |
| 148 void show_login() | 221 void show_login() |
| 149 { | 222 { |
| 150 GtkWidget *options; | 223 GtkWidget *options; |
| 151 #ifdef GAIM_PLUGINS | 224 #ifdef GAIM_PLUGINS |
| 152 GtkWidget *plugs; | 225 GtkWidget *plugs; |
| 153 #endif | 226 #endif |
| 154 GtkWidget *accts; | 227 GtkWidget *accts; |
| 228 GtkWidget *signon; | |
| 155 GtkWidget *cancel; | 229 GtkWidget *cancel; |
| 156 GtkWidget *reg; | 230 GtkWidget *reg; |
| 157 GtkWidget *bbox; | 231 GtkWidget *bbox; |
| 158 GtkWidget *hbox; | 232 GtkWidget *hbox; |
| 159 GtkWidget *sbox; | 233 GtkWidget *sbox; |
| 234 GtkWidget *label; | |
| 160 GtkWidget *table; | 235 GtkWidget *table; |
| 161 | 236 |
| 162 GtkWidget *pmw; | 237 GtkWidget *pmw; |
| 163 GdkPixmap *pm; | 238 GdkPixmap *pm; |
| 164 GtkStyle *style; | 239 GtkStyle *style; |
| 174 gtk_window_set_wmclass(GTK_WINDOW(mainwindow), "login", | 249 gtk_window_set_wmclass(GTK_WINDOW(mainwindow), "login", |
| 175 "Gaim"); | 250 "Gaim"); |
| 176 /* Disallow resizing */ | 251 /* Disallow resizing */ |
| 177 gtk_window_set_policy(GTK_WINDOW(mainwindow), FALSE, FALSE, TRUE); | 252 gtk_window_set_policy(GTK_WINDOW(mainwindow), FALSE, FALSE, TRUE); |
| 178 gtk_widget_realize(mainwindow); | 253 gtk_widget_realize(mainwindow); |
| 254 | |
| 255 signon = gtk_button_new_with_label(_("Signon")); | |
| 179 accts = gtk_button_new_with_label(_("Accounts")); | 256 accts = gtk_button_new_with_label(_("Accounts")); |
| 180 cancel = gtk_button_new_with_label(_("Cancel")); | 257 cancel = gtk_button_new_with_label(_("Cancel")); |
| 181 reg = gtk_button_new_with_label(_("Register")); | 258 reg = gtk_button_new_with_label(_("Register")); |
| 182 options = gtk_button_new_with_label(_("Options")); | 259 options = gtk_button_new_with_label(_("Options")); |
| 183 #ifdef GAIM_PLUGINS | 260 #ifdef GAIM_PLUGINS |
| 184 plugs = gtk_button_new_with_label(_("Plugins")); | 261 plugs = gtk_button_new_with_label(_("Plugins")); |
| 185 #endif | 262 #endif |
| 186 table = gtk_table_new(8, 2, FALSE); | 263 table = gtk_table_new(8, 2, FALSE); |
| 264 name = gtk_combo_new(); | |
| 265 pass = gtk_entry_new(); | |
| 266 | |
| 267 gtk_combo_set_popdown_strings(GTK_COMBO(name), combo_user_names()); | |
| 187 | 268 |
| 188 if (display_options & OPT_DISP_COOL_LOOK) | 269 if (display_options & OPT_DISP_COOL_LOOK) |
| 189 { | 270 { |
| 271 gtk_button_set_relief(GTK_BUTTON(signon), GTK_RELIEF_NONE); | |
| 190 gtk_button_set_relief(GTK_BUTTON(accts), GTK_RELIEF_NONE); | 272 gtk_button_set_relief(GTK_BUTTON(accts), GTK_RELIEF_NONE); |
| 191 gtk_button_set_relief(GTK_BUTTON(cancel), GTK_RELIEF_NONE); | 273 gtk_button_set_relief(GTK_BUTTON(cancel), GTK_RELIEF_NONE); |
| 192 gtk_button_set_relief(GTK_BUTTON(reg), GTK_RELIEF_NONE); | 274 gtk_button_set_relief(GTK_BUTTON(reg), GTK_RELIEF_NONE); |
| 193 gtk_button_set_relief(GTK_BUTTON(options), GTK_RELIEF_NONE); | 275 gtk_button_set_relief(GTK_BUTTON(options), GTK_RELIEF_NONE); |
| 194 #ifdef GAIM_PLUGINS | 276 #ifdef GAIM_PLUGINS |
| 196 #endif | 278 #endif |
| 197 } | 279 } |
| 198 | 280 |
| 199 /* Make the buttons do stuff */ | 281 /* Make the buttons do stuff */ |
| 200 /* Clicking the button initiates a login */ | 282 /* Clicking the button initiates a login */ |
| 283 gtk_signal_connect(GTK_OBJECT(signon), "clicked", | |
| 284 GTK_SIGNAL_FUNC(dologin), mainwindow); | |
| 201 gtk_signal_connect(GTK_OBJECT(accts), "clicked", | 285 gtk_signal_connect(GTK_OBJECT(accts), "clicked", |
| 202 GTK_SIGNAL_FUNC(account_editor), mainwindow); | 286 GTK_SIGNAL_FUNC(account_editor), mainwindow); |
| 203 gtk_signal_connect(GTK_OBJECT(cancel), "clicked", | 287 gtk_signal_connect(GTK_OBJECT(cancel), "clicked", |
| 204 GTK_SIGNAL_FUNC(cancel_logon), mainwindow); | 288 GTK_SIGNAL_FUNC(cancel_logon), mainwindow); |
| 205 /* Allow user to change prefs before logging in */ | 289 /* Allow user to change prefs before logging in */ |
| 212 #endif | 296 #endif |
| 213 | 297 |
| 214 /* Register opens the right URL */ | 298 /* Register opens the right URL */ |
| 215 gtk_signal_connect(GTK_OBJECT(reg), "clicked", | 299 gtk_signal_connect(GTK_OBJECT(reg), "clicked", |
| 216 GTK_SIGNAL_FUNC(open_url), "http://aim.aol.com/aimnew/Aim/register.adp?promo=106723&pageset=Aim&client=no"); | 300 GTK_SIGNAL_FUNC(open_url), "http://aim.aol.com/aimnew/Aim/register.adp?promo=106723&pageset=Aim&client=no"); |
| 301 /* Enter in the username clears the password and sets | |
| 302 the pointer in the password field */ | |
| 303 gtk_signal_connect(GTK_OBJECT(GTK_COMBO(name)->entry), "activate", | |
| 304 GTK_SIGNAL_FUNC(doenter), mainwindow); | |
| 305 gtk_signal_connect(GTK_OBJECT(GTK_COMBO(name)->entry), "changed", | |
| 306 GTK_SIGNAL_FUNC(combo_changed), name); | |
| 307 | |
| 308 gtk_signal_connect(GTK_OBJECT(pass), "activate", | |
| 309 GTK_SIGNAL_FUNC(doenter), mainwindow); | |
| 217 gtk_signal_connect(GTK_OBJECT(mainwindow), "delete_event", | 310 gtk_signal_connect(GTK_OBJECT(mainwindow), "delete_event", |
| 218 GTK_SIGNAL_FUNC(cancel_logon), mainwindow); | 311 GTK_SIGNAL_FUNC(cancel_logon), mainwindow); |
| 219 /* Homogenous spacing, 10 padding */ | 312 /* Homogenous spacing, 10 padding */ |
| 220 bbox = gtk_hbox_new(TRUE, 10); | 313 bbox = gtk_hbox_new(TRUE, 10); |
| 221 hbox = gtk_hbox_new(TRUE, 10); | 314 hbox = gtk_hbox_new(TRUE, 10); |
| 222 sbox = gtk_vbox_new(TRUE, 5); | 315 sbox = gtk_vbox_new(TRUE, 5); |
| 223 | 316 |
| 224 gtk_box_pack_start(GTK_BOX(bbox), reg, TRUE, TRUE, 0); | |
| 225 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); | 317 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); |
| 226 | 318 gtk_box_pack_start(GTK_BOX(bbox), accts, TRUE, TRUE, 0); |
| 319 gtk_box_pack_start(GTK_BOX(bbox), signon, TRUE, TRUE, 0); | |
| 320 | |
| 321 gtk_box_pack_start(GTK_BOX(hbox), reg, TRUE, TRUE, 0); | |
| 227 gtk_box_pack_start(GTK_BOX(hbox), options, TRUE, TRUE, 0); | 322 gtk_box_pack_start(GTK_BOX(hbox), options, TRUE, TRUE, 0); |
| 228 #ifdef GAIM_PLUGINS | 323 #ifdef GAIM_PLUGINS |
| 229 gtk_box_pack_start(GTK_BOX(hbox), plugs, TRUE, TRUE, 0); | 324 gtk_box_pack_start(GTK_BOX(hbox), plugs, TRUE, TRUE, 0); |
| 230 #endif | 325 #endif |
| 231 | 326 |
| 327 gtk_box_pack_start(GTK_BOX(sbox), bbox, TRUE, TRUE, 0); | |
| 232 gtk_box_pack_start(GTK_BOX(sbox), hbox, TRUE, TRUE, 0); | 328 gtk_box_pack_start(GTK_BOX(sbox), hbox, TRUE, TRUE, 0); |
| 233 gtk_box_pack_start(GTK_BOX(sbox), bbox, TRUE, TRUE, 0); | |
| 234 | 329 |
| 235 /* Labels for selectors and text boxes */ | 330 /* Labels for selectors and text boxes */ |
| 331 label = gtk_label_new(_("Screen Name: ")); | |
| 332 gtk_table_attach(GTK_TABLE(table), label, 0,1,2,3,0,0, 5, 5); | |
| 333 gtk_widget_show(label); | |
| 334 label = gtk_label_new(_("Password: ")); | |
| 335 gtk_table_attach(GTK_TABLE(table), label, 0,1,3,4,0,0, 5, 5); | |
| 336 gtk_widget_show(label); | |
| 236 | 337 |
| 237 gtk_widget_show(options); | 338 gtk_widget_show(options); |
| 238 #ifdef GAIM_PLUGINS | 339 #ifdef GAIM_PLUGINS |
| 239 gtk_widget_show(plugs); | 340 gtk_widget_show(plugs); |
| 240 #endif | 341 #endif |
| 342 | |
| 343 /* Adjust sizes of inputs */ | |
| 344 gtk_widget_set_usize(name,100,0); | |
| 345 gtk_widget_set_usize(pass,100,0); | |
| 346 | |
| 241 | 347 |
| 242 /* Attach the buttons at the bottom */ | 348 /* Attach the buttons at the bottom */ |
| 349 gtk_widget_show(signon); | |
| 243 gtk_widget_show(cancel); | 350 gtk_widget_show(cancel); |
| 244 gtk_widget_show(reg); | 351 gtk_widget_show(reg); |
| 245 gtk_widget_show(accts); | 352 gtk_widget_show(accts); |
| 246 gtk_widget_show(bbox); | 353 gtk_widget_show(bbox); |
| 247 gtk_widget_show(hbox); | 354 gtk_widget_show(hbox); |
| 248 gtk_widget_show(sbox); | 355 gtk_widget_show(sbox); |
| 249 gtk_table_attach(GTK_TABLE(table), accts, 0,2,6,7,0,0, 5, 5); | |
| 250 gtk_table_attach(GTK_TABLE(table), sbox, 0,2,7,8,0,0, 5, 5); | 356 gtk_table_attach(GTK_TABLE(table), sbox, 0,2,7,8,0,0, 5, 5); |
| 251 | 357 |
| 252 /* Text fields */ | 358 /* Text fields */ |
| 359 | |
| 360 gtk_table_attach(GTK_TABLE(table),name,1,2,2,3,0,0,5,5); | |
| 361 gtk_widget_show(name); | |
| 362 gtk_table_attach(GTK_TABLE(table),pass,1,2,3,4,0,0,5,5); | |
| 363 gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE); | |
| 364 gtk_widget_show(pass); | |
| 253 | 365 |
| 254 gtk_container_border_width(GTK_CONTAINER(sbox), 10); | 366 gtk_container_border_width(GTK_CONTAINER(sbox), 10); |
| 255 | 367 |
| 256 gtk_container_add(GTK_CONTAINER(mainwindow),table ); | 368 gtk_container_add(GTK_CONTAINER(mainwindow),table ); |
| 257 | 369 |
| 258 gtk_widget_show(table); | 370 gtk_widget_show(table); |
| 259 gtk_window_set_title(GTK_WINDOW(mainwindow),_("Gaim - Login")); | 371 gtk_window_set_title(GTK_WINDOW(mainwindow),_("Gaim - Login")); |
| 260 | 372 |
| 373 | |
| 374 if (aim_users) { | |
| 375 struct aim_user *c = (struct aim_user *)aim_users->data; | |
| 376 sprintf(debug_buff, "First user is %s\n", c->username); | |
| 377 if (c->options & OPT_USR_REM_PASS) { | |
| 378 combo_changed(NULL, name); | |
| 379 gtk_widget_grab_focus(signon); | |
| 380 } else { | |
| 381 gtk_widget_grab_focus(pass); | |
| 382 } | |
| 383 } else { | |
| 384 gtk_widget_grab_focus(name); | |
| 385 } | |
| 261 | 386 |
| 262 gtk_widget_realize(mainwindow); | 387 gtk_widget_realize(mainwindow); |
| 263 | 388 |
| 264 /* Logo at the top */ | 389 /* Logo at the top */ |
| 265 style = gtk_widget_get_style(mainwindow); | 390 style = gtk_widget_get_style(mainwindow); |
