nautilus r14210 - in branches/multiview: . libnautilus-private src src/file-manager



Author: cneumair
Date: Fri May 30 20:46:51 2008
New Revision: 14210
URL: http://svn.gnome.org/viewvc/nautilus?rev=14210&view=rev

Log:
2008-05-30  Christian Neumair  <cneumair gnome org>

	* libnautilus-private/apps_nautilus_preferences.schemas.in:
	* libnautilus-private/nautilus-global-preferences.c
	(global_preferences_register_enumerations):
	* libnautilus-private/nautilus-global-preferences.h:
	* src/file-manager/fm-directory-view.c (open_one_in_new_tab),
	(real_update_menus):
	* src/file-manager/fm-icon-view.c
	(icon_container_activate_alternate_callback):
	* src/file-manager/nautilus-directory-view-ui.xml:
	* src/nautilus-actions.h:
	* src/nautilus-navigation-window-menus.c
	(nautilus_navigation_window_update_tab_menu_item_visibility),
	(action_new_tab_callback),
	(nautilus_navigation_window_initialize_menus):
	* src/nautilus-navigation-window-ui.xml:
	* src/nautilus-navigation-window.c
	(nautilus_navigation_window_init), (enable_tabs_changed):
	* src/nautilus-window-manage-views.c
	(nautilus_window_slot_open_location_full):
	* src/nautilus-window-private.h:
	Make "New Tab" appear above "New Window" menu items.
	Add GConf keys for enabling tab support, and for determining
	whether a tab should be opened after the current tab, or at the end.
	Show/hide tab widgets depending on the preferences.


Modified:
   branches/multiview/ChangeLog
   branches/multiview/libnautilus-private/apps_nautilus_preferences.schemas.in
   branches/multiview/libnautilus-private/nautilus-global-preferences.c
   branches/multiview/libnautilus-private/nautilus-global-preferences.h
   branches/multiview/src/file-manager/fm-directory-view.c
   branches/multiview/src/file-manager/fm-icon-view.c
   branches/multiview/src/file-manager/nautilus-directory-view-ui.xml
   branches/multiview/src/nautilus-actions.h
   branches/multiview/src/nautilus-navigation-window-menus.c
   branches/multiview/src/nautilus-navigation-window-ui.xml
   branches/multiview/src/nautilus-navigation-window.c
   branches/multiview/src/nautilus-window-manage-views.c
   branches/multiview/src/nautilus-window-private.h

Modified: branches/multiview/libnautilus-private/apps_nautilus_preferences.schemas.in
==============================================================================
--- branches/multiview/libnautilus-private/apps_nautilus_preferences.schemas.in	(original)
+++ branches/multiview/libnautilus-private/apps_nautilus_preferences.schemas.in	Fri May 30 20:46:51 2008
@@ -69,6 +69,36 @@
     </schema>
 
     <schema>
+      <key>/schemas/desktop/gnome/file_views/tabs_enable</key>
+      <applyto>/desktop/gnome/file_views/tabs_enable</applyto>
+      <owner>nautilus</owner>
+      <type>bool</type>
+      <default>true</default>
+      <locale name="C">
+         <short>Whether to enable tabs in Nautilus browser windows</short>
+         <long>
+          If set to true, then multiple views can be opened in one browser window,
+	  each in a separate tab.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/desktop/gnome/file_views/tabs_open_position</key>
+      <applyto>/desktop/gnome/file_views/tabs_open_position</applyto>
+      <owner>nautilus</owner>
+      <type>string</type>
+      <default>after_current_tab</default>
+      <locale name="C">
+         <short>Where to position newly open tabs in browser windows.</short>
+         <long>
+          If set to "after_current_tab", then new tabs are inserted after the current tab.
+          If set to "end", then new tabs are appended to the end of the tab list.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/nautilus/preferences/media_automount</key>
       <applyto>/apps/nautilus/preferences/media_automount</applyto>
       <owner>nautilus</owner>

Modified: branches/multiview/libnautilus-private/nautilus-global-preferences.c
==============================================================================
--- branches/multiview/libnautilus-private/nautilus-global-preferences.c	(original)
+++ branches/multiview/libnautilus-private/nautilus-global-preferences.c	Fri May 30 20:46:51 2008
@@ -169,6 +169,11 @@
 	{ "informal",	   "Informal",		NAUTILUS_DATE_FORMAT_INFORMAL }
 };
 
