| 1071 req_field_changed_cb(GtkWidget *widget, PurpleRequestField *field) |
1071 req_field_changed_cb(GtkWidget *widget, PurpleRequestField *field) |
| 1072 { |
1072 { |
| 1073 PurpleRequestFieldGroup *group; |
1073 PurpleRequestFieldGroup *group; |
| 1074 PurpleRequestFields *fields; |
1074 PurpleRequestFields *fields; |
| 1075 PidginRequestData *req_data; |
1075 PidginRequestData *req_data; |
| |
1076 const GList *it; |
| 1076 |
1077 |
| 1077 group = purple_request_field_get_group(field); |
1078 group = purple_request_field_get_group(field); |
| 1078 fields = purple_request_field_group_get_fields_list(group); |
1079 fields = purple_request_field_group_get_fields_list(group); |
| 1079 req_data = purple_request_fields_get_ui_data(fields); |
1080 req_data = purple_request_fields_get_ui_data(fields); |
| 1080 |
1081 |
| 1081 gtk_widget_set_sensitive(req_data->ok_button, |
1082 gtk_widget_set_sensitive(req_data->ok_button, |
| 1082 purple_request_fields_all_required_filled(fields) && |
1083 purple_request_fields_all_required_filled(fields) && |
| 1083 purple_request_fields_all_valid(fields)); |
1084 purple_request_fields_all_valid(fields)); |
| |
1085 |
| |
1086 it = purple_request_fields_get_autosensitive(fields); |
| |
1087 for (; it != NULL; it = g_list_next(it)) { |
| |
1088 PurpleRequestField *field = it->data; |
| |
1089 GtkWidget *widget = purple_request_field_get_ui_data(field); |
| |
1090 gboolean sensitive; |
| |
1091 |
| |
1092 sensitive = purple_request_field_is_sensitive(field); |
| |
1093 gtk_widget_set_sensitive(widget, sensitive); |
| |
1094 |
| |
1095 /* XXX: and what about multiline? */ |
| |
1096 if (GTK_IS_EDITABLE(widget)) |
| |
1097 gtk_editable_set_editable(GTK_EDITABLE(widget), sensitive); |
| |
1098 } |
| 1084 } |
1099 } |
| 1085 |
1100 |
| 1086 static void |
1101 static void |
| 1087 setup_entry_field(GtkWidget *entry, PurpleRequestField *field) |
1102 setup_entry_field(GtkWidget *entry, PurpleRequestField *field) |
| 1088 { |
1103 { |
| 1136 const char *value; |
1151 const char *value; |
| 1137 GtkWidget *widget; |
1152 GtkWidget *widget; |
| 1138 gboolean is_editable; |
1153 gboolean is_editable; |
| 1139 |
1154 |
| 1140 value = purple_request_field_string_get_default_value(field); |
1155 value = purple_request_field_string_get_default_value(field); |
| 1141 is_editable = purple_request_field_string_is_editable(field); |
1156 is_editable = purple_request_field_is_sensitive(field); |
| 1142 |
1157 |
| 1143 if (purple_request_field_string_is_multiline(field)) |
1158 if (purple_request_field_string_is_multiline(field)) |
| 1144 { |
1159 { |
| 1145 GtkWidget *textview; |
1160 GtkWidget *textview; |
| 1146 |
1161 |
| 1165 } |
1180 } |
| 1166 |
1181 |
| 1167 gtk_widget_set_tooltip_text(textview, purple_request_field_get_tooltip(field)); |
1182 gtk_widget_set_tooltip_text(textview, purple_request_field_get_tooltip(field)); |
| 1168 |
1183 |
| 1169 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), is_editable); |
1184 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), is_editable); |
| 1170 gtk_widget_set_sensitive(textview, is_editable); |
|
| 1171 |
1185 |
| 1172 g_signal_connect(G_OBJECT(textview), "focus-out-event", |
1186 g_signal_connect(G_OBJECT(textview), "focus-out-event", |
| 1173 G_CALLBACK(field_string_focus_out_cb), field); |
1187 G_CALLBACK(field_string_focus_out_cb), field); |
| 1174 |
1188 |
| 1175 if (purple_request_field_is_required(field)) |
1189 if (purple_request_field_is_required(field)) |
| 1196 { |
1210 { |
| 1197 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); |
1211 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); |
| 1198 } |
1212 } |
| 1199 |
1213 |
| 1200 gtk_editable_set_editable(GTK_EDITABLE(widget), is_editable); |
1214 gtk_editable_set_editable(GTK_EDITABLE(widget), is_editable); |
| 1201 gtk_widget_set_sensitive(widget, is_editable); |
|
| 1202 |
1215 |
| 1203 g_signal_connect(G_OBJECT(widget), "focus-out-event", |
1216 g_signal_connect(G_OBJECT(widget), "focus-out-event", |
| 1204 G_CALLBACK(field_string_focus_out_cb), field); |
1217 G_CALLBACK(field_string_focus_out_cb), field); |
| 1205 } |
1218 } |
| 1206 |
1219 |
| 1873 else if (type == PURPLE_REQUEST_FIELD_CERTIFICATE) |
1886 else if (type == PURPLE_REQUEST_FIELD_CERTIFICATE) |
| 1874 widget = create_certificate_field(field); |
1887 widget = create_certificate_field(field); |
| 1875 else |
1888 else |
| 1876 continue; |
1889 continue; |
| 1877 } |
1890 } |
| |
1891 |
| |
1892 gtk_widget_set_sensitive(widget, |
| |
1893 purple_request_field_is_sensitive(field)); |
| 1878 |
1894 |
| 1879 if (label) |
1895 if (label) |
| 1880 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget); |
1896 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget); |
| 1881 |
1897 |
| 1882 if (type == PURPLE_REQUEST_FIELD_STRING && |
1898 if (type == PURPLE_REQUEST_FIELD_STRING && |