nautilus r13968 - in branches/multiview: . src src/file-manager



Author: cneumair
Date: Sat Mar 22 18:04:26 2008
New Revision: 13968
URL: http://svn.gnome.org/viewvc/nautilus?rev=13968&view=rev

Log:
2008-03-22  Christian Neumair  <chris ubuntu-t43>

	* src/file-manager/fm-directory-view.c (hidden_files_mode_changed),
	(slot_active), (fm_directory_view_init),
	(fm_directory_view_finalize),
	(fm_directory_view_init_show_hidden_files), (real_merge_menus),
	(fm_directory_view_reset_to_defaults),
	(fm_directory_view_ignore_hidden_file_preferences),
	(fm_directory_view_set_property):
	* src/file-manager/fm-tree-model.c
	(fm_tree_model_set_show_hidden_files):
	* src/file-manager/fm-tree-model.h:
	* src/file-manager/fm-tree-view.c
	(update_filtering_from_preferences):
	* src/nautilus-actions.h:
	* src/nautilus-application.c
	(nautilus_application_close_all_navigation_windows):
	* src/nautilus-window-menus.c (action_show_hidden_files_callback),
	(show_hidden_files_preference_callback),
	(nautilus_window_initialize_menus):
	* src/nautilus-window.c (nautilus_window_set_hidden_files_mode):
	Move "Show hidden files" menu code and preference listening from
	FMDirectoryView to NautilusWindow (nautilus-window-menus.c).
	Sync all views on preference change or menu toggling.


Modified:
   branches/multiview/ChangeLog
   branches/multiview/src/file-manager/fm-directory-view.c
   branches/multiview/src/file-manager/fm-tree-model.c
   branches/multiview/src/file-manager/fm-tree-model.h
   branches/multiview/src/file-manager/fm-tree-view.c
   branches/multiview/src/nautilus-actions.h
   branches/multiview/src/nautilus-application.c
   branches/multiview/src/nautilus-window-menus.c
   branches/multiview/src/nautilus-window.c

Modified: branches/multiview/src/file-manager/fm-directory-view.c
==============================================================================
--- branches/multiview/src/file-manager/fm-directory-view.c	(original)
+++ branches/multiview/src/file-manager/fm-directory-view.c	Sat Mar 22 18:04:26 2008
@@ -62,7 +62,6 @@
 #include <gtk/gtkmessagedialog.h>
 #include <gtk/gtkfilechooserbutton.h>
 #include <gtk/gtkhbox.h>
-#include <gtk/gtktoggleaction.h>
 #include <gtk/gtkentry.h>
 #include <gtk/gtkenums.h>
 #include <gtk/gtkbindings.h>
@@ -327,7 +326,6 @@
 static void     schedule_idle_display_of_pending_files         (FMDirectoryView      *view);
 static void     unschedule_display_of_pending_files            (FMDirectoryView      *view);
 static void     disconnect_model_handlers                      (FMDirectoryView      *view);
-static void     filtering_changed_callback                     (gpointer              callback_data);
 static void     metadata_for_directory_as_file_ready_callback  (NautilusFile         *file,
 								gpointer              callback_data);
 static void     metadata_for_files_in_directory_ready_callback (NautilusDirectory    *directory,
@@ -355,8 +353,6 @@
 						    gpointer   callback_data);
 static void action_rename_select_all_callback      (GtkAction *action,
 						    gpointer   callback_data);