+static EelEnumerationEntry new_tab_position_entries[] = {
+	{ "after_current_tab",  "After Current Tab",	NAUTILUS_NEW_TAB_POSITION_AFTER_CURRENT_TAB },
+	{ "end",		"End",			NAUTILUS_NEW_TAB_POSITION_END }
+};
+
 /*
  * A callback which can be used to fetch dynamic fallback values.
  * For example, values that are dependent on the environment (such as user name) 
@@ -331,6 +336,16 @@
 	  PREFERENCE_BOOLEAN,
 	  GINT_TO_POINTER (FALSE)
 	},
+	{ NAUTILUS_PREFERENCES_ENABLE_TABS,
+	  PREFERENCE_BOOLEAN,
+	  GINT_TO_POINTER (TRUE)
+	},
+	{ NAUTILUS_PREFERENCES_NEW_TAB_POSITION,
+	  PREFERENCE_STRING,
+	  "after_current_tab",
+	  NULL, NULL,
+	  "new_tab_position"
+	},
 	{ NAUTILUS_PREFERENCES_START_WITH_TOOLBAR,
 	  PREFERENCE_BOOLEAN,
 	  GINT_TO_POINTER (TRUE)
@@ -594,6 +609,9 @@
 	eel_enumeration_register ("date_format",
 				  date_format_entries,
 				  G_N_ELEMENTS (date_format_entries));
+	eel_enumeration_register ("new_tab_position",
+				  new_tab_position_entries,
+				  G_N_ELEMENTS (new_tab_position_entries));
 
 	/* Set the enumeration ids for preferences that need them */
 	for (i = 0; preference_defaults[i].name != NULL; i++) {

Modified: branches/multiview/libnautilus-private/nautilus-global-preferences.h
==============================================================================
--- branches/multiview/libnautilus-private/nautilus-global-preferences.h	(original)
+++ branches/multiview/libnautilus-private/nautilus-global-preferences.h	Fri May 30 20:46:51 2008
@@ -78,6 +78,12 @@
 	NAUTILUS_DATE_FORMAT_INFORMAL
 } NautilusDateFormat;
 
+typedef enum
+{
+	NAUTILUS_NEW_TAB_POSITION_AFTER_CURRENT_TAB,
+	NAUTILUS_NEW_TAB_POSITION_END,
+} NautilusNewTabPosition;
+
 /* Sidebar panels  */
 #define NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES         "sidebar_panels/tree/show_only_directories"
 
@@ -89,6 +95,8 @@
 
 /* Spatial or browser mode */
 #define NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER       		"preferences/always_use_browser"
+#define NAUTILUS_PREFERENCES_ENABLE_TABS       			"preferences/tabs_enable"
+#define NAUTILUS_PREFERENCES_NEW_TAB_POSITION       		"preferences/tabs_open_position"
 
 /* Which views should be displayed for new windows */
 #define NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR		"preferences/start_with_location_bar"

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	Fri May 30 20:46:51 2008
@@ -3989,6 +3989,10 @@
 	g_assert (NAUTILUS_IS_FILE (data));
 	g_assert (FM_IS_DIRECTORY_VIEW (callback_data));
 
