From bc177a67c2daacebb58ad85c7ff8258dfda18fbd Mon Sep 17 00:00:00 2001 From: Andy Hertzfeld Date: Mon, 31 Jan 2000 02:13:12 +0000 Subject: [PATCH] implemented the "select all" command in the context menu implemented the "select all" command in the context menu --- ChangeLog-20000414 | 15 ++++++++++++ src/file-manager/fm-directory-view-icons.c | 16 ++++++++++++- src/file-manager/fm-directory-view-list.c | 14 +++++++++++ src/file-manager/fm-directory-view.c | 28 +++++++++++++++++++++- src/file-manager/fm-directory-view.h | 5 ++++ 5 files changed, 76 insertions(+), 2 deletions(-) diff --git a/ChangeLog-20000414 b/ChangeLog-20000414 index f7a20b99d..6fd518f3f 100644 --- a/ChangeLog-20000414 +++ b/ChangeLog-20000414 @@ -1,3 +1,18 @@ +2000-01-31 Andy Hertzfeld + + implemented the "select all" command in the context menus + + * src/file-manager/directory_view.c,h: + added a directory_view_select_all slot for subclasses to override, + enabled "select all" item and attached a signal to the item, whose + callback calls fm_directory_view_select_all + * src/file-manager/directory_view_icons.c: + implemented directory_view_icons_select_all by invoking the "select all" + operation of GnomeIconContainer + * src/file-manager/directory_view_list.c: + implemented directory_view_list_select_all by invoking the "select all" + operation of the clist widget + 2000-01-31 Elliot Lee * src/ntl-window-msgs.c, src/ntl-window-private.h: Update debugging messages. Allow diff --git a/src/file-manager/fm-directory-view-icons.c b/src/file-manager/fm-directory-view-icons.c index 36348e329..a3099d399 100644 --- a/src/file-manager/fm-directory-view-icons.c +++ b/src/file-manager/fm-directory-view-icons.c @@ -73,6 +73,8 @@ static NautilusZoomLevel fm_directory_view_icons_get_zoom_level (FMDirectoryViewIcons *view); static void fm_directory_view_icons_initialize (FMDirectoryViewIcons *icon_view); static void fm_directory_view_icons_initialize_class (FMDirectoryViewIconsClass *klass); +static void fm_directory_view_icons_select_all (FMDirectoryView *view); + static void fm_directory_view_icons_set_zoom_level (FMDirectoryViewIcons *view, NautilusZoomLevel new_level); @@ -127,7 +129,8 @@ fm_directory_view_icons_initialize_class (FMDirectoryViewIconsClass *klass) = fm_directory_view_icons_can_zoom_in; fm_directory_view_class->can_zoom_out = fm_directory_view_icons_can_zoom_out; - + fm_directory_view_class->select_all + = fm_directory_view_icons_select_all; } static void @@ -370,6 +373,17 @@ fm_directory_view_icons_get_selection (FMDirectoryView *view) (get_icon_container (FM_DIRECTORY_VIEW_ICONS (view))); } +static void +fm_directory_view_icons_select_all (FMDirectoryView *view) +{ + GnomeIconContainer *icon_container; + + g_return_if_fail (FM_IS_DIRECTORY_VIEW_ICONS (view)); + + icon_container = get_icon_container (FM_DIRECTORY_VIEW_ICONS (view)); + gnome_icon_container_select_all(icon_container); +} + /** * fm_directory_view_icons_line_up_icons: diff --git a/src/file-manager/fm-directory-view-list.c b/src/file-manager/fm-directory-view-list.c index dc10c3157..b8c916dd6 100644 --- a/src/file-manager/fm-directory-view-list.c +++ b/src/file-manager/fm-directory-view-list.c @@ -103,6 +103,8 @@ static void fm_directory_view_list_initialize_class (gpointer klass); static void fm_directory_view_list_destroy (GtkObject *object); static void fm_directory_view_list_done_adding_entries (FMDirectoryView *view); +static void fm_directory_view_list_select_all (FMDirectoryView *view); + static void fm_directory_view_list_set_zoom_level (FMDirectoryViewList *list_view, NautilusZoomLevel new_level); static void fm_directory_view_list_sort_items (FMDirectoryViewList *list_view, @@ -166,6 +168,7 @@ fm_directory_view_list_initialize_class (gpointer klass) fm_directory_view_class->bump_zoom_level = fm_directory_view_list_bump_zoom_level; fm_directory_view_class->can_zoom_in = fm_directory_view_list_can_zoom_in; fm_directory_view_class->can_zoom_out = fm_directory_view_list_can_zoom_out; + fm_directory_view_class->select_all = fm_directory_view_list_select_all; } static void @@ -644,6 +647,17 @@ fm_directory_view_list_set_zoom_level (FMDirectoryViewList *list_view, gtk_clist_thaw (clist); } +/* select all of the items in the view */ +static void +fm_directory_view_list_select_all (FMDirectoryView *view) +{ + GtkCList *clist; + g_return_if_fail (FM_IS_DIRECTORY_VIEW_LIST (view)); + + clist = GTK_CLIST (get_flist (FM_DIRECTORY_VIEW_LIST(view))); + gtk_clist_select_all(clist); +} + static void fm_directory_view_list_sort_items (FMDirectoryViewList *list_view, int column, diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index 4ed288be9..a4c733203 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -84,6 +84,7 @@ static void stop_location_change_cb (NautilusViewFrame *view_frame, static void notify_location_change_cb (NautilusViewFrame *view_frame, Nautilus_NavigationInfo *nav_context, FMDirectoryView *directory_view); +static void select_all_cb (GtkMenuItem *item, FMDirectoryView *directory_view); static void zoom_in_cb (GtkMenuItem *item, FMDirectoryView *directory_view); static void zoom_out_cb (GtkMenuItem *item, FMDirectoryView *directory_view); @@ -99,6 +100,7 @@ NAUTILUS_DEFINE_CLASS_BOILERPLATE (FMDirectoryView, fm_directory_view, GTK_TYPE_ NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, add_entry) NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, clear) NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, get_selection) +NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, select_all) NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, bump_zoom_level) NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, can_zoom_in) NAUTILUS_IMPLEMENT_MUST_OVERRIDE_SIGNAL (fm_directory_view, can_zoom_out) @@ -153,6 +155,7 @@ fm_directory_view_initialize_class (FMDirectoryViewClass *klass) NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, add_entry); NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, clear); NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, get_selection); + NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, select_all); NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, bump_zoom_level); NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, can_zoom_in); NAUTILUS_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, can_zoom_out); @@ -348,6 +351,14 @@ stop_load (FMDirectoryView *view, gboolean error) +/* handle the "select all" menu command */ + +static void +select_all_cb(GtkMenuItem *item, FMDirectoryView *directory_view) +{ + fm_directory_view_select_all (directory_view); +} + /* handle the zoom in/out menu items */ static void @@ -744,8 +755,9 @@ append_background_items (FMDirectoryView *view, GtkMenu *menu) GtkWidget *menu_item; menu_item = gtk_menu_item_new_with_label ("Select all"); - gtk_widget_set_sensitive (menu_item, FALSE); gtk_widget_show (menu_item); + gtk_signal_connect(GTK_OBJECT (menu_item), "activate", + GTK_SIGNAL_FUNC (select_all_cb), view); gtk_menu_append (menu, menu_item); @@ -965,6 +977,20 @@ disconnect_model_handlers (FMDirectoryView *view) } } +/** + * fm_directory_view_select_all: + * + * select all the items in the view + * + **/ +void +fm_directory_view_select_all (FMDirectoryView *view) +{ + g_return_if_fail (FM_IS_DIRECTORY_VIEW (view)); + + (* FM_DIRECTORY_VIEW_CLASS (GTK_OBJECT (view)->klass)->select_all) (view); +} + /** * fm_directory_view_stop: * diff --git a/src/file-manager/fm-directory-view.h b/src/file-manager/fm-directory-view.h index f1f337f1a..08e8f786c 100644 --- a/src/file-manager/fm-directory-view.h +++ b/src/file-manager/fm-directory-view.h @@ -101,6 +101,10 @@ struct _FMDirectoryViewClass { /* can_zoom_out is a function pointer that subclasses must override to * return whether the view is at minimum size (furthest-out zoom level) */ gboolean (* can_zoom_out) (FMDirectoryView *view); + + /* select_sll is a function pointer that subclasses must override to + * select all of the items in the view */ + void (* select_all) (FMDirectoryView *view); }; @@ -122,6 +126,7 @@ gboolean fm_directory_view_can_zoom_in (FMDirectoryView *view); gboolean fm_directory_view_can_zoom_out (FMDirectoryView *view); void fm_directory_view_bump_zoom_level (FMDirectoryView *view, gint zoom_increment); +void fm_directory_view_select_all (FMDirectoryView *view); /* Wrappers for signal emitters. These are normally called * only by FMDirectoryView itself. They have corresponding signals -- GitLab