Mercurial > pidgin
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 { |