diff options
author | Federico Mena Quintero <federico@ximian.com> | 2004-01-06 04:18:42 +0000 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2004-01-06 04:18:42 +0000 |
commit | 50e38e513a054f5b2e5ea1315e3c9b731f38c2bf (patch) | |
tree | e55f31aac9b172fbcf8a6c601283fa520525c834 /gtk | |
parent | d5e05026026b8f94bb6f1932ad900ff50cf6ad87 (diff) | |
download | gtk+-50e38e513a054f5b2e5ea1315e3c9b731f38c2bf.tar.gz |
New helper function. (toolbar_create): Do not use a toolbar widget, just
2004-01-05 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkfilechooserdefault.c (toolbar_button_new): New helper
function.
(toolbar_create): Do not use a toolbar widget, just an hbox
instead. Add the bookmarks buttons and the current folder label
here.
(create_filename_entry_and_filter_combo): Create the filter combo
here.
(filter_create): Don't show the filter combo initially.
(up_button_cb): Renamed from toolbar_up_cb().
(create_shortcuts_buttons): Removed.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkfilechooserdefault.c | 264 |
1 files changed, 100 insertions, 164 deletions
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index ac3e66b647..615487fcc0 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -45,7 +45,6 @@ #include "gtksizegroup.h" #include "gtkstock.h" #include "gtktable.h" -#include "gtktoolbar.h" #include "gtktoolbutton.h" #include "gtktreeview.h" #include "gtktreemodelsort.h" @@ -97,13 +96,10 @@ struct _GtkFileChooserDefault GtkFilePath *current_folder; GtkFilePath *preview_path; - GtkToolItem *up_button; - GtkToolItem *filter_separator; - GtkToolItem *filter_item; + GtkWidget *up_button; GtkWidget *preview_frame; - GtkWidget *toolbar; GtkWidget *filter_combo; GtkWidget *folder_label; GtkWidget *tree_scrollwin; @@ -242,6 +238,11 @@ static void list_row_activated (GtkTreeView *tree_view, static void entry_activate (GtkEntry *entry, GtkFileChooserDefault *impl); +static void add_bookmark_button_clicked_cb (GtkButton *button, + GtkFileChooserDefault *impl); +static void remove_bookmark_button_clicked_cb (GtkButton *button, + GtkFileChooserDefault *impl); + static void tree_name_data_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, @@ -818,8 +819,8 @@ create_shortcuts_model (GtkFileChooserDefault *impl) /* Callback used when the "Up" toolbar button is clicked */ static void -toolbar_up_cb (GtkToolButton *button, - GtkFileChooserDefault *impl) +up_button_cb (GtkToolButton *button, + GtkFileChooserDefault *impl) { GtkFilePath *parent_path; GError *error; @@ -840,71 +841,89 @@ toolbar_up_cb (GtkToolButton *button, error); } -/* Appends an item to the toolbar */ -static GtkToolItem * -toolbar_add_item (GtkFileChooserDefault *impl, - const char *stock_id, - GCallback callback) +/* Creates the widgets for the filter combo box */ +static GtkWidget * +filter_create (GtkFileChooserDefault *impl) { - GtkToolItem *item; - - item = gtk_tool_button_new_from_stock (stock_id); - g_signal_connect (item, "clicked", callback, impl); - gtk_toolbar_insert (GTK_TOOLBAR (impl->toolbar), item, -1); - gtk_widget_show (GTK_WIDGET (item)); + impl->filter_combo = gtk_combo_box_new_text (); + g_signal_connect (impl->filter_combo, "changed", + G_CALLBACK (filter_combo_changed), impl); - return item; + return impl->filter_combo; } -/* Creates the widgets for the filter combo box */ static GtkWidget * -filter_create (GtkFileChooserDefault *impl) +toolbar_button_new (GtkFileChooserDefault *impl, + const char *text, + const char *stock_id, + gboolean sensitive, + GCallback callback) { - GtkWidget *alignment; + GtkWidget *button; GtkWidget *hbox; - GtkWidget *label; + GtkWidget *widget; - alignment = gtk_alignment_new (0.0, 0.5, 0.0, 1.0); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); - gtk_widget_show (alignment); + button = gtk_button_new (); - hbox = gtk_hbox_new (FALSE, 12); - gtk_container_add (GTK_CONTAINER (alignment), hbox); - gtk_widget_show (hbox); - - label = gtk_label_new_with_mnemonic (_("Files of _type:")); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - gtk_widget_show (label); + hbox = gtk_hbox_new (FALSE, 2); + gtk_container_add (GTK_CONTAINER (button), hbox); - impl->filter_combo = gtk_combo_box_new_text (); - gtk_box_pack_start (GTK_BOX (hbox), impl->filter_combo, FALSE, FALSE, 0); - gtk_widget_show (impl->filter_combo); + widget = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), impl->filter_combo); + widget = gtk_label_new (text); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - g_signal_connect (impl->filter_combo, "changed", - G_CALLBACK (filter_combo_changed), impl); + gtk_widget_set_sensitive (button, sensitive); + g_signal_connect (button, "clicked", callback, impl); - return alignment; + return button; } -/* Creates the toolbar widget */ +/* Creates the widgets in the toolbar */ static GtkWidget * toolbar_create (GtkFileChooserDefault *impl) { - impl->toolbar = gtk_toolbar_new (); - gtk_toolbar_set_style (GTK_TOOLBAR (impl->toolbar), GTK_TOOLBAR_ICONS); + GtkWidget *hbox; - impl->up_button = toolbar_add_item (impl, GTK_STOCK_GO_UP, G_CALLBACK (toolbar_up_cb)); + hbox = gtk_hbox_new (FALSE, 12); + + /* Add bookmark button */ - impl->filter_separator = gtk_separator_tool_item_new (); - gtk_toolbar_insert (GTK_TOOLBAR (impl->toolbar), impl->filter_separator, -1); + impl->add_bookmark_button = toolbar_button_new (impl, + _("Add"), + GTK_STOCK_ADD, + FALSE, + G_CALLBACK (add_bookmark_button_clicked_cb)); + gtk_box_pack_start (GTK_BOX (hbox), impl->add_bookmark_button, FALSE, FALSE, 0); - impl->filter_item = gtk_tool_item_new (); - gtk_container_add (GTK_CONTAINER (impl->filter_item), filter_create (impl)); - gtk_toolbar_insert (GTK_TOOLBAR (impl->toolbar), impl->filter_item, -1); + /* Remove bookmark button */ + + impl->remove_bookmark_button = toolbar_button_new (impl, + _("Remove"), + GTK_STOCK_REMOVE, + FALSE, + G_CALLBACK (remove_bookmark_button_clicked_cb)); + gtk_box_pack_start (GTK_BOX (hbox), impl->remove_bookmark_button, FALSE, FALSE, 0); - return impl->toolbar; + /* Up button */ + + impl->up_button = toolbar_button_new (impl, + _("Up"), + GTK_STOCK_GO_UP, + FALSE, + G_CALLBACK (up_button_cb)); + gtk_box_pack_start (GTK_BOX (hbox), impl->up_button, FALSE, FALSE, 0); + + /* Current folder label */ + + impl->folder_label = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (impl->folder_label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (hbox), impl->folder_label, FALSE, FALSE, 0); + + gtk_widget_show_all (hbox); + + return hbox; } /* Sets the sensitivity of the toolbar buttons */ @@ -1310,49 +1329,6 @@ create_shortcuts_tree (GtkFileChooserDefault *impl) return impl->shortcuts_scrollwin; } -static GtkWidget * -create_shortcuts_buttons (GtkFileChooserDefault *impl) -{ - GtkWidget *hbox; - GtkWidget *hbox2; - GtkWidget *widget; - GtkWidget *image; - - hbox = gtk_hbox_new (FALSE, 12); - gtk_widget_show (hbox); - - /* "Add bookmark" */ - - impl->add_bookmark_button = gtk_button_new (); - - hbox2 = gtk_hbox_new (FALSE, 2); - gtk_container_add (GTK_CONTAINER (impl->add_bookmark_button), hbox2); - widget = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON); - gtk_box_pack_start (GTK_BOX (hbox2), widget, FALSE, FALSE, 0); - widget = gtk_label_new (_("Add bookmark")); - gtk_box_pack_start (GTK_BOX (hbox2), widget, FALSE, FALSE, 0); - gtk_widget_show_all (impl->add_bookmark_button); - - g_signal_connect (impl->add_bookmark_button, "clicked", - G_CALLBACK (add_bookmark_button_clicked_cb), impl); - gtk_box_pack_start (GTK_BOX (hbox), impl->add_bookmark_button, FALSE, FALSE, 0); - gtk_widget_set_sensitive (impl->add_bookmark_button, FALSE); - gtk_widget_show (impl->add_bookmark_button); - - /* "Remove bookmark" */ - - impl->remove_bookmark_button = gtk_button_new (); - g_signal_connect (impl->remove_bookmark_button, "clicked", - G_CALLBACK (remove_bookmark_button_clicked_cb), impl); - image = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_BUTTON); - gtk_container_add (GTK_CONTAINER (impl->remove_bookmark_button), image); - gtk_widget_set_sensitive (impl->remove_bookmark_button, FALSE); - gtk_box_pack_start (GTK_BOX (hbox), impl->remove_bookmark_button, FALSE, FALSE, 0); - gtk_widget_show_all (impl->remove_bookmark_button); - - return hbox; -} - /* Creates the widgets for the file list */ static GtkWidget * create_file_list (GtkFileChooserDefault *impl) @@ -1430,17 +1406,19 @@ create_file_list (GtkFileChooserDefault *impl) } static GtkWidget * -create_filename_entry (GtkFileChooserDefault *impl) +create_filename_entry_and_filter_combo (GtkFileChooserDefault *impl) { GtkWidget *hbox; - GtkWidget *label; + GtkWidget *widget; hbox = gtk_hbox_new (FALSE, 12); gtk_widget_show (hbox); - label = gtk_label_new_with_mnemonic (_("_Location:")); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - gtk_widget_show (label); + /* Label and entry */ + + widget = gtk_label_new_with_mnemonic (_("_Filename:")); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + gtk_widget_show (widget); impl->entry = _gtk_file_chooser_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (impl->entry), TRUE); @@ -1452,7 +1430,12 @@ create_filename_entry (GtkFileChooserDefault *impl) gtk_box_pack_start (GTK_BOX (hbox), impl->entry, TRUE, TRUE, 0); gtk_widget_show (impl->entry); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), impl->entry); + gtk_label_set_mnemonic_widget (GTK_LABEL (widget), impl->entry); + + /* Filter combo */ + + widget = filter_create (impl); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); return hbox; } @@ -1464,14 +1447,12 @@ gtk_file_chooser_default_constructor (GType type, { GtkFileChooserDefault *impl; GObject *object; - GtkWidget *table; + GtkWidget *vbox; GtkWidget *hpaned; - GtkWidget *entry_widget; GtkWidget *widget; GList *focus_chain; GtkWidget *hbox; - GtkWidget *vbox; - GtkSizeGroup *size_group; + GtkWidget *entry_widget; object = parent_class->constructor (type, n_construct_properties, @@ -1485,61 +1466,29 @@ gtk_file_chooser_default_constructor (GType type, /* Toolbar */ widget = toolbar_create (impl); gtk_box_pack_start (GTK_BOX (impl), widget, FALSE, FALSE, 0); - gtk_widget_show (widget); - - /* Basic table */ - table = gtk_table_new (2, 2, FALSE); - gtk_table_set_col_spacings (GTK_TABLE (table), 12); - gtk_table_set_row_spacings (GTK_TABLE (table), 12); - gtk_box_pack_start (GTK_BOX (impl), table, TRUE, TRUE, 0); - gtk_widget_show (table); + /* Basic box */ - /* Current folder label */ - - impl->folder_label = gtk_label_new (NULL); - gtk_misc_set_alignment (GTK_MISC (impl->folder_label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), impl->folder_label, - 0, 1, 0, 1, - GTK_EXPAND | GTK_FILL, 0, - 0, 0); - gtk_widget_show (impl->folder_label); + vbox = gtk_vbox_new (FALSE, 12); + gtk_box_pack_start (GTK_BOX (impl), vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); /* Paned widget */ hpaned = gtk_hpaned_new (); - gtk_table_attach (GTK_TABLE (table), hpaned, - 0, 1, 1, 2, - GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, - 0, 0); + gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0); gtk_paned_set_position (GTK_PANED (hpaned), 200); /* FIXME: this sucks */ gtk_widget_show (hpaned); /* Shortcuts list */ - vbox = gtk_vbox_new (FALSE, 12); - gtk_paned_add1 (GTK_PANED (hpaned), vbox); - gtk_widget_show (vbox); - widget = create_shortcuts_tree (impl); - gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0); - gtk_widget_show (widget); - - widget = create_shortcuts_buttons (impl); - gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); - gtk_widget_show (widget); - - size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); - gtk_size_group_add_widget (size_group, widget); + gtk_paned_pack1 (GTK_PANED (hpaned), widget, FALSE, FALSE); /* Folder tree */ - vbox = gtk_vbox_new (FALSE, 12); - gtk_paned_add2 (GTK_PANED (hpaned), vbox); - gtk_widget_show (vbox); - hbox = gtk_hbox_new (FALSE, 12); - gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); + gtk_paned_pack2 (GTK_PANED (hpaned), hbox, TRUE, FALSE); gtk_widget_show (hbox); widget = create_folder_tree (impl); @@ -1550,29 +1499,22 @@ gtk_file_chooser_default_constructor (GType type, widget = create_file_list (impl); gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0); - /* Location/filename entry */ - - entry_widget = create_filename_entry (impl); - gtk_box_pack_start (GTK_BOX (vbox), entry_widget, FALSE, FALSE, 0); - - gtk_size_group_add_widget (size_group, entry_widget); - g_object_unref (size_group); - /* Preview */ impl->preview_frame = gtk_frame_new (_("Preview")); - gtk_table_attach (GTK_TABLE (table), impl->preview_frame, - 1, 2, 0, 2, - 0, GTK_EXPAND | GTK_FILL, - 0, 0); + gtk_box_pack_start (GTK_BOX (hbox), impl->preview_frame, FALSE, FALSE, 0); /* Don't show preview frame initially */ + /* Filename entry and filter combo */ + + entry_widget = create_filename_entry_and_filter_combo (impl); + gtk_box_pack_start (GTK_BOX (vbox), entry_widget, FALSE, FALSE, 0); + /* Make the entry the first widget in the focus chain */ focus_chain = g_list_append (NULL, entry_widget); focus_chain = g_list_append (focus_chain, hpaned); - focus_chain = g_list_append (focus_chain, impl->preview_frame); - gtk_container_set_focus_chain (GTK_CONTAINER (table), focus_chain); + gtk_container_set_focus_chain (GTK_CONTAINER (vbox), focus_chain); g_list_free (focus_chain); gtk_widget_pop_composite_child (); @@ -2258,15 +2200,9 @@ toolbar_show_filters (GtkFileChooserDefault *impl, gboolean show) { if (show) - { - gtk_widget_show (GTK_WIDGET (impl->filter_separator)); - gtk_widget_show (GTK_WIDGET (impl->filter_item)); - } + gtk_widget_show (impl->filter_combo); else - { - gtk_widget_hide (GTK_WIDGET (impl->filter_separator)); - gtk_widget_hide (GTK_WIDGET (impl->filter_item)); - } + gtk_widget_hide (impl->filter_combo); } static void |