Use a toolbar with symbolic icons under scrolled lists

This commit is contained in:
William Jon McCann 2011-01-27 15:21:10 -05:00
parent 95ad67d927
commit b64c6f2fd3

View File

@ -63,6 +63,8 @@
#include "gtksizerequest.h"
#include "gtkstock.h"
#include "gtktable.h"
#include "gtktoolbar.h"
#include "gtktoolbutton.h"
#include "gtktooltip.h"
#include "gtktreednd.h"
#include "gtktreeprivate.h"
@ -2451,27 +2453,24 @@ filter_create (GtkFileChooserDefault *impl)
}
static GtkWidget *
button_new (GtkFileChooserDefault *impl,
const char *text,
const char *stock_id,
gboolean sensitive,
gboolean show,
GCallback callback)
toolbutton_new (GtkFileChooserDefault *impl,
const char *icon_name,
gboolean sensitive,
gboolean show,
GCallback callback)
{
GtkWidget *button;
GtkWidget *image;
GtkToolItem *item;
button = gtk_button_new_with_mnemonic (text);
image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
gtk_button_set_image (GTK_BUTTON (button), image);
item = gtk_tool_button_new (NULL, NULL);
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), icon_name);
gtk_widget_set_sensitive (button, sensitive);
g_signal_connect (button, "clicked", callback, impl);
gtk_widget_set_sensitive (GTK_WIDGET (item), sensitive);
g_signal_connect (item, "clicked", callback, impl);
if (show)
gtk_widget_show (button);
gtk_widget_show (GTK_WIDGET (item));
return button;
return GTK_WIDGET (item);
}
/* Looks for a path among the shortcuts; returns its index or -1 if it doesn't exist */
@ -3724,46 +3723,53 @@ shortcuts_pane_create (GtkFileChooserDefault *impl,
GtkSizeGroup *size_group)
{
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *toolbar;
GtkWidget *widget;
GtkStyleContext *context;
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_show (vbox);
/* Shortcuts tree */
widget = shortcuts_list_create (impl);
gtk_size_group_add_widget (size_group, widget);
context = gtk_widget_get_style_context (widget);
gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
/* Box for buttons */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
gtk_size_group_add_widget (size_group, hbox);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
toolbar = gtk_toolbar_new ();
gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar), GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
gtk_widget_show (toolbar);
context = gtk_widget_get_style_context (toolbar);
gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
/* Add bookmark button */
impl->browse_shortcuts_add_button = button_new (impl,
_("_Add"),
GTK_STOCK_ADD,
FALSE,
TRUE,
G_CALLBACK (add_bookmark_button_clicked_cb));
gtk_box_pack_start (GTK_BOX (hbox), impl->browse_shortcuts_add_button, TRUE, TRUE, 0);
impl->browse_shortcuts_add_button = toolbutton_new (impl,
"list-add-symbolic",
FALSE,
TRUE,
G_CALLBACK (add_bookmark_button_clicked_cb));
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (impl->browse_shortcuts_add_button), 0);
gtk_widget_set_tooltip_text (impl->browse_shortcuts_add_button,
_("Add the selected folder to the Bookmarks"));
/* Remove bookmark button */
impl->browse_shortcuts_remove_button = button_new (impl,
_("_Remove"),
GTK_STOCK_REMOVE,
FALSE,
TRUE,
G_CALLBACK (remove_bookmark_button_clicked_cb));
gtk_box_pack_start (GTK_BOX (hbox), impl->browse_shortcuts_remove_button, TRUE, TRUE, 0);
impl->browse_shortcuts_remove_button = toolbutton_new (impl,
"list-remove-symbolic",
FALSE,
TRUE,
G_CALLBACK (remove_bookmark_button_clicked_cb));
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (impl->browse_shortcuts_remove_button), 1);
gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button,
_("Remove the selected bookmark"));
@ -4454,6 +4460,7 @@ file_pane_create (GtkFileChooserDefault *impl,
widget = create_file_list (impl);
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
gtk_size_group_add_widget (size_group, widget);
/* Preview */
@ -4470,7 +4477,6 @@ file_pane_create (GtkFileChooserDefault *impl,
gtk_widget_show (widget);
gtk_box_pack_end (GTK_BOX (impl->filter_combo_hbox), widget, FALSE, FALSE, 0);
gtk_size_group_add_widget (size_group, impl->filter_combo_hbox);
gtk_box_pack_end (GTK_BOX (vbox), impl->filter_combo_hbox, FALSE, FALSE, 0);
return vbox;
@ -4989,7 +4995,7 @@ browse_widgets_create (GtkFileChooserDefault *impl)
GtkWidget *widget;
GtkSizeGroup *size_group;
/* size group is used by the [+][-] buttons and the filter combo */
/* size group is used by the scrolled windows of the panes */
size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
@ -5032,6 +5038,7 @@ browse_widgets_create (GtkFileChooserDefault *impl)
gtk_box_pack_start (GTK_BOX (impl->location_entry_box), impl->location_label, FALSE, FALSE, 0);
/* Paned widget */
hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
gtk_widget_show (hpaned);
gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0);