| 747 |
747 |
| 748 static void |
748 static void |
| 749 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field) |
749 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field) |
| 750 { |
750 { |
| 751 PurpleRequestFieldGroup *group; |
751 PurpleRequestFieldGroup *group; |
| |
752 PurpleRequestFields *fields; |
| 752 PidginRequestData *req_data; |
753 PidginRequestData *req_data; |
| 753 |
754 |
| 754 if (purple_request_field_string_is_multiline(field)) |
755 if (purple_request_field_string_is_multiline(field)) |
| 755 { |
756 { |
| 756 char *text; |
757 char *text; |
| 769 text = gtk_entry_get_text(GTK_ENTRY(entry)); |
770 text = gtk_entry_get_text(GTK_ENTRY(entry)); |
| 770 purple_request_field_string_set_value(field, (*text == '\0') ? NULL : text); |
771 purple_request_field_string_set_value(field, (*text == '\0') ? NULL : text); |
| 771 } |
772 } |
| 772 |
773 |
| 773 group = purple_request_field_get_group(field); |
774 group = purple_request_field_get_group(field); |
| 774 req_data = (PidginRequestData *)group->fields_list->ui_data; |
775 fields = purple_request_field_group_get_fields_list(group); |
| |
776 req_data = purple_request_fields_get_ui_data(fields); |
| 775 |
777 |
| 776 gtk_widget_set_sensitive(req_data->ok_button, |
778 gtk_widget_set_sensitive(req_data->ok_button, |
| 777 purple_request_fields_all_required_filled(group->fields_list)); |
779 purple_request_fields_all_required_filled(fields)); |
| 778 } |
780 } |
| 779 |
781 |
| 780 static void |
782 static void |
| 781 setup_entry_field(GtkWidget *entry, PurpleRequestField *field) |
783 setup_entry_field(GtkWidget *entry, PurpleRequestField *field) |
| 782 { |
784 { |
| 794 { |
796 { |
| 795 if (purple_str_has_prefix(type_hint, "screenname")) |
797 if (purple_str_has_prefix(type_hint, "screenname")) |
| 796 { |
798 { |
| 797 GtkWidget *optmenu = NULL; |
799 GtkWidget *optmenu = NULL; |
| 798 PurpleRequestFieldGroup *group = purple_request_field_get_group(field); |
800 PurpleRequestFieldGroup *group = purple_request_field_get_group(field); |
| 799 GList *fields = group->fields; |
801 GList *fields = purple_request_field_group_get_fields(group); |
| 800 |
802 |
| 801 /* Ensure the account option menu is created (if the widget hasn't |
803 /* Ensure the account option menu is created (if the widget hasn't |
| 802 * been initialized already) for username auto-completion. */ |
804 * been initialized already) for username auto-completion. */ |
| 803 while (fields) |
805 while (fields) |
| 804 { |
806 { |
| 855 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); |
857 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); |
| 856 |
858 |
| 857 gtk_text_buffer_set_text(buffer, value, -1); |
859 gtk_text_buffer_set_text(buffer, value, -1); |
| 858 } |
860 } |
| 859 |
861 |
| |
862 #if GTK_CHECK_VERSION(2,12,0) |
| |
863 gtk_widget_set_tooltip_text(textview, purple_request_field_get_tooltip(field)); |
| |
864 #endif |
| |
865 |
| 860 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), |
866 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), |
| 861 purple_request_field_string_is_editable(field)); |
867 purple_request_field_string_is_editable(field)); |
| 862 |
868 |
| 863 g_signal_connect(G_OBJECT(textview), "focus-out-event", |
869 g_signal_connect(G_OBJECT(textview), "focus-out-event", |
| 864 G_CALLBACK(field_string_focus_out_cb), field); |
870 G_CALLBACK(field_string_focus_out_cb), field); |
| 878 |
884 |
| 879 setup_entry_field(widget, field); |
885 setup_entry_field(widget, field); |
| 880 |
886 |
| 881 if (value != NULL) |
887 if (value != NULL) |
| 882 gtk_entry_set_text(GTK_ENTRY(widget), value); |
888 gtk_entry_set_text(GTK_ENTRY(widget), value); |
| |
889 |
| |
890 #if GTK_CHECK_VERSION(2,12,0) |
| |
891 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
892 #endif |
| 883 |
893 |
| 884 if (purple_request_field_string_is_masked(field)) |
894 if (purple_request_field_string_is_masked(field)) |
| 885 { |
895 { |
| 886 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); |
896 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); |
| 887 #if !GTK_CHECK_VERSION(2,16,0) |
897 #if !GTK_CHECK_VERSION(2,16,0) |
| 919 g_snprintf(buf, sizeof(buf), "%d", value); |
929 g_snprintf(buf, sizeof(buf), "%d", value); |
| 920 |
930 |
| 921 gtk_entry_set_text(GTK_ENTRY(widget), buf); |
931 gtk_entry_set_text(GTK_ENTRY(widget), buf); |
| 922 } |
932 } |
| 923 |
933 |
| |
934 #if GTK_CHECK_VERSION(2,12,0) |
| |
935 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
936 #endif |
| |
937 |
| 924 g_signal_connect(G_OBJECT(widget), "focus-out-event", |
938 g_signal_connect(G_OBJECT(widget), "focus-out-event", |
| 925 G_CALLBACK(field_int_focus_out_cb), field); |
939 G_CALLBACK(field_int_focus_out_cb), field); |
| 926 |
940 |
| 927 return widget; |
941 return widget; |
| 928 } |
942 } |
| 932 { |
946 { |
| 933 GtkWidget *widget; |
947 GtkWidget *widget; |
| 934 |
948 |
| 935 widget = gtk_check_button_new_with_label( |
949 widget = gtk_check_button_new_with_label( |
| 936 purple_request_field_get_label(field)); |
950 purple_request_field_get_label(field)); |
| |
951 |
| |
952 #if GTK_CHECK_VERSION(2,12,0) |
| |
953 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
954 #endif |
| 937 |
955 |
| 938 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), |
956 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), |
| 939 purple_request_field_bool_get_default_value(field)); |
957 purple_request_field_bool_get_default_value(field)); |
| 940 |
958 |
| 941 g_signal_connect(G_OBJECT(widget), "toggled", |
959 g_signal_connect(G_OBJECT(widget), "toggled", |
| 962 gtk_combo_box_append_text(GTK_COMBO_BOX(widget), text); |
980 gtk_combo_box_append_text(GTK_COMBO_BOX(widget), text); |
| 963 } |
981 } |
| 964 |
982 |
| 965 gtk_combo_box_set_active(GTK_COMBO_BOX(widget), |
983 gtk_combo_box_set_active(GTK_COMBO_BOX(widget), |
| 966 purple_request_field_choice_get_default_value(field)); |
984 purple_request_field_choice_get_default_value(field)); |
| |
985 |
| |
986 #if GTK_CHECK_VERSION(2,12,0) |
| |
987 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
988 #endif |
| 967 |
989 |
| 968 g_signal_connect(G_OBJECT(widget), "changed", |
990 g_signal_connect(G_OBJECT(widget), "changed", |
| 969 G_CALLBACK(field_choice_menu_cb), field); |
991 G_CALLBACK(field_choice_menu_cb), field); |
| 970 } |
992 } |
| 971 else |
993 else |
| 979 box = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
1001 box = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
| 980 else |
1002 else |
| 981 box = gtk_vbox_new(FALSE, 0); |
1003 box = gtk_vbox_new(FALSE, 0); |
| 982 |
1004 |
| 983 widget = box; |
1005 widget = box; |
| |
1006 |
| |
1007 #if GTK_CHECK_VERSION(2,12,0) |
| |
1008 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1009 #endif |
| 984 |
1010 |
| 985 for (l = labels, i = 0; l != NULL; l = l->next, i++) |
1011 for (l = labels, i = 0; l != NULL; l = l->next, i++) |
| 986 { |
1012 { |
| 987 const char *text = l->data; |
1013 const char *text = l->data; |
| 988 |
1014 |
| 1022 GDK_INTERP_BILINEAR); |
1048 GDK_INTERP_BILINEAR); |
| 1023 widget = gtk_image_new_from_pixbuf(scale); |
1049 widget = gtk_image_new_from_pixbuf(scale); |
| 1024 g_object_unref(G_OBJECT(buf)); |
1050 g_object_unref(G_OBJECT(buf)); |
| 1025 g_object_unref(G_OBJECT(scale)); |
1051 g_object_unref(G_OBJECT(scale)); |
| 1026 |
1052 |
| |
1053 #if GTK_CHECK_VERSION(2,12,0) |
| |
1054 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1055 #endif |
| |
1056 |
| 1027 return widget; |
1057 return widget; |
| 1028 } |
1058 } |
| 1029 |
1059 |
| 1030 static GtkWidget * |
1060 static GtkWidget * |
| 1031 create_account_field(PurpleRequestField *field) |
1061 create_account_field(PurpleRequestField *field) |
| 1036 purple_request_field_account_get_default_value(field), |
1066 purple_request_field_account_get_default_value(field), |
| 1037 purple_request_field_account_get_show_all(field), |
1067 purple_request_field_account_get_show_all(field), |
| 1038 G_CALLBACK(field_account_cb), |
1068 G_CALLBACK(field_account_cb), |
| 1039 purple_request_field_account_get_filter(field), |
1069 purple_request_field_account_get_filter(field), |
| 1040 field); |
1070 field); |
| |
1071 |
| |
1072 #if GTK_CHECK_VERSION(2,12,0) |
| |
1073 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1074 #endif |
| 1041 |
1075 |
| 1042 return widget; |
1076 return widget; |
| 1043 } |
1077 } |
| 1044 |
1078 |
| 1045 static void |
1079 static void |
| 1186 data = g_new0(PidginRequestData, 1); |
1220 data = g_new0(PidginRequestData, 1); |
| 1187 data->type = PURPLE_REQUEST_FIELDS; |
1221 data->type = PURPLE_REQUEST_FIELDS; |
| 1188 data->user_data = user_data; |
1222 data->user_data = user_data; |
| 1189 data->u.multifield.fields = fields; |
1223 data->u.multifield.fields = fields; |
| 1190 |
1224 |
| 1191 fields->ui_data = data; |
1225 purple_request_fields_set_ui_data(fields, data); |
| 1192 |
1226 |
| 1193 data->cb_count = 2; |
1227 data->cb_count = 2; |
| 1194 data->cbs = g_new0(GCallback, 2); |
1228 data->cbs = g_new0(GCallback, 2); |
| 1195 |
1229 |
| 1196 data->cbs[0] = ok_cb; |
1230 data->cbs[0] = ok_cb; |