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. */