Mercurial > pidgin.yaz
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. */ |