+
+static void icon_chooser_ok_clicked(GtkButton *button,
+ ToolbarPage *prefs_toolbar)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GdkPixbuf *pix;
+ gchar *icon_file;
+
+ g_return_if_fail(prefs_toolbar != NULL);
+
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection
+ (GTK_TREE_VIEW(prefs_toolbar->icon_chooser_list)),
+ &model, &iter))
+ return;
+
+ gtk_tree_model_get(model, &iter,
+ SET_ICON, &pix,
+ SET_FILENAME, &icon_file,
+ -1);
+
+ g_free(prefs_toolbar->item_icon_file);
+ prefs_toolbar->item_icon_file = icon_file;
+
+ gtk_button_set_image(GTK_BUTTON(prefs_toolbar->icon_button),
+ gtk_image_new_from_pixbuf(pix));
+
+ gtk_widget_destroy(prefs_toolbar->icon_chooser_win);
+ prefs_toolbar->icon_chooser_win = NULL;
+ prefs_toolbar->icon_chooser_list = NULL;
+}
+
+static void icon_chooser_cancel_clicked(GtkButton *button,
+ ToolbarPage *prefs_toolbar)
+{
+ g_return_if_fail(prefs_toolbar != NULL);
+
+ gtk_widget_destroy(prefs_toolbar->icon_chooser_win);
+ prefs_toolbar->icon_chooser_win = NULL;
+ prefs_toolbar->icon_chooser_list = NULL;
+}
+
+static void icon_chooser_create(GtkButton *button, ToolbarPage *prefs_toolbar)
+{
+ static GtkWidget *icon_chooser_win;
+ GtkWidget *label;
+ GtkWidget *scrollwin;
+ GtkWidget *vbox;
+ GtkWidget *confirm_area;
+ GtkWidget *ok_btn;
+ GtkWidget *cancel_btn;
+ GtkTreeView *list_view;
+ GtkListStore *store;
+ GtkTreeSelection *selector;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkTreeIter iter;
+ gint i;
+
+ store = gtk_list_store_new(2,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_STRING,
+ -1);
+
+ gtk_list_store_clear(store);
+
+ for (i = 0; i < STOCK_PIXMAP_EMPTY; i++) {
+ GdkPixbuf *pixbuf;
+ if (i == STOCK_PIXMAP_CLAWS_MAIL_LOGO) /* that's too big */
+ continue;
+
+ stock_pixbuf_gdk(prefs_toolbar->window, i, &pixbuf);
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ SET_ICON, pixbuf,
+ SET_FILENAME, stock_pixmap_get_name((StockPixmap) i),
+ -1);
+ }
+
+ icon_chooser_win = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "prefs_toolbar");
+ gtk_window_set_title(GTK_WINDOW(icon_chooser_win), _("Toolbar item icon"));
+ gtk_window_set_position(GTK_WINDOW(icon_chooser_win), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(icon_chooser_win), FALSE);
+ gtk_widget_set_size_request(icon_chooser_win, 300, 250);
+
+ vbox = gtk_vbox_new(FALSE, 5);
+ gtk_widget_show(vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), VBOX_BORDER);
+ gtk_container_add(GTK_CONTAINER(icon_chooser_win), vbox);
+
+ label = gtk_label_new(_("Choose icon:"));
+ gtk_widget_show(label);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, -1);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+
+ scrollwin = gtk_scrolled_window_new(NULL, NULL);
+ gtk_widget_show(scrollwin);
+ gtk_box_pack_start(GTK_BOX(vbox), scrollwin, TRUE, TRUE, 0);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ list_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
+ gtk_widget_show(GTK_WIDGET(list_view));
+
+ column = gtk_tree_view_column_new();
+
+ renderer = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "pixbuf", SET_ICON,
+ NULL);
+
+ gtk_tree_view_append_column(list_view, column);
+
+ column = gtk_tree_view_column_new();
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", SET_FILENAME,
+ NULL);
+
+ gtk_tree_view_append_column(list_view, column);
+
+ gtk_tree_view_set_rules_hint(list_view, prefs_common.use_stripes_everywhere);
+ gtk_tree_view_set_headers_visible(list_view, FALSE);
+
+ selector = gtk_tree_view_get_selection(list_view);
+ gtk_tree_selection_set_mode(selector, GTK_SELECTION_SINGLE);
+
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection
+ (list_view), &iter);
+ gtk_container_add(GTK_CONTAINER(scrollwin), GTK_WIDGET(list_view));
+
+ gtkut_stock_button_set_create(&confirm_area, &cancel_btn, GTK_STOCK_CANCEL,
+ &ok_btn, GTK_STOCK_OK, NULL, NULL);
+
+ gtk_box_pack_start(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
+ gtk_widget_show(confirm_area);
+ gtk_widget_grab_default(ok_btn);
+
+ g_signal_connect(G_OBJECT(ok_btn), "clicked",
+ G_CALLBACK(icon_chooser_ok_clicked), prefs_toolbar);
+ g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+ G_CALLBACK(icon_chooser_cancel_clicked), prefs_toolbar);
+
+ gtk_widget_show_all(icon_chooser_win);
+ gtk_window_set_modal(GTK_WINDOW(icon_chooser_win), TRUE);
+
+ prefs_toolbar->icon_chooser_win = icon_chooser_win;
+ prefs_toolbar->icon_chooser_list = GTK_WIDGET(list_view);
+}