pidgin/gtkrequest.c

branch
cpw.malu.ft_thumbnails
changeset 29775
1c0628ef3dd0
parent 29731
e50d65336613
parent 29750
0fd6122b1088
child 30137
5ef8d377b643
equal deleted inserted replaced
29732:8a8fef36b57a 29775:1c0628ef3dd0
229 purple_request_field_bool_set_value(field, 229 purple_request_field_bool_set_value(field,
230 gtk_toggle_button_get_active(button)); 230 gtk_toggle_button_get_active(button));
231 } 231 }
232 232
233 static void 233 static void
234 field_choice_menu_cb(GtkOptionMenu *menu, PurpleRequestField *field) 234 field_choice_menu_cb(GtkComboBox *menu, PurpleRequestField *field)
235 { 235 {
236 purple_request_field_choice_set_value(field, 236 purple_request_field_choice_set_value(field,
237 gtk_option_menu_get_history(menu)); 237 gtk_combo_box_get_active(menu));
238 } 238 }
239 239
240 static void 240 static void
241 field_choice_option_cb(GtkRadioButton *button, PurpleRequestField *field) 241 field_choice_option_cb(GtkRadioButton *button, PurpleRequestField *field)
242 { 242 {
956 int num_labels = g_list_length(labels); 956 int num_labels = g_list_length(labels);
957 GList *l; 957 GList *l;
958 958
959 if (num_labels > 5) 959 if (num_labels > 5)
960 { 960 {
961 GtkWidget *menu; 961 widget = gtk_combo_box_new_text();
962 GtkWidget *item;
963
964 widget = gtk_option_menu_new();
965
966 menu = gtk_menu_new();
967 962
968 for (l = labels; l != NULL; l = l->next) 963 for (l = labels; l != NULL; l = l->next)
969 { 964 {
970 const char *text = l->data; 965 const char *text = l->data;
971 966 gtk_combo_box_append_text(GTK_COMBO_BOX(widget), text);
972 item = gtk_menu_item_new_with_label(text);
973 gtk_widget_show(item);
974
975 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
976 } 967 }
977 968
978 gtk_widget_show(menu); 969 gtk_combo_box_set_active(GTK_COMBO_BOX(widget),
979 gtk_option_menu_set_menu(GTK_OPTION_MENU(widget), menu);
980 gtk_option_menu_set_history(GTK_OPTION_MENU(widget),
981 purple_request_field_choice_get_default_value(field)); 970 purple_request_field_choice_get_default_value(field));
982 971
983 g_signal_connect(G_OBJECT(widget), "changed", 972 g_signal_connect(G_OBJECT(widget), "changed",
984 G_CALLBACK(field_choice_menu_cb), field); 973 G_CALLBACK(field_choice_menu_cb), field);
985 } 974 }
1092 GtkCellRenderer *renderer; 1081 GtkCellRenderer *renderer;
1093 GtkTreeSelection *sel; 1082 GtkTreeSelection *sel;
1094 GtkTreeViewColumn *column; 1083 GtkTreeViewColumn *column;
1095 GtkTreeIter iter; 1084 GtkTreeIter iter;
1096 GList *l; 1085 GList *l;
1086 GList *icons = NULL;
1087
1088 icons = purple_request_field_list_get_icons(field);
1097 1089
1098 /* Create the scrolled window */ 1090 /* Create the scrolled window */
1099 sw = gtk_scrolled_window_new(NULL, NULL); 1091 sw = gtk_scrolled_window_new(NULL, NULL);
1100 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 1092 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
1101 GTK_POLICY_AUTOMATIC, 1093 GTK_POLICY_AUTOMATIC,
1103 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), 1095 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
1104 GTK_SHADOW_IN); 1096 GTK_SHADOW_IN);
1105 gtk_widget_show(sw); 1097 gtk_widget_show(sw);
1106 1098
1107 /* Create the list store */ 1099 /* Create the list store */
1108 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); 1100 if (icons)
1101 store = gtk_list_store_new(3, G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF);
1102 else
1103 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING);
1109 1104
1110 /* Create the tree view */ 1105 /* Create the tree view */
1111 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); 1106 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
1112 g_object_unref(G_OBJECT(store)); 1107 g_object_unref(G_OBJECT(store));
1113 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); 1108 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
1122 1117
1123 renderer = gtk_cell_renderer_text_new(); 1118 renderer = gtk_cell_renderer_text_new();
1124 gtk_tree_view_column_pack_start(column, renderer, TRUE); 1119 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1125 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); 1120 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
1126 1121
1122 if (icons)
1123 {
1124 renderer = gtk_cell_renderer_pixbuf_new();
1125 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1126 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", 2);
1127
1128 gtk_widget_set_size_request(treeview, 200, 400);
1129 }
1130
1127 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) 1131 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
1128 { 1132 {
1129 const char *text = (const char *)l->data; 1133 const char *text = (const char *)l->data;
1130 1134
1131 gtk_list_store_append(store, &iter); 1135 gtk_list_store_append(store, &iter);
1132 1136
1133 gtk_list_store_set(store, &iter, 1137 if (icons)
1138 {
1139 const char *icon_path = (const char *)icons->data;
1140 GdkPixbuf* pixbuf = NULL;
1141
1142 if (icon_path)
1143 pixbuf = gdk_pixbuf_new_from_file(icon_path, NULL);
1144
1145 gtk_list_store_set(store, &iter,
1146 0, purple_request_field_list_get_data(field, text),
1147 1, text,
1148 2, pixbuf,
1149 -1);
1150 icons = icons->next;
1151 }
1152 else
1153 gtk_list_store_set(store, &iter,
1134 0, purple_request_field_list_get_data(field, text), 1154 0, purple_request_field_list_get_data(field, text),
1135 1, text, 1155 1, text,
1136 -1); 1156 -1);
1137 1157
1138 if (purple_request_field_list_is_selected(field, text)) 1158 if (purple_request_field_list_is_selected(field, text))

mercurial