| 677 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), |
677 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), |
| 678 hbox); |
678 hbox); |
| 679 |
679 |
| 680 /* Dialog icon. */ |
680 /* Dialog icon. */ |
| 681 if (icon_data) { |
681 if (icon_data) { |
| 682 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); |
682 GdkPixbuf *pixbuf = pidgin_pixbuf_from_data(icon_data, icon_size); |
| 683 GdkPixbuf *pixbuf = NULL; |
683 if (pixbuf) { |
| 684 if (gdk_pixbuf_loader_write(loader, icon_data, icon_size, NULL)) { |
684 /* scale the image if it is too large */ |
| 685 pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); |
685 int width = gdk_pixbuf_get_width(pixbuf); |
| 686 if (pixbuf) { |
686 int height = gdk_pixbuf_get_height(pixbuf); |
| 687 /* scale the image if it is too large */ |
687 if (width > 128 || height > 128) { |
| 688 int width = gdk_pixbuf_get_width(pixbuf); |
688 int scaled_width = width > height ? 128 : (128 * width) / height; |
| 689 int height = gdk_pixbuf_get_height(pixbuf); |
689 int scaled_height = height > width ? 128 : (128 * height) / width; |
| 690 if (width > 128 || height > 128) { |
690 GdkPixbuf *scaled = |
| 691 int scaled_width = width > height ? 128 : (128 * width) / height; |
691 gdk_pixbuf_scale_simple(pixbuf, scaled_width, scaled_height, |
| 692 int scaled_height = height > width ? 128 : (128 * height) / width; |
692 GDK_INTERP_BILINEAR); |
| 693 GdkPixbuf *scaled = |
693 |
| 694 gdk_pixbuf_scale_simple(pixbuf, scaled_width, scaled_height, |
694 purple_debug_info("pidgin", |
| 695 GDK_INTERP_BILINEAR); |
695 "dialog icon was too large, scaled it down\n"); |
| 696 |
696 if (scaled) { |
| 697 purple_debug_info("pidgin", |
697 g_object_unref(pixbuf); |
| 698 "dialog icon was too large, scale it down\n"); |
698 pixbuf = scaled; |
| 699 if (scaled) { |
|
| 700 g_object_unref(pixbuf); |
|
| 701 pixbuf = scaled; |
|
| 702 } |
|
| 703 } |
699 } |
| 704 img = gtk_image_new_from_pixbuf(pixbuf); |
|
| 705 } |
700 } |
| |
701 img = gtk_image_new_from_pixbuf(pixbuf); |
| |
702 g_object_unref(pixbuf); |
| 706 } else { |
703 } else { |
| 707 purple_debug_info("pidgin", "failed to parse dialog icon\n"); |
704 purple_debug_info("pidgin", "failed to parse dialog icon\n"); |
| 708 } |
705 } |
| 709 gdk_pixbuf_loader_close(loader, NULL); |
|
| 710 g_object_unref(loader); |
|
| 711 } |
706 } |
| 712 |
707 |
| 713 if (!img) { |
708 if (!img) { |
| 714 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, |
709 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, |
| 715 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); |
710 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); |
| 886 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); |
881 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); |
| 887 |
882 |
| 888 gtk_text_buffer_set_text(buffer, value, -1); |
883 gtk_text_buffer_set_text(buffer, value, -1); |
| 889 } |
884 } |
| 890 |
885 |
| |
886 #if GTK_CHECK_VERSION(2,12,0) |
| |
887 gtk_widget_set_tooltip_text(textview, purple_request_field_get_tooltip(field)); |
| |
888 #endif |
| |
889 |
| 891 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), |
890 gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), |
| 892 purple_request_field_string_is_editable(field)); |
891 purple_request_field_string_is_editable(field)); |
| 893 |
892 |
| 894 g_signal_connect(G_OBJECT(textview), "focus-out-event", |
893 g_signal_connect(G_OBJECT(textview), "focus-out-event", |
| 895 G_CALLBACK(field_string_focus_out_cb), field); |
894 G_CALLBACK(field_string_focus_out_cb), field); |
| 909 |
908 |
| 910 setup_entry_field(widget, field); |
909 setup_entry_field(widget, field); |
| 911 |
910 |
| 912 if (value != NULL) |
911 if (value != NULL) |
| 913 gtk_entry_set_text(GTK_ENTRY(widget), value); |
912 gtk_entry_set_text(GTK_ENTRY(widget), value); |
| |
913 |
| |
914 #if GTK_CHECK_VERSION(2,12,0) |
| |
915 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
916 #endif |
| 914 |
917 |
| 915 if (purple_request_field_string_is_masked(field)) |
918 if (purple_request_field_string_is_masked(field)) |
| 916 { |
919 { |
| 917 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); |
920 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); |
| 918 #if !GTK_CHECK_VERSION(2,16,0) |
921 #if !GTK_CHECK_VERSION(2,16,0) |
| 950 g_snprintf(buf, sizeof(buf), "%d", value); |
953 g_snprintf(buf, sizeof(buf), "%d", value); |
| 951 |
954 |
| 952 gtk_entry_set_text(GTK_ENTRY(widget), buf); |
955 gtk_entry_set_text(GTK_ENTRY(widget), buf); |
| 953 } |
956 } |
| 954 |
957 |
| |
958 #if GTK_CHECK_VERSION(2,12,0) |
| |
959 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
960 #endif |
| |
961 |
| 955 g_signal_connect(G_OBJECT(widget), "focus-out-event", |
962 g_signal_connect(G_OBJECT(widget), "focus-out-event", |
| 956 G_CALLBACK(field_int_focus_out_cb), field); |
963 G_CALLBACK(field_int_focus_out_cb), field); |
| 957 |
964 |
| 958 return widget; |
965 return widget; |
| 959 } |
966 } |
| 963 { |
970 { |
| 964 GtkWidget *widget; |
971 GtkWidget *widget; |
| 965 |
972 |
| 966 widget = gtk_check_button_new_with_label( |
973 widget = gtk_check_button_new_with_label( |
| 967 purple_request_field_get_label(field)); |
974 purple_request_field_get_label(field)); |
| |
975 |
| |
976 #if GTK_CHECK_VERSION(2,12,0) |
| |
977 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
978 #endif |
| 968 |
979 |
| 969 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), |
980 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), |
| 970 purple_request_field_bool_get_default_value(field)); |
981 purple_request_field_bool_get_default_value(field)); |
| 971 |
982 |
| 972 g_signal_connect(G_OBJECT(widget), "toggled", |
983 g_signal_connect(G_OBJECT(widget), "toggled", |
| 993 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widget), text); |
1004 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widget), text); |
| 994 } |
1005 } |
| 995 |
1006 |
| 996 gtk_combo_box_set_active(GTK_COMBO_BOX(widget), |
1007 gtk_combo_box_set_active(GTK_COMBO_BOX(widget), |
| 997 purple_request_field_choice_get_default_value(field)); |
1008 purple_request_field_choice_get_default_value(field)); |
| |
1009 |
| |
1010 #if GTK_CHECK_VERSION(2,12,0) |
| |
1011 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1012 #endif |
| 998 |
1013 |
| 999 g_signal_connect(G_OBJECT(widget), "changed", |
1014 g_signal_connect(G_OBJECT(widget), "changed", |
| 1000 G_CALLBACK(field_choice_menu_cb), field); |
1015 G_CALLBACK(field_choice_menu_cb), field); |
| 1001 } |
1016 } |
| 1002 else |
1017 else |
| 1011 else |
1026 else |
| 1012 box = gtk_vbox_new(FALSE, 0); |
1027 box = gtk_vbox_new(FALSE, 0); |
| 1013 |
1028 |
| 1014 widget = box; |
1029 widget = box; |
| 1015 |
1030 |
| |
1031 #if GTK_CHECK_VERSION(2,12,0) |
| |
1032 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1033 #endif |
| |
1034 |
| 1016 for (l = labels, i = 0; l != NULL; l = l->next, i++) |
1035 for (l = labels, i = 0; l != NULL; l = l->next, i++) |
| 1017 { |
1036 { |
| 1018 const char *text = l->data; |
1037 const char *text = l->data; |
| 1019 |
1038 |
| 1020 radio = gtk_radio_button_new_with_label_from_widget( |
1039 radio = gtk_radio_button_new_with_label_from_widget( |
| 1040 static GtkWidget * |
1059 static GtkWidget * |
| 1041 create_image_field(PurpleRequestField *field) |
1060 create_image_field(PurpleRequestField *field) |
| 1042 { |
1061 { |
| 1043 GtkWidget *widget; |
1062 GtkWidget *widget; |
| 1044 GdkPixbuf *buf, *scale; |
1063 GdkPixbuf *buf, *scale; |
| 1045 GdkPixbufLoader *loader; |
1064 |
| 1046 |
1065 buf = pidgin_pixbuf_from_data( |
| 1047 loader = gdk_pixbuf_loader_new(); |
1066 (const guchar *)purple_request_field_image_get_buffer(field), |
| 1048 gdk_pixbuf_loader_write(loader, |
1067 purple_request_field_image_get_size(field)); |
| 1049 (const guchar *)purple_request_field_image_get_buffer(field), |
|
| 1050 purple_request_field_image_get_size(field), |
|
| 1051 NULL); |
|
| 1052 gdk_pixbuf_loader_close(loader, NULL); |
|
| 1053 buf = gdk_pixbuf_loader_get_pixbuf(loader); |
|
| 1054 |
1068 |
| 1055 scale = gdk_pixbuf_scale_simple(buf, |
1069 scale = gdk_pixbuf_scale_simple(buf, |
| 1056 purple_request_field_image_get_scale_x(field) * gdk_pixbuf_get_width(buf), |
1070 purple_request_field_image_get_scale_x(field) * gdk_pixbuf_get_width(buf), |
| 1057 purple_request_field_image_get_scale_y(field) * gdk_pixbuf_get_height(buf), |
1071 purple_request_field_image_get_scale_y(field) * gdk_pixbuf_get_height(buf), |
| 1058 GDK_INTERP_BILINEAR); |
1072 GDK_INTERP_BILINEAR); |
| 1059 widget = gtk_image_new_from_pixbuf(scale); |
1073 widget = gtk_image_new_from_pixbuf(scale); |
| 1060 g_object_unref(G_OBJECT(loader)); |
1074 g_object_unref(G_OBJECT(buf)); |
| 1061 g_object_unref(G_OBJECT(scale)); |
1075 g_object_unref(G_OBJECT(scale)); |
| |
1076 |
| |
1077 #if GTK_CHECK_VERSION(2,12,0) |
| |
1078 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1079 #endif |
| 1062 |
1080 |
| 1063 return widget; |
1081 return widget; |
| 1064 } |
1082 } |
| 1065 |
1083 |
| 1066 static GtkWidget * |
1084 static GtkWidget * |
| 1072 purple_request_field_account_get_default_value(field), |
1090 purple_request_field_account_get_default_value(field), |
| 1073 purple_request_field_account_get_show_all(field), |
1091 purple_request_field_account_get_show_all(field), |
| 1074 G_CALLBACK(field_account_cb), |
1092 G_CALLBACK(field_account_cb), |
| 1075 purple_request_field_account_get_filter(field), |
1093 purple_request_field_account_get_filter(field), |
| 1076 field); |
1094 field); |
| |
1095 |
| |
1096 #if GTK_CHECK_VERSION(2,12,0) |
| |
1097 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
| |
1098 #endif |
| 1077 |
1099 |
| 1078 return widget; |
1100 return widget; |
| 1079 } |
1101 } |
| 1080 |
1102 |
| 1081 static void |
1103 static void |
| 1156 { |
1178 { |
| 1157 const char *icon_path = (const char *)icons->data; |
1179 const char *icon_path = (const char *)icons->data; |
| 1158 GdkPixbuf* pixbuf = NULL; |
1180 GdkPixbuf* pixbuf = NULL; |
| 1159 |
1181 |
| 1160 if (icon_path) |
1182 if (icon_path) |
| 1161 pixbuf = gdk_pixbuf_new_from_file(icon_path, NULL); |
1183 pixbuf = pidgin_pixbuf_new_from_file(icon_path); |
| 1162 |
1184 |
| 1163 gtk_list_store_set(store, &iter, |
1185 gtk_list_store_set(store, &iter, |
| 1164 0, purple_request_field_list_get_data(field, text), |
1186 0, purple_request_field_list_get_data(field, text), |
| 1165 1, text, |
1187 1, text, |
| 1166 2, pixbuf, |
1188 2, pixbuf, |