+	if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+		return;
+	}
+
 	fm_directory_view_activate_file (FM_DIRECTORY_VIEW (callback_data),
 					 NAUTILUS_FILE (data),
 					 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
@@ -7198,7 +7202,8 @@
 	gtk_action_set_visible (action, show_open_alternate);
 
 	/* Open in New Tab action */
-	if (nautilus_window_info_get_window_type (view->details->window) == NAUTILUS_WINDOW_NAVIGATION) {
+	if (nautilus_window_info_get_window_type (view->details->window) == NAUTILUS_WINDOW_NAVIGATION &&
+	    eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
 		if (selection_count == 0 || selection_count == 1) {
 			label_with_underscore = g_strdup (_("Open in New Tab"));
 		} else {

Modified: branches/multiview/src/file-manager/fm-icon-view.c
==============================================================================
--- branches/multiview/src/file-manager/fm-icon-view.c	(original)
+++ branches/multiview/src/file-manager/fm-icon-view.c	Fri May 30 20:46:51 2008
@@ -1755,7 +1755,7 @@
 	}
 
 	flags = NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND;
-	if (open_in_tab) {
+	if (open_in_tab && eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
 		flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB;
 	} else {
 		flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW;

Modified: branches/multiview/src/file-manager/nautilus-directory-view-ui.xml
==============================================================================
--- branches/multiview/src/file-manager/nautilus-directory-view-ui.xml	(original)
+++ branches/multiview/src/file-manager/nautilus-directory-view-ui.xml	Fri May 30 20:46:51 2008
@@ -17,8 +17,8 @@
 		</placeholder>
 		<placeholder name="Open Placeholder">
 			<menuitem name="Open" action="Open"/>
-			<menuitem name="OpenAlternate" action="OpenAlternate"/>
 			<menuitem name="OpenInNewTab" action="OpenInNewTab"/>
+			<menuitem name="OpenAlternate" action="OpenAlternate"/>
 			<placeholder name="Applications Placeholder">
                         </placeholder>
 			<menu action="Open With">

Modified: branches/multiview/src/nautilus-actions.h
==============================================================================
--- branches/multiview/src/nautilus-actions.h	(original)
+++ branches/multiview/src/nautilus-actions.h	Fri May 30 20:46:51 2008
@@ -50,5 +50,7 @@
 #define NAUTILUS_ACTION_CLOSE "Close"
 #define NAUTILUS_ACTION_SEARCH "Search"
 #define NAUTILUS_ACTION_FOLDER_WINDOW "Folder Window"
+#define NAUTILUS_ACTION_TABS "Tabs"
+#define NAUTILUS_ACTION_NEW_TAB "New Tab"
 
 #endif /* NAUTILUS_ACTIONS_H */

Modified: branches/multiview/src/nautilus-navigation-window-menus.c
==============================================================================
--- branches/multiview/src/nautilus-navigation-window-menus.c	(original)
+++ branches/multiview/src/nautilus-navigation-window-menus.c	Fri May 30 20:46:51 2008
@@ -245,6 +245,23 @@
 				!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER));
 }
 
+void
+nautilus_navigation_window_update_tab_menu_item_visibility (NautilusNavigationWindow *window) 
+{
+	GtkAction *action;
+
+	action = gtk_action_group_get_action (window->details->navigation_action_group,
+					      NAUTILUS_ACTION_TABS);
+	gtk_action_set_visible (action,
+				eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS));
+
+	action = gtk_action_group_get_action (window->details->navigation_action_group,
+					      NAUTILUS_ACTION_NEW_TAB);
+	gtk_action_set_visible (action,
+				eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS));
+
+}
+
 static void
 action_add_bookmark_callback (GtkAction *action,
 			      gpointer user_data)
@@ -491,7 +508,13 @@
 	NautilusWindow *window;
 	NautilusWindowSlot *current_slot;
 	NautilusWindowSlot *new_slot;
+	NautilusWindowOpenFlags flags;
 	GFile *current_location;
+	int new_slot_position;
+
+	if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+		return;
+	}
 
 	window = NAUTILUS_WINDOW (user_data);
 	current_slot = window->details->active_slot;
@@ -500,7 +523,15 @@
 	window = NAUTILUS_WINDOW (current_slot->window);
 
 	if (current_location != NULL) {
-		new_slot = nautilus_window_open_slot (window, 0);
+		flags = 0;
+
+		new_slot_position = eel_preferences_get_enum (NAUTILUS_PREFERENCES_NEW_TAB_POSITION);
+		if (new_slot_position == NAUTILUS_NEW_TAB_POSITION_END) {
+			flags = NAUTILUS_WINDOW_OPEN_SLOT_APPEND;
+		}
+
+
+		new_slot = nautilus_window_open_slot (window, flags);
 		nautilus_window_set_active_slot (window, new_slot);
 		nautilus_window_slot_go_to (new_slot, current_location);
 		g_object_unref (current_location);
@@ -742,6 +773,7 @@
 
 	nautilus_navigation_window_update_show_hide_menu_items (window);
 	nautilus_navigation_window_update_spatial_menu_item (window);
+	nautilus_navigation_window_update_tab_menu_item_visibility (window);
 
         nautilus_navigation_window_initialize_go_menu (window);
         nautilus_navigation_window_initialize_tabs_menu (window);

Modified: branches/multiview/src/nautilus-navigation-window-ui.xml
==============================================================================
--- branches/multiview/src/nautilus-navigation-window-ui.xml	(original)
+++ branches/multiview/src/nautilus-navigation-window-ui.xml	Fri May 30 20:46:51 2008
@@ -2,8 +2,8 @@
 <menubar name="MenuBar">
 	<menu action="File">
 		<placeholder name="New Items Placeholder">
-			<menuitem name="New Window" action="New Window"/>
 			<menuitem name="New Tab" action="New Tab"/>
+			<menuitem name="New Window" action="New Window"/>
 			<menuitem name="Folder Window" action="Folder Window"/>
 			<separator/>
 		</placeholder>

Modified: branches/multiview/src/nautilus-navigation-window.c
==============================================================================
--- branches/multiview/src/nautilus-navigation-window.c	(original)
+++ branches/multiview/src/nautilus-navigation-window.c	Fri May 30 20:46:51 2008
@@ -114,6 +114,7 @@
 						      NautilusNavigationWindow *window);
 static void always_use_location_entry_changed        (gpointer                  callback_data);
 static void always_use_browser_changed               (gpointer                  callback_data);
