diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2011-03-15 14:27:13 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2011-03-15 14:34:11 -0400 |
commit | 3b3fe092c77b685516495ae8239d6b5aa7c37072 (patch) | |
tree | 6843f1c59f55163d399c4842bb912c361d80b187 /src/nautilus-trash-bar.c | |
parent | a2df8af91ed91934c16a0a959c1e178b2849c46e (diff) | |
download | nautilus-3b3fe092c77b685516495ae8239d6b5aa7c37072.tar.gz |
trash-bar: make NautilusTrashBar a GtkInfoBar
Diffstat (limited to 'src/nautilus-trash-bar.c')
-rw-r--r-- | src/nautilus-trash-bar.c | 112 |
1 files changed, 57 insertions, 55 deletions
diff --git a/src/nautilus-trash-bar.c b/src/nautilus-trash-bar.c index 5d0990e65..d74264ed0 100644 --- a/src/nautilus-trash-bar.c +++ b/src/nautilus-trash-bar.c @@ -41,28 +41,18 @@ enum { NUM_PROPERTIES }; +enum { + TRASH_BAR_RESPONSE_EMPTY = 1, + TRASH_BAR_RESPONSE_RESTORE +}; + struct NautilusTrashBarPrivate { - GtkWidget *empty_button; - GtkWidget *restore_button; - NautilusView *view; gulong selection_handler_id; }; -G_DEFINE_TYPE (NautilusTrashBar, nautilus_trash_bar, GTK_TYPE_HBOX); - -static void -restore_button_clicked_cb (GtkWidget *button, - NautilusTrashBar *bar) -{ - GList *files; - - files = nautilus_view_get_selection (bar->priv->view); - nautilus_restore_files_from_trash (files, GTK_WINDOW (gtk_widget_get_toplevel (button))); - - nautilus_file_list_free (files); -} +G_DEFINE_TYPE (NautilusTrashBar, nautilus_trash_bar, GTK_TYPE_INFO_BAR); static void selection_changed_cb (NautilusView *view, @@ -72,7 +62,9 @@ selection_changed_cb (NautilusView *view, count = nautilus_view_get_selection_count (view); - gtk_widget_set_sensitive (bar->priv->restore_button, (count > 0)); + gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (bar), + TRASH_BAR_RESPONSE_RESTORE, + (count > 0)); } static void @@ -129,8 +121,9 @@ nautilus_trash_bar_trash_state_changed (NautilusTrashMonitor *trash_monitor, bar = NAUTILUS_TRASH_BAR (data); - gtk_widget_set_sensitive (bar->priv->empty_button, - !nautilus_trash_monitor_is_empty ()); + gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (bar), + TRASH_BAR_RESPONSE_EMPTY, + !nautilus_trash_monitor_is_empty ()); } static void @@ -157,69 +150,78 @@ nautilus_trash_bar_class_init (NautilusTrashBarClass *klass) } static void -empty_trash_callback (GtkWidget *button, gpointer data) +trash_bar_response_cb (GtkInfoBar *infobar, + gint response_id, + gpointer user_data) { + NautilusTrashBar *bar; GtkWidget *window; - - window = gtk_widget_get_toplevel (button); + GList *files; + + bar = NAUTILUS_TRASH_BAR (infobar); + window = gtk_widget_get_toplevel (GTK_WIDGET (bar)); - nautilus_file_operations_empty_trash (window); + switch (response_id) { + case TRASH_BAR_RESPONSE_EMPTY: + nautilus_file_operations_empty_trash (window); + break; + case TRASH_BAR_RESPONSE_RESTORE: + files = nautilus_view_get_selection (bar->priv->view); + nautilus_restore_files_from_trash (files, GTK_WINDOW (window)); + nautilus_file_list_free (files); + break; + default: + break; + } } static void nautilus_trash_bar_init (NautilusTrashBar *bar) { + GtkWidget *content_area, *action_area, *w; GtkWidget *label; - GtkWidget *hbox; bar->priv = NAUTILUS_TRASH_BAR_GET_PRIVATE (bar); + content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (bar)); + action_area = gtk_info_bar_get_action_area (GTK_INFO_BAR (bar)); - hbox = GTK_WIDGET (bar); + gtk_orientable_set_orientation (GTK_ORIENTABLE (action_area), + GTK_ORIENTATION_HORIZONTAL); label = gtk_label_new (_("Trash")); + gtk_style_context_add_class (gtk_widget_get_style_context (label), + "nautilus-cluebar-label"); gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (bar), label, FALSE, FALSE, 0); - - bar->priv->empty_button = gtk_button_new_with_mnemonic (_("Empty _Trash")); - gtk_widget_show (bar->priv->empty_button); - gtk_box_pack_end (GTK_BOX (hbox), bar->priv->empty_button, FALSE, FALSE, 0); - - gtk_widget_set_sensitive (bar->priv->empty_button, - !nautilus_trash_monitor_is_empty ()); - gtk_widget_set_tooltip_text (bar->priv->empty_button, - _("Delete all items in the Trash")); - - g_signal_connect (bar->priv->empty_button, - "clicked", - G_CALLBACK (empty_trash_callback), - bar); + gtk_container_add (GTK_CONTAINER (content_area), label); - bar->priv->restore_button = gtk_button_new_with_mnemonic (_("Restore Selected Items")); - gtk_widget_show (bar->priv->restore_button); - gtk_box_pack_end (GTK_BOX (hbox), bar->priv->restore_button, FALSE, FALSE, 6); - - gtk_widget_set_sensitive (bar->priv->restore_button, FALSE); - gtk_widget_set_tooltip_text (bar->priv->restore_button, + w = gtk_info_bar_add_button (GTK_INFO_BAR (bar), + _("Restore Selected Items"), + TRASH_BAR_RESPONSE_RESTORE); + gtk_widget_set_tooltip_text (w, _("Restore selected items to their original position")); - g_signal_connect (bar->priv->restore_button, - "clicked", - G_CALLBACK (restore_button_clicked_cb), - bar); + w = gtk_info_bar_add_button (GTK_INFO_BAR (bar), + _("Empty _Trash"), + TRASH_BAR_RESPONSE_EMPTY); + gtk_widget_set_tooltip_text (w, + _("Delete all items in the Trash")); g_signal_connect_object (nautilus_trash_monitor_get (), "trash_state_changed", G_CALLBACK (nautilus_trash_bar_trash_state_changed), bar, 0); + nautilus_trash_bar_trash_state_changed (nautilus_trash_monitor_get (), + FALSE, bar); + + g_signal_connect (bar, "response", + G_CALLBACK (trash_bar_response_cb), bar); } GtkWidget * nautilus_trash_bar_new (NautilusView *view) { - GObject *bar; - - bar = g_object_new (NAUTILUS_TYPE_TRASH_BAR, "view", view, NULL); - - return GTK_WIDGET (bar); + return g_object_new (NAUTILUS_TYPE_TRASH_BAR, + "view", view, + NULL); } |