comparison src/gtkaccount.c @ 5687:ae626f0b68ef

[gaim-migrate @ 6108] The rest of the proxy options are added, and modifying the Proxy type box shows or hides the detailed options, depending on the item chosen. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Tue, 03 Jun 2003 05:09:54 +0000
parents 861565bed110
children e43e1b8dca8b
comparison
equal deleted inserted replaced
5686:861565bed110 5687:ae626f0b68ef
76 GaimAccount *account; 76 GaimAccount *account;
77 GaimProtocol protocol; 77 GaimProtocol protocol;
78 GaimPlugin *plugin; 78 GaimPlugin *plugin;
79 GaimPluginProtocolInfo *prpl_info; 79 GaimPluginProtocolInfo *prpl_info;
80 80
81 GaimProxyType new_proxy_type;
82
81 GtkWidget *window; 83 GtkWidget *window;
82 84
83 /* Login Options */ 85 /* Login Options */
84 GtkWidget *login_frame; 86 GtkWidget *login_frame;
85 GtkWidget *protocol_menu; 87 GtkWidget *protocol_menu;
99 GtkWidget *protocol_frame; 101 GtkWidget *protocol_frame;
100 GtkWidget *register_check; 102 GtkWidget *register_check;
101 103
102 /* Proxy Options */ 104 /* Proxy Options */
103 GtkWidget *proxy_frame; 105 GtkWidget *proxy_frame;
106 GtkWidget *proxy_vbox;
107 GtkWidget *proxy_dropdown;
108 GtkWidget *proxy_menu;
109 GtkWidget *proxy_host_entry;
110 GtkWidget *proxy_port_entry;
111 GtkWidget *proxy_user_entry;
112 GtkWidget *proxy_pass_entry;
104 113
105 GtkSizeGroup *sg; 114 GtkSizeGroup *sg;
106 115
107 } AccountPrefsDialog; 116 } AccountPrefsDialog;
108 117
491 gtk_widget_show(dialog->register_check); 500 gtk_widget_show(dialog->register_check);
492 } 501 }
493 } 502 }
494 503
495 static GtkWidget * 504 static GtkWidget *
496 __make_proxy_dropdown(GaimAccount *account) 505 __make_proxy_dropdown(void)
497 { 506 {
498 GtkWidget *dropdown; 507 GtkWidget *dropdown;
499 GtkWidget *menu; 508 GtkWidget *menu;
500 GtkWidget *item; 509 GtkWidget *item;
501 510
541 550
542 return dropdown; 551 return dropdown;
543 } 552 }
544 553
545 static void 554 static void
555 __proxy_type_changed_cb(GtkWidget *optmenu, AccountPrefsDialog *dialog)
556 {
557 dialog->new_proxy_type =
558 gtk_option_menu_get_history(GTK_OPTION_MENU(optmenu)) - 1;
559
560 if (dialog->new_proxy_type == GAIM_PROXY_USE_GLOBAL ||
561 dialog->new_proxy_type == GAIM_PROXY_NONE) {
562
563 gtk_widget_hide_all(dialog->proxy_vbox);
564 }
565 else
566 gtk_widget_show_all(dialog->proxy_vbox);
567 }
568
569 static void
546 __add_proxy_options_frame(AccountPrefsDialog *dialog, GtkWidget *parent) 570 __add_proxy_options_frame(AccountPrefsDialog *dialog, GtkWidget *parent)
547 { 571 {
572 GaimProxyInfo *proxy_info;
548 GtkWidget *frame; 573 GtkWidget *frame;
549 GtkWidget *vbox; 574 GtkWidget *vbox;
550 GtkWidget *dropdown; 575 GtkWidget *vbox2;
551 576
552 if (dialog->proxy_frame != NULL) 577 if (dialog->proxy_frame != NULL)
553 gtk_widget_destroy(dialog->proxy_frame); 578 gtk_widget_destroy(dialog->proxy_frame);
554 579
555 frame = gaim_gtk_make_frame(parent, _("Proxy Options")); 580 frame = gaim_gtk_make_frame(parent, _("Proxy Options"));
562 vbox = gtk_vbox_new(FALSE, 6); 587 vbox = gtk_vbox_new(FALSE, 6);
563 gtk_container_add(GTK_CONTAINER(frame), vbox); 588 gtk_container_add(GTK_CONTAINER(frame), vbox);
564 gtk_widget_show(vbox); 589 gtk_widget_show(vbox);
565 590
566 /* Proxy Type drop-down. */ 591 /* Proxy Type drop-down. */
567 dropdown = __make_proxy_dropdown(dialog->account); 592 dialog->proxy_dropdown = __make_proxy_dropdown();
568 593 dialog->proxy_menu =
569 __add_pref_box(dialog, vbox, _("Proxy _type"), dropdown); 594 gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->proxy_dropdown));
595
596 __add_pref_box(dialog, vbox, _("Proxy _type:"), dialog->proxy_dropdown);
597
598 /* Setup the second vbox, which may be hidden at times. */
599 dialog->proxy_vbox = vbox2 = gtk_vbox_new(FALSE, 6);
600 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0);
601 gtk_widget_show(vbox2);
602
603 /* Host */
604 dialog->proxy_host_entry = gtk_entry_new();
605 __add_pref_box(dialog, vbox2, _("_Host:"), dialog->proxy_host_entry);
606
607 /* Port */
608 dialog->proxy_port_entry = gtk_entry_new();
609 __add_pref_box(dialog, vbox2, _("_Port:"), dialog->proxy_port_entry);
610
611 /* User */
612 dialog->proxy_user_entry = gtk_entry_new();
613 __add_pref_box(dialog, vbox2, _("_Username:"), dialog->proxy_user_entry);
614
615 /* Password */
616 dialog->proxy_pass_entry = gtk_entry_new();
617 __add_pref_box(dialog, vbox2, _("Pa_ssword:"), dialog->proxy_pass_entry);
618
619 if (dialog->account != NULL &&
620 (proxy_info = gaim_account_get_proxy_info(dialog->account)) != NULL) {
621
622 GaimProxyType type = gaim_proxy_info_get_type(proxy_info);
623
624 /* Hah! */
625 gtk_option_menu_set_history(GTK_OPTION_MENU(dialog->proxy_dropdown),
626 (int)type + 1);
627
628 if (type == GAIM_PROXY_NONE || type == GAIM_PROXY_USE_GLOBAL) {
629 gtk_widget_hide_all(vbox2);
630 }
631 else {
632 const char *value;
633 int int_val;
634
635 if ((value = gaim_proxy_info_get_host(proxy_info)) != NULL)
636 gtk_entry_set_text(GTK_ENTRY(dialog->proxy_host_entry), value);
637
638 if ((int_val = gaim_proxy_info_get_port(proxy_info)) != 0) {
639 char buf[32];
640
641 g_snprintf(buf, sizeof(buf), "%d", int_val);
642
643 gtk_entry_set_text(GTK_ENTRY(dialog->proxy_host_entry), buf);
644 }
645
646 if ((value = gaim_proxy_info_get_username(proxy_info)) != NULL)
647 gtk_entry_set_text(GTK_ENTRY(dialog->proxy_user_entry), value);
648
649 if ((value = gaim_proxy_info_get_password(proxy_info)) != NULL)
650 gtk_entry_set_text(GTK_ENTRY(dialog->proxy_pass_entry), value);
651 }
652 }
653 else
654 gtk_widget_hide_all(vbox2);
655
656 /* Connect signals. */
657 g_signal_connect(G_OBJECT(dialog->proxy_dropdown), "changed",
658 G_CALLBACK(__proxy_type_changed_cb), dialog);
570 } 659 }
571 660
572 static void 661 static void
573 __show_account_prefs(AccountPrefsDialogType type, GaimAccount *account) 662 __show_account_prefs(AccountPrefsDialogType type, GaimAccount *account)
574 { 663 {