+static void enable_tabs_changed			     (gpointer                  callback_data);
 
 static void nautilus_navigation_window_set_bar_mode  (NautilusNavigationWindow *window, 
 						      NautilusBarMode           mode);
@@ -386,6 +387,10 @@
 	eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER,
 						  always_use_browser_changed,
 						  window, G_OBJECT (window));
+
+	eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_ENABLE_TABS,
+						  enable_tabs_changed,
+						  window, G_OBJECT (window));
 }
 
 static void
@@ -423,6 +428,16 @@
 	nautilus_navigation_window_update_spatial_menu_item (window);
 }
 
+static void
+enable_tabs_changed (gpointer callback_data)
+{
+	NautilusNavigationWindow *window;
+
+	window = NAUTILUS_NAVIGATION_WINDOW (callback_data);
+
+	nautilus_navigation_window_update_tab_menu_item_visibility (window);
+}
+
 static int
 bookmark_list_get_uri_index (GList *list,
 			     GFile *location)

Modified: branches/multiview/src/nautilus-window-manage-views.c
==============================================================================
--- branches/multiview/src/nautilus-window-manage-views.c	(original)
+++ branches/multiview/src/nautilus-window-manage-views.c	Fri May 30 20:46:51 2008
@@ -488,9 +488,11 @@
 	NautilusWindow *window;
         NautilusWindow *target_window;
         NautilusWindowSlot *target_slot;
+	NautilusWindowOpenFlags slot_flags;
         gboolean do_load_location = TRUE;
 	GFile *old_location;
 	char *old_uri, *new_uri;
+	int new_slot_position;
 
 	window = slot->window;
 
@@ -582,7 +584,15 @@
 	if ((flags & NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB) != 0 &&
 	    NAUTILUS_IS_NAVIGATION_WINDOW (window)) {
 		g_assert (target_window == window);
-		target_slot = nautilus_window_open_slot (window, 0);
+
+		slot_flags = 0;
+
+		new_slot_position = eel_preferences_get_enum (NAUTILUS_PREFERENCES_NEW_TAB_POSITION);
+		if (new_slot_position == NAUTILUS_NEW_TAB_POSITION_END) {
+			slot_flags = NAUTILUS_WINDOW_OPEN_SLOT_APPEND;
+		}
+
+		target_slot = nautilus_window_open_slot (window, slot_flags);
 	}
 
         if ((flags & NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND) != 0) {

Modified: branches/multiview/src/nautilus-window-private.h
==============================================================================
--- branches/multiview/src/nautilus-window-private.h	(original)
+++ branches/multiview/src/nautilus-window-private.h	Fri May 30 20:46:51 2008
@@ -220,6 +220,7 @@
 void               nautilus_navigation_window_remove_bookmarks_menu_items           (NautilusNavigationWindow    *window);
 void               nautilus_navigation_window_update_show_hide_menu_items           (NautilusNavigationWindow     *window);
 void               nautilus_navigation_window_update_spatial_menu_item              (NautilusNavigationWindow     *window);
+void               nautilus_navigation_window_update_tab_menu_item_visibility       (NautilusNavigationWindow     *window);
 void               nautilus_navigation_window_remove_go_menu_callback    (NautilusNavigationWindow    *window);
 void               nautilus_navigation_window_remove_go_menu_items       (NautilusNavigationWindow    *window);
 



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