pidgin/gtkrequest.c

changeset 26378
e85d894af8a5
parent 25900
0be61f1b3dd1
child 26657
1067482b6de1
child 26930
c4b9d2780413
child 27427
00f91afbd4d9
child 27660
f9d3ec6e177e
equal deleted inserted replaced
26377:9124a345ed3a 26378:e85d894af8a5
382 gtk_widget_set_name(entry, "pidgin_request_imhtml"); 382 gtk_widget_set_name(entry, "pidgin_request_imhtml");
383 if (default_value != NULL) 383 if (default_value != NULL)
384 gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL); 384 gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL);
385 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); 385 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
386 gtk_widget_show(frame); 386 gtk_widget_show(frame);
387
388 gtk_imhtml_set_return_inserts_newline(GTK_IMHTML(entry));
387 } 389 }
388 else { 390 else {
389 if (multiline) { 391 if (multiline) {
390 GtkWidget *sw; 392 GtkWidget *sw;
391 393
680 } 682 }
681 683
682 static void 684 static void
683 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field) 685 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field)
684 { 686 {
687 PurpleRequestFieldGroup *group;
685 PidginRequestData *req_data; 688 PidginRequestData *req_data;
686 const char *text = gtk_entry_get_text(GTK_ENTRY(entry)); 689 const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
687 690
688 purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text)); 691 purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text));
689 692
690 req_data = (PidginRequestData *)field->group->fields_list->ui_data; 693 group = purple_request_field_get_group(field);
694 req_data = (PidginRequestData *)group->fields_list->ui_data;
691 695
692 gtk_widget_set_sensitive(req_data->ok_button, 696 gtk_widget_set_sensitive(req_data->ok_button,
693 purple_request_fields_all_required_filled(field->group->fields_list)); 697 purple_request_fields_all_required_filled(group->fields_list));
694 } 698 }
695 699
696 static void 700 static void
697 setup_entry_field(GtkWidget *entry, PurpleRequestField *field) 701 setup_entry_field(GtkWidget *entry, PurpleRequestField *field)
698 { 702 {
709 if ((type_hint = purple_request_field_get_type_hint(field)) != NULL) 713 if ((type_hint = purple_request_field_get_type_hint(field)) != NULL)
710 { 714 {
711 if (purple_str_has_prefix(type_hint, "screenname")) 715 if (purple_str_has_prefix(type_hint, "screenname"))
712 { 716 {
713 GtkWidget *optmenu = NULL; 717 GtkWidget *optmenu = NULL;
714 GList *fields = field->group->fields; 718 PurpleRequestFieldGroup *group = purple_request_field_get_group(field);
719 GList *fields = group->fields;
715 while (fields) 720 while (fields)
716 { 721 {
717 PurpleRequestField *fld = fields->data; 722 PurpleRequestField *fld = fields->data;
718 fields = fields->next; 723 fields = fields->next;
719 724
720 if (purple_request_field_get_type(fld) == PURPLE_REQUEST_FIELD_ACCOUNT) 725 if (purple_request_field_get_type(fld) == PURPLE_REQUEST_FIELD_ACCOUNT)
721 { 726 {
722 const char *type_hint = purple_request_field_get_type_hint(fld); 727 const char *type_hint = purple_request_field_get_type_hint(fld);
723 if (type_hint != NULL && strcmp(type_hint, "account") == 0) 728 if (type_hint != NULL && strcmp(type_hint, "account") == 0)
724 { 729 {
725 if (fld->ui_data == NULL) 730 optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld));
726 fld->ui_data = create_account_field(fld); 731 if (optmenu == NULL) {
727 optmenu = GTK_WIDGET(fld->ui_data); 732 optmenu = GTK_WIDGET(create_account_field(fld));
733 purple_request_field_set_ui_data(field, optmenu);
734 }
728 break; 735 break;
729 } 736 }
730 } 737 }
731 } 738 }
732 pidgin_setup_screenname_autocomplete_with_filter(entry, optmenu, pidgin_screenname_autocomplete_default_filter, GINT_TO_POINTER(!strcmp(type_hint, "screenname-all"))); 739 pidgin_setup_screenname_autocomplete_with_filter(entry, optmenu, pidgin_screenname_autocomplete_default_filter, GINT_TO_POINTER(!strcmp(type_hint, "screenname-all")));
1336 } 1343 }
1337 1344
1338 gtk_widget_show(label); 1345 gtk_widget_show(label);
1339 } 1346 }
1340 1347
1341 if (field->ui_data != NULL) 1348 widget = GTK_WIDGET(purple_request_field_get_ui_data(field));
1342 widget = GTK_WIDGET(field->ui_data); 1349 if (widget == NULL)
1343 else if (type == PURPLE_REQUEST_FIELD_STRING) 1350 {
1344 widget = create_string_field(field); 1351 if (type == PURPLE_REQUEST_FIELD_STRING)
1345 else if (type == PURPLE_REQUEST_FIELD_INTEGER) 1352 widget = create_string_field(field);
1346 widget = create_int_field(field); 1353 else if (type == PURPLE_REQUEST_FIELD_INTEGER)
1347 else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) 1354 widget = create_int_field(field);
1348 widget = create_bool_field(field); 1355 else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
1349 else if (type == PURPLE_REQUEST_FIELD_CHOICE) 1356 widget = create_bool_field(field);
1350 widget = create_choice_field(field); 1357 else if (type == PURPLE_REQUEST_FIELD_CHOICE)
1351 else if (type == PURPLE_REQUEST_FIELD_LIST) 1358 widget = create_choice_field(field);
1352 widget = create_list_field(field); 1359 else if (type == PURPLE_REQUEST_FIELD_LIST)
1353 else if (type == PURPLE_REQUEST_FIELD_IMAGE) 1360 widget = create_list_field(field);
1354 widget = create_image_field(field); 1361 else if (type == PURPLE_REQUEST_FIELD_IMAGE)
1355 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) 1362 widget = create_image_field(field);
1356 widget = create_account_field(field); 1363 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
1357 else 1364 widget = create_account_field(field);
1358 continue; 1365 else
1366 continue;
1367 }
1359 1368
1360 if (label) 1369 if (label)
1361 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget); 1370 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
1362 1371
1363 if (type == PURPLE_REQUEST_FIELD_STRING && 1372 if (type == PURPLE_REQUEST_FIELD_STRING &&
1398 5, 0); 1407 5, 0);
1399 } 1408 }
1400 1409
1401 gtk_widget_show(widget); 1410 gtk_widget_show(widget);
1402 1411
1403 field->ui_data = widget; 1412 purple_request_field_set_ui_data(field, widget);
1404 } 1413 }
1405 } 1414 }
1406 } 1415 }
1407 1416
1408 g_object_unref(sg); 1417 g_object_unref(sg);

mercurial