-static void action_show_hidden_files_callback      (GtkAction *action,
-						    gpointer   callback_data);
 static void action_paste_files_into_callback       (GtkAction *action,
 						    gpointer   callback_data);
 static void action_connect_to_server_link_callback (GtkAction *action,
@@ -1147,29 +1143,14 @@
 
 
 static void
-action_show_hidden_files_callback (GtkAction *action, 
-				   gpointer callback_data)
+hidden_files_mode_changed (NautilusWindow *window,
+			   gpointer callback_data)
 {
-	FMDirectoryView	*directory_view;
-	NautilusWindowShowHiddenFilesMode mode;
+	FMDirectoryView *directory_view;
 
-	g_assert (FM_IS_DIRECTORY_VIEW (callback_data));
 	directory_view = FM_DIRECTORY_VIEW (callback_data);
-	
-	directory_view->details->show_hidden_files = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
-	directory_view->details->show_backup_files = directory_view->details->show_hidden_files;
-	
-	if (directory_view->details->show_hidden_files) {
-		mode = NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_ENABLE;
-	} else {
-		mode = NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DISABLE;
-	}
-	/* multiview-TODO listen to hidden file modes changes, block handler here. */
-	nautilus_window_info_set_hidden_files_mode (directory_view->details->window,
-						    mode);
-	if (directory_view->details->model != NULL) {
-		load_directory (directory_view, directory_view->details->model);
-	}
+
+	fm_directory_view_init_show_hidden_files (directory_view);
 }
 
 static void
@@ -1657,10 +1638,6 @@
 
 	fm_directory_view_merge_menus (view);
 	schedule_update_menus (view);
-
-	/* initialise show hidden mode */
-	/* multiview-TODO this always causes a reload for loaded views. */
-	fm_directory_view_init_show_hidden_files (view);
 }
 
 static void
@@ -1856,10 +1833,6 @@
 				      click_policy_changed_callback, view);
 	eel_preferences_add_callback (NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST, 
 				      sort_directories_first_changed_callback, view);
-	eel_preferences_add_callback (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
-					 filtering_changed_callback, view);
-	eel_preferences_add_callback (NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES,
-					 filtering_changed_callback, view);
 }
 
 static void
@@ -1962,15 +1935,6 @@
 
 	view = FM_DIRECTORY_VIEW (object);
 
-	if (!view->details->ignore_hidden_file_preferences) {
-		/* fm_directory_view_ignore_hidden_file_preferences is a one-way switch,
-		 * and may have removed these callbacks already.
-		 */
-		eel_preferences_remove_callback (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
-						 filtering_changed_callback, view);
-		eel_preferences_remove_callback (NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES,
-						 filtering_changed_callback, view);
-	}
 	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_CONFIRM_TRASH,
 					 schedule_update_menus_callback, view);
 	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_ENABLE_DELETE,
@@ -6231,7 +6195,6 @@
 	NautilusWindowShowHiddenFilesMode mode;
 	gboolean show_hidden_changed;
 	gboolean show_hidden_default_setting;
-	GtkAction *action;
 
 	if (view->details->ignore_hidden_file_preferences) {
 		return;
@@ -6258,12 +6221,7 @@
 			view->details->show_backup_files = FALSE;
 		}
 	}
- 
-	action = gtk_action_group_get_action (view->details->dir_action_group,
-					      FM_ACTION_SHOW_HIDDEN_FILES);
-	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
-				      view->details->show_hidden_files);
-	
+
 	if (show_hidden_changed && (view->details->model != NULL)) {
 		load_directory (view, view->details->model);	
 	}
@@ -6382,6 +6340,12 @@
   /* label, accelerator */       N_("_Delete"), "<shift>Delete",
   /* tooltip */                  N_("Delete each selected item, without moving to the Trash"),
                                  G_CALLBACK (action_delete_callback) },
+  /*
+   * multiview-TODO: decide whether "Reset to Defaults" should
+   * be window-wide, and not just view-wide.
+   * Since this also resets the "Show hidden files" mode,
+   * it is a mixture of both ATM.
+   */
   /* name, stock id */         { "Reset to Defaults", NULL,
   /* label, accelerator */       N_("Reset View to _Defaults"), NULL,
   /* tooltip */                  N_("Reset sorting order and zoom level to match preferences for this view"),
@@ -6465,14 +6429,6 @@
                                  G_CALLBACK (action_location_delete_callback) },
 };
 
-static const GtkToggleActionEntry directory_view_toggle_entries[] = {
-  /* name, stock id */         { "Show Hidden Files", NULL,
-  /* label, accelerator */       N_("Show _Hidden Files"), "<control>H",
-  /* tooltip */                  N_("Toggle the display of hidden files in the current window"),
-                                 G_CALLBACK (action_show_hidden_files_callback),
-                                 TRUE },
-};
-
 static void
 connect_proxy (FMDirectoryView *view,
 	       GtkAction *action,
@@ -6549,9 +6505,7 @@
 	gtk_action_group_add_actions (action_group, 
 				      directory_view_entries, G_N_ELEMENTS (directory_view_entries),
 				      view);
-	gtk_action_group_add_toggle_actions (action_group, 
-					     directory_view_toggle_entries, G_N_ELEMENTS (directory_view_toggle_entries),
-					     view);
+
 	/* Translators: %s is a directory */
 	tooltip = g_strdup_printf (_("Run or manage scripts from %s"), "~/.gnome2/nautilus-scripts");
 	/* Create a script action here specially because its tooltip is dynamic */
@@ -7879,7 +7833,6 @@
 	if (mode != NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DEFAULT) {
 		nautilus_window_info_set_hidden_files_mode (view->details->window,
 							    NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DEFAULT);
-		fm_directory_view_init_show_hidden_files (view);
 	}
 }
 
@@ -8179,38 +8132,6 @@
 	schedule_update_menus (FM_DIRECTORY_VIEW (callback_data));
 }
 
-static void
-filtering_changed_callback (gpointer callback_data)
-{
-	FMDirectoryView	*directory_view;
-	gboolean new_show_hidden;
-	NautilusWindowShowHiddenFilesMode mode;
-	GtkAction *action;
-
-	directory_view = FM_DIRECTORY_VIEW (callback_data);
-	new_show_hidden = eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES);
-	mode = nautilus_window_info_get_hidden_files_mode (directory_view->details->window);
-
-	/* only apply global show hidden files pref if local setting has not been set for this window */
-	if (new_show_hidden != directory_view->details->show_hidden_files
-	    && mode == NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DEFAULT) {
-		directory_view->details->show_hidden_files = new_show_hidden;
-		directory_view->details->show_backup_files = new_show_hidden;
-
-		action = gtk_action_group_get_action (directory_view->details->dir_action_group,
-						      FM_ACTION_SHOW_HIDDEN_FILES);
-		g_signal_handlers_block_by_func (action, action_show_hidden_files_callback, directory_view);
-		gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
-					      directory_view->details->show_hidden_files);
-		g_signal_handlers_unblock_by_func (action, action_show_hidden_files_callback, directory_view);
-
-		/* Reload the current uri so that the filtering changes take place. */
-		if (directory_view->details->model != NULL) {
-			load_directory (directory_view, directory_view->details->model);
-		}
-	}
-}
-
 void
 fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view)
 {
@@ -8220,13 +8141,6 @@
 		return;
 	}
 
-	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
-					      filtering_changed_callback,
-					      view);
-	eel_preferences_remove_callback (NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES,
-					      filtering_changed_callback,
-					      view);
-
 	view->details->show_hidden_files = FALSE;
 	view->details->show_backup_files = FALSE;
 	view->details->ignore_hidden_file_preferences = TRUE;
@@ -8742,6 +8656,11 @@
 				   "inactive", G_CALLBACK (slot_inactive),
 				   directory_view, 0);
 
+	  g_signal_connect_object (directory_view->details->window,
+				   "hidden-files-mode-changed", G_CALLBACK (hidden_files_mode_changed),
+				   directory_view, 0);
+	  fm_directory_view_init_show_hidden_files (directory_view);
+
 	  if (directory_view->details->slot == 
 	      nautilus_window_info_get_active_slot (window)) {
 	    slot_active (directory_view->details->slot, directory_view);

Modified: branches/multiview/src/file-manager/fm-tree-model.c
==============================================================================
--- branches/multiview/src/file-manager/fm-tree-model.c	(original)
+++ branches/multiview/src/file-manager/fm-tree-model.c	Sat Mar 22 18:04:26 2008
@@ -1705,6 +1705,7 @@
 		return;
 	}
 	model->details->show_hidden_files = show_hidden_files;
+	model->details->show_backup_files = show_hidden_files;
 	stop_monitoring (model);
 	if (!show_hidden_files) {
 		destroy_by_function (model, nautilus_file_is_hidden_file);
@@ -1712,25 +1713,6 @@
 	schedule_monitoring_update (model);
 }
 
-void
-fm_tree_model_set_show_backup_files (FMTreeModel *model,
-					   gboolean show_backup_files)
-{
-	g_return_if_fail (FM_IS_TREE_MODEL (model));
-	g_return_if_fail (show_backup_files == FALSE || show_backup_files == TRUE);
-
-	show_backup_files = show_backup_files != FALSE;
-	if (model->details->show_backup_files == show_backup_files) {
-		return;
-	}
-	model->details->show_backup_files = show_backup_files;
-	stop_monitoring (model);
-	if (!show_backup_files) {
-		destroy_by_function (model, nautilus_file_is_backup_file);
-	}
-	schedule_monitoring_update (model);
-}
-
 static gboolean
 file_is_not_directory (NautilusFile *file)
 {

Modified: branches/multiview/src/file-manager/fm-tree-model.h
==============================================================================
--- branches/multiview/src/file-manager/fm-tree-model.h	(original)
+++ branches/multiview/src/file-manager/fm-tree-model.h	Sat Mar 22 18:04:26 2008
@@ -66,8 +66,6 @@
 FMTreeModel *fm_tree_model_new                       (void);
 void               fm_tree_model_set_show_hidden_files     (FMTreeModel *model,
 							    gboolean           show_hidden_files);
-void               fm_tree_model_set_show_backup_files     (FMTreeModel *model,
-							    gboolean           show_backup_files);
 void               fm_tree_model_set_show_only_directories (FMTreeModel *model,
 							    gboolean           show_only_directories);
 NautilusFile *     fm_tree_model_iter_get_file             (FMTreeModel *model,

Modified: branches/multiview/src/file-manager/fm-tree-view.c
==============================================================================
--- branches/multiview/src/file-manager/fm-tree-view.c	(original)
+++ branches/multiview/src/file-manager/fm-tree-view.c	Sat Mar 22 18:04:26 2008
@@ -1358,9 +1358,6 @@
 			(view->details->child_model,
 			 mode == NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_ENABLE);
 	}
-	fm_tree_model_set_show_backup_files
-		(view->details->child_model,
-		 eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES));
 	fm_tree_model_set_show_only_directories
 		(view->details->child_model,
 		 eel_preferences_get_boolean (NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES));

Modified: branches/multiview/src/nautilus-actions.h
==============================================================================
--- branches/multiview/src/nautilus-actions.h	(original)
+++ branches/multiview/src/nautilus-actions.h	Sat Mar 22 18:04:26 2008
@@ -46,6 +46,7 @@
 #define NAUTILUS_ACTION_ZOOM_IN "Zoom In"
 #define NAUTILUS_ACTION_ZOOM_OUT "Zoom Out"
 #define NAUTILUS_ACTION_ZOOM_NORMAL "Zoom Normal"
+#define NAUTILUS_ACTION_SHOW_HIDDEN_FILES "Show Hidden Files"
 #define NAUTILUS_ACTION_CLOSE "Close"
 #define NAUTILUS_ACTION_SEARCH "Search"
 #define NAUTILUS_ACTION_FOLDER_WINDOW "Folder Window"

Modified: branches/multiview/src/nautilus-application.c
==============================================================================
--- branches/multiview/src/nautilus-application.c	(original)
+++ branches/multiview/src/nautilus-application.c	Sat Mar 22 18:04:26 2008
@@ -869,7 +869,6 @@
 	list_copy = g_list_copy (nautilus_application_window_list);
 	for (l = list_copy; l != NULL; l = l->next) {
 		NautilusWindow *window;
-		GList *l;
 		
 		window = NAUTILUS_WINDOW (l->data);
 		

Modified: branches/multiview/src/nautilus-window-menus.c
==============================================================================
--- branches/multiview/src/nautilus-window-menus.c	(original)
+++ branches/multiview/src/nautilus-window-menus.c	Sat Mar 22 18:04:26 2008
@@ -39,15 +39,19 @@
 #include "nautilus-window-private.h"
 #include "nautilus-desktop-window.h"
 #include "nautilus-search-bar.h"
+#include <eel/eel-preferences.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkaboutdialog.h>
 #include <gtk/gtkenums.h>
 #include <gtk/gtkversion.h>
+#include <gtk/gtkaction.h>
+#include <gtk/gtktoggleaction.h>
 #include <gio/gio.h>
 #include <glib/gi18n.h>
 #include <libgnomeui/gnome-help.h>
 #include <libnautilus-extension/nautilus-menu-provider.h>
 #include <libnautilus-private/nautilus-file-utilities.h>
+#include <libnautilus-private/nautilus-global-preferences.h>
 #include <libnautilus-private/nautilus-icon-names.h>
 #include <libnautilus-private/nautilus-ui-utilities.h>
 #include <libnautilus-private/nautilus-module.h>
@@ -364,6 +368,48 @@
 }
 
 static void
