Mercurial > pidgin
comparison src/gtkrequest.c @ 6338:644ebf75f686
[gaim-migrate @ 6837]
Okay, so I had to go back in the 7th layer of Hell to fix the multi-field
dialog code. The values for the multi-line text fields weren't being
stored. Some old code was nuked. Done.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Wed, 30 Jul 2003 08:08:50 +0000 |
| parents | 957c1d28b96a |
| children | b7ef10bbe9bb |
comparison
equal
deleted
inserted
replaced
| 6337:957c1d28b96a | 6338:644ebf75f686 |
|---|---|
| 98 field_string_focus_out_cb(GtkWidget *entry, GdkEventFocus *event, | 98 field_string_focus_out_cb(GtkWidget *entry, GdkEventFocus *event, |
| 99 GaimRequestField *field) | 99 GaimRequestField *field) |
| 100 { | 100 { |
| 101 const char *value; | 101 const char *value; |
| 102 | 102 |
| 103 gaim_debug(GAIM_DEBUG_MISC, "gtkrequest", "field_string_focus_out_cb\n"); | |
| 104 | |
| 103 if (gaim_request_field_string_is_multiline(field)) { | 105 if (gaim_request_field_string_is_multiline(field)) { |
| 104 GtkTextBuffer *buffer; | 106 GtkTextBuffer *buffer; |
| 105 GtkTextIter start_iter, end_iter; | 107 GtkTextIter start_iter, end_iter; |
| 106 | 108 |
| 107 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); | 109 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); |
| 112 value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, FALSE); | 114 value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, FALSE); |
| 113 } | 115 } |
| 114 else | 116 else |
| 115 value = gtk_entry_get_text(GTK_ENTRY(entry)); | 117 value = gtk_entry_get_text(GTK_ENTRY(entry)); |
| 116 | 118 |
| 119 gaim_debug(GAIM_DEBUG_MISC, "gtkrequest", "'%s' = '%s'\n", | |
| 120 gaim_request_field_get_id(field), value); | |
| 117 gaim_request_field_string_set_value(field, | 121 gaim_request_field_string_set_value(field, |
| 118 (*value == '\0' ? NULL : value)); | 122 (*value == '\0' ? NULL : value)); |
| 119 | 123 |
| 120 return FALSE; | 124 return FALSE; |
| 121 } | 125 } |
| 565 | 569 |
| 566 field = fl->data; | 570 field = fl->data; |
| 567 | 571 |
| 568 type = gaim_request_field_get_type(field); | 572 type = gaim_request_field_get_type(field); |
| 569 | 573 |
| 570 gaim_debug(GAIM_DEBUG_INFO, "gtkrequest", | |
| 571 "Adding %s (%d, %d - %d, %d)\n", | |
| 572 gaim_request_field_get_label(field), | |
| 573 row_num, col_num, rows, cols); | |
| 574 | |
| 575 if (type != GAIM_REQUEST_FIELD_BOOLEAN) { | 574 if (type != GAIM_REQUEST_FIELD_BOOLEAN) { |
| 576 text = g_strdup_printf("%s:", | 575 text = g_strdup_printf("%s:", |
| 577 gaim_request_field_get_label(field)); | 576 gaim_request_field_get_label(field)); |
| 578 | 577 |
| 579 label = gtk_label_new(NULL); | 578 label = gtk_label_new(NULL); |
| 633 buffer = gtk_text_view_get_buffer( | 632 buffer = gtk_text_view_get_buffer( |
| 634 GTK_TEXT_VIEW(textview)); | 633 GTK_TEXT_VIEW(textview)); |
| 635 | 634 |
| 636 gtk_text_buffer_set_text(buffer, value, -1); | 635 gtk_text_buffer_set_text(buffer, value, -1); |
| 637 } | 636 } |
| 637 | |
| 638 g_signal_connect(G_OBJECT(textview), "focus-out-event", | |
| 639 G_CALLBACK(field_string_focus_out_cb), | |
| 640 field); | |
| 638 } | 641 } |
| 639 else { | 642 else { |
| 640 widget = gtk_entry_new(); | 643 widget = gtk_entry_new(); |
| 641 | 644 |
| 642 if (value != NULL) | 645 if (value != NULL) |
| 643 gtk_entry_set_text(GTK_ENTRY(widget), value); | 646 gtk_entry_set_text(GTK_ENTRY(widget), value); |
| 647 | |
| 648 g_signal_connect(G_OBJECT(widget), "focus-out-event", | |
| 649 G_CALLBACK(field_string_focus_out_cb), | |
| 650 field); | |
| 644 } | 651 } |
| 645 | |
| 646 g_signal_connect(G_OBJECT(widget), "focus-out-event", | |
| 647 G_CALLBACK(field_string_focus_out_cb), | |
| 648 field); | |
| 649 } | 652 } |
| 650 else if (type == GAIM_REQUEST_FIELD_INTEGER) { | 653 else if (type == GAIM_REQUEST_FIELD_INTEGER) { |
| 651 int value; | 654 int value; |
| 652 | 655 |
| 653 widget = gtk_entry_new(); | 656 widget = gtk_entry_new(); |
| 767 gtk_widget_show(widget); | 770 gtk_widget_show(widget); |
| 768 | 771 |
| 769 field->ui_data = widget; | 772 field->ui_data = widget; |
| 770 } | 773 } |
| 771 } | 774 } |
| 772 | |
| 773 #if 0 | |
| 774 for (col_num = 0, fl = field_list; | |
| 775 col_num < cols && fl != NULL; | |
| 776 col_num++) { | |
| 777 | |
| 778 for (row_num = 0; | |
| 779 row_num < rows && fl != NULL; | |
| 780 row_num++, fl = fl->next) { | |
| 781 | |
| 782 size_t col_offset = col_num * 2; | |
| 783 GaimRequestFieldType type; | |
| 784 GtkWidget *widget = NULL; | |
| 785 | |
| 786 field = fl->data; | |
| 787 | |
| 788 type = gaim_request_field_get_type(field); | |
| 789 | |
| 790 gaim_debug(GAIM_DEBUG_INFO, "gtkrequest", | |
| 791 "Adding %s (%d, %d - %d, %d)\n", | |
| 792 gaim_request_field_get_label(field), | |
| 793 row_num, col_num, rows, cols); | |
| 794 | |
| 795 if (type != GAIM_REQUEST_FIELD_BOOLEAN) { | |
| 796 text = g_strdup_printf("%s:", | |
| 797 gaim_request_field_get_label(field)); | |
| 798 | |
| 799 label = gtk_label_new(NULL); | |
| 800 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), text); | |
| 801 g_free(text); | |
| 802 | |
| 803 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 804 | |
| 805 gtk_size_group_add_widget(sg, label); | |
| 806 | |
| 807 if (type == GAIM_REQUEST_FIELD_STRING && | |
| 808 gaim_request_field_string_is_multiline(field)) { | |
| 809 | |
| 810 gtk_table_attach_defaults(GTK_TABLE(table), label, | |
| 811 0, 2 * cols, | |
| 812 row_num, row_num + 1); | |
| 813 | |
| 814 row_num++; | |
| 815 } | |
| 816 else { | |
| 817 gtk_table_attach_defaults(GTK_TABLE(table), label, | |
| 818 col_offset, col_offset + 1, | |
| 819 row_num, row_num + 1); | |
| 820 } | |
| 821 | |
| 822 gtk_widget_show(label); | |
| 823 } | |
| 824 | |
| 825 if (type == GAIM_REQUEST_FIELD_STRING) { | |
| 826 const char *value; | |
| 827 | |
| 828 value = gaim_request_field_string_get_default_value(field); | |
| 829 | |
| 830 if (gaim_request_field_string_is_multiline(field)) { | |
| 831 widget = gtk_text_view_new(); | |
| 832 | |
| 833 if (value != NULL) { | |
| 834 GtkTextBuffer *buffer; | |
| 835 | |
| 836 buffer = gtk_text_view_get_buffer( | |
| 837 GTK_TEXT_VIEW(widget)); | |
| 838 | |
| 839 gtk_text_buffer_set_text(buffer, value, -1); | |
| 840 } | |
| 841 } | |
| 842 else { | |
| 843 widget = gtk_entry_new(); | |
| 844 | |
| 845 if (value != NULL) | |
| 846 gtk_entry_set_text(GTK_ENTRY(widget), value); | |
| 847 } | |
| 848 | |
| 849 g_signal_connect(G_OBJECT(widget), "focus-out-event", | |
| 850 G_CALLBACK(field_string_focus_out_cb), | |
| 851 field); | |
| 852 } | |
| 853 else if (type == GAIM_REQUEST_FIELD_INTEGER) { | |
| 854 int value; | |
| 855 | |
| 856 widget = gtk_entry_new(); | |
| 857 | |
| 858 value = gaim_request_field_int_get_default_value(field); | |
| 859 | |
| 860 if (value != 0) { | |
| 861 char buf[32]; | |
| 862 | |
| 863 g_snprintf(buf, sizeof(buf), "%d", value); | |
| 864 | |
| 865 gtk_entry_set_text(GTK_ENTRY(widget), buf); | |
| 866 } | |
| 867 | |
| 868 g_signal_connect(G_OBJECT(widget), "focus-out-event", | |
| 869 G_CALLBACK(field_int_focus_out_cb), | |
| 870 field); | |
| 871 } | |
| 872 else if (type == GAIM_REQUEST_FIELD_BOOLEAN) { | |
| 873 widget = gtk_check_button_new_with_label( | |
| 874 gaim_request_field_get_label(field)); | |
| 875 | |
| 876 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), | |
| 877 gaim_request_field_bool_get_default_value(field)); | |
| 878 | |
| 879 g_signal_connect(G_OBJECT(widget), "toggled", | |
| 880 G_CALLBACK(field_bool_cb), field); | |
| 881 } | |
| 882 else if (type == GAIM_REQUEST_FIELD_CHOICE) { | |
| 883 GList *labels; | |
| 884 GList *l; | |
| 885 | |
| 886 labels = gaim_request_field_choice_get_labels(field); | |
| 887 | |
| 888 if (g_list_length(labels) > 5) { | |
| 889 GtkWidget *menu; | |
| 890 GtkWidget *item; | |
| 891 | |
| 892 widget = gtk_option_menu_new(); | |
| 893 | |
| 894 menu = gtk_menu_new(); | |
| 895 | |
| 896 gtk_option_menu_set_menu(GTK_OPTION_MENU(widget), menu); | |
| 897 | |
| 898 for (l = labels; l != NULL; l = l->next) { | |
| 899 const char *text = l->data; | |
| 900 | |
| 901 item = gtk_menu_item_new_with_label(text); | |
| 902 | |
| 903 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | |
| 904 } | |
| 905 | |
| 906 g_signal_connect(G_OBJECT(widget), "changed", | |
| 907 G_CALLBACK(field_choice_menu_cb), | |
| 908 field); | |
| 909 } | |
| 910 else { | |
| 911 GtkWidget *box; | |
| 912 GtkWidget *first_radio = NULL; | |
| 913 GtkWidget *radio; | |
| 914 | |
| 915 if (g_list_length(labels) == 2) | |
| 916 box = gtk_hbox_new(FALSE, 6); | |
| 917 else | |
| 918 box = gtk_vbox_new(FALSE, 0); | |
| 919 | |
| 920 widget = box; | |
| 921 | |
| 922 for (l = labels; l != NULL; l = l->next) { | |
| 923 const char *text = l->data; | |
| 924 | |
| 925 radio = | |
| 926 gtk_radio_button_new_with_label_from_widget( | |
| 927 GTK_RADIO_BUTTON(first_radio), text); | |
| 928 | |
| 929 if (first_radio == NULL) | |
| 930 first_radio = radio; | |
| 931 | |
| 932 gtk_box_pack_start(GTK_BOX(box), radio, | |
| 933 TRUE, TRUE, 0); | |
| 934 gtk_widget_show(radio); | |
| 935 | |
| 936 g_signal_connect(G_OBJECT(radio), "toggled", | |
| 937 G_CALLBACK(field_choice_option_cb), | |
| 938 field); | |
| 939 } | |
| 940 } | |
| 941 } | |
| 942 | |
| 943 if (type != GAIM_REQUEST_FIELD_BOOLEAN) { | |
| 944 gtk_table_attach(GTK_TABLE(table), widget, | |
| 945 col_offset + 1, col_offset + 2, | |
| 946 row_num, row_num + 1, | |
| 947 GTK_FILL | GTK_EXPAND, | |
| 948 GTK_FILL | GTK_EXPAND, | |
| 949 5, 0); | |
| 950 } | |
| 951 else if (type == GAIM_REQUEST_FIELD_STRING && | |
| 952 gaim_request_field_string_is_multiline(field)) { | |
| 953 | |
| 954 gtk_table_attach(GTK_TABLE(table), widget, | |
| 955 0, 2 * cols, | |
| 956 row_num, row_num + 1, | |
| 957 GTK_FILL | GTK_EXPAND, | |
| 958 GTK_FILL | GTK_EXPAND, | |
| 959 5, 0); | |
| 960 } | |
| 961 else { | |
| 962 gtk_table_attach(GTK_TABLE(table), widget, | |
| 963 col_offset, col_offset + 1, | |
| 964 row_num, row_num + 1, | |
| 965 GTK_FILL | GTK_EXPAND, | |
| 966 GTK_FILL | GTK_EXPAND, | |
| 967 5, 0); | |
| 968 } | |
| 969 | |
| 970 gtk_widget_show(widget); | |
| 971 | |
| 972 field->ui_data = widget; | |
| 973 } | |
| 974 } | |
| 975 #endif | |
| 976 } | 775 } |
| 977 | 776 |
| 978 g_object_unref(sg); | 777 g_object_unref(sg); |
| 979 | 778 |
| 980 /* Button box. */ | 779 /* Button box. */ |