+action_show_hidden_files_callback (GtkAction *action, 
+				   gpointer callback_data)
+{
+	NautilusWindow *window;
+	NautilusWindowShowHiddenFilesMode mode;
+
+	window = NAUTILUS_WINDOW (callback_data);
+
+	if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) {
+		mode = NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_ENABLE;
+	} else {
+		mode = NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DISABLE;
+	}
+
+	nautilus_window_info_set_hidden_files_mode (window, mode);
+}
+
+static void
+show_hidden_files_preference_callback (gpointer callback_data)
+{
+	NautilusWindow *window;
+	GtkAction *action;
+
+	window = NAUTILUS_WINDOW (callback_data);
+
+	if (window->details->show_hidden_files_mode == NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DEFAULT) {
+		action = gtk_action_group_get_action (window->details->main_action_group, NAUTILUS_ACTION_SHOW_HIDDEN_FILES);
+		g_assert (GTK_IS_ACTION (action));
+
+		/* update button */
+		g_signal_handlers_block_by_func (action, action_show_hidden_files_callback, window);
+		gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+					      eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES));
+		g_signal_handlers_unblock_by_func (action, action_show_hidden_files_callback, window);
+
+		/* inform views */
+		nautilus_window_info_set_hidden_files_mode (window, NAUTILUS_WINDOW_SHOW_HIDDEN_FILES_DEFAULT);
+
+	}
+}
+
+static void
 preferences_respond_callback (GtkDialog *dialog,
 			      gint response_id)
 {
@@ -704,6 +750,14 @@
                                  G_CALLBACK (action_go_to_burn_cd_callback) },
 };
 
+static const GtkToggleActionEntry main_toggle_entries[] = {
+  /* name, stock id */         { "Show Hidden Files", NULL,
+  /* label, accelerator */       N_("Show _Hidden Files"), "<control>H",
+  /* tooltip */                  N_("Toggle the display of hidden files in the current window"),
+                                 G_CALLBACK (action_show_hidden_files_callback),
+                                 TRUE },
+};
+
 /**
  * nautilus_window_initialize_menus
  * 
@@ -724,6 +778,9 @@
 	gtk_action_group_add_actions (action_group, 
 				      main_entries, G_N_ELEMENTS (main_entries),
 				      window);
+	gtk_action_group_add_toggle_actions (action_group, 
+					     main_toggle_entries, G_N_ELEMENTS (main_toggle_entries),
+					     window);
 
 	action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_UP);
 	g_object_set (action, "short_label", _("_Up"), NULL);
@@ -731,6 +788,17 @@
 	action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_HOME);
 	g_object_set (action, "short_label", _("_Home"), NULL);
 
+	action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_SHOW_HIDDEN_FILES);
+	g_signal_handlers_block_by_func (action, action_show_hidden_files_callback, window);
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+				      eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES));
+	g_signal_handlers_unblock_by_func (action, action_show_hidden_files_callback, window);
+
+
+	eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
+						  show_hidden_files_preference_callback,
+						  window, G_OBJECT (window));
+
 	window->details->ui_manager = gtk_ui_manager_new ();
 	ui_manager = window->details->ui_manager;
 	gtk_window_add_accel_group (GTK_WINDOW (window),

Modified: branches/multiview/src/nautilus-window.c
==============================================================================
--- branches/multiview/src/nautilus-window.c	(original)
+++ branches/multiview/src/nautilus-window.c	Sat Mar 22 18:04:26 2008
@@ -1778,8 +1778,7 @@
 {
 	window->details->show_hidden_files_mode = mode;
 
-	g_signal_emit_by_name (window, "hidden_files_mode_changed",
-			       mode);
+	g_signal_emit_by_name (window, "hidden_files_mode_changed");
 }
 
 static NautilusBookmarkList *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]