Index: configure.in
===================================================================
RCS file: /cvs/gnome/nautilus/configure.in,v
retrieving revision 1.645
diff -u -p -r1.645 configure.in
--- configure.in	24 Oct 2005 10:15:24 -0000	1.645
+++ configure.in	12 Nov 2005 17:57:04 -0000
@@ -141,6 +141,7 @@ AC_SUBST(POPT_LIBS)
 dnl ==========================================================================
 
 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
 
 dnl ==========================================================================
 
@@ -281,7 +282,7 @@ GSEQUENCE_CFLAGS="`$PKG_CONFIG --cflags 
 AC_SUBST(GSEQUENCE_CFLAGS)
 	
 dnl libegg
-LIBEGG_MODULES="gtk+-2.0 libgnome-2.0"
+LIBEGG_MODULES="gtk+-2.0 libgnome-2.0 libxml-2.0"
 LIBEGG_CFLAGS="`$PKG_CONFIG --cflags $LIBEGG_MODULES`"
 AC_SUBST(LIBEGG_CFLAGS)
 
Index: cut-n-paste-code/libegg/Makefile.am
===================================================================
RCS file: /cvs/gnome/nautilus/cut-n-paste-code/libegg/Makefile.am,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile.am
--- cut-n-paste-code/libegg/Makefile.am	11 Feb 2004 16:03:37 -0000	1.3
+++ cut-n-paste-code/libegg/Makefile.am	12 Nov 2005 17:57:04 -0000
@@ -16,18 +16,88 @@ EGG_TREE_DND_FILES = 		\
 	eggtreemultidnd.h	\
 	$(NULL)
 
+EGG_TOOLBAR_EDITOR_FILES =	\
+	egg-editable-toolbar.c	\
+	egg-editable-toolbar.h	\
+	egg-toolbars-model.c	\
+	egg-toolbars-model.h	\
+	egg-toolbar-editor.c	\
+	egg-toolbar-editor.h	\
+	$(NULL)
+
+EGG_UTIL_FILES =		\
+	eggmarshalers.list	\
+	$(NULL)
+
+EGG_MARSHAL_FILES =		\
+	eggmarshalers.c		\
+	eggmarshalers.h
+
+eggmarshalers.h: eggmarshalers.list Makefile
+	cd $(srcdir) \
+	&& $(GLIB_GENMARSHAL) --prefix=_egg_marshal eggmarshalers.list --header > xgen-emh \
+	&& cp xgen-emh eggmarshalers.h \
+	&& rm -f xgen-emh xgen-emh~
+
+eggmarshalers.c: eggmarshalers.list eggmarshalers.h Makefile
+	cd $(srcdir) \
+	&& $(GLIB_GENMARSHAL) --prefix=_egg_marshal eggmarshalers.list --body > xgen-emc \
+	&& echo '#include "'eggmarshalers.h'"' > eggmarshalers.c \
+	&& cat xgen-emc >> eggmarshalers.c \
+	&& rm -f xgen-emc xgen-emc~
+
+EGG_ENUM_FILES =		\
+	eggtypebuiltins.c	\
+	eggtypebuiltins.h	\
+	$(NULL)
+
+
+eggtypebuiltins.h: egg-toolbars-model.h Makefile
+	( cd $(srcdir) && $(GLIB_MKENUMS) \
+                        --fhead "#ifndef __EGG_TYPES_BUILTIN_H__\n#define __EGG_TYPES_BUILTIN_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
+                        --fprod "/* enumerations from \"@filename@\" */\n" \
+                        --vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define GDK_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
+                        --ftail "G_END_DECLS\n\n#endif /* __EGG_TYPES_BUILTIN_H__ */" \
+                egg-toolbars-model.h ) >> xgen-geth \
+        && (cmp -s xgen-geth eggtypebuiltins.h || cp xgen-geth eggtypebuiltins.h ) \
+        && rm -f xgen-geth
+
+eggtypebuiltins.c: eggtypebuiltins.h egg-toolbars-model.h Makefile
+	( cd $(srcdir) && $(GLIB_MKENUMS) \
+                        --fhead "#include \"eggtypebuiltins.h\"\n#include \"egg-toolbars-model.h\"\n" \
+                        --fprod "\n/* enumerations from \"@filename@\" */" \
+                        --vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" \
+                        --vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+                        --vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
+                egg-toolbars-model.h ) > xgen-getc \
+        && cp xgen-getc eggtypebuiltins.c  \
+        && rm -f xgen-getc
+
+BUILT_SOURCES = $(EGG_MARSHAL_FILES) $(EGG_ENUM_FILES)
+
+CLEANFILES = $(EGG_MARSHAL_FILES) $(EGG_ENUM_FILES)
+
 libegg_la_SOURCES = 		\
 	$(EGG_RECENT_FILES)	\
 	$(EGG_TREE_DND_FILES)	\
+	$(EGG_TOOLBAR_EDITOR_FILES) \
+	$(EGG_UTIL_FILES)	\
+	$(EGG_ENUM_FILES)	\
+	$(EGG_MARSHAL_FILES)	\
 	$(NULL)
 
 EXTRA_DIST = 			\
+	eggmarshalers.list	\
 	update-from-egg.sh	\
 	$(NULL)
 
 EGG_RECENT_DIR = $(srcdir)/../../../libegg/libegg/recent-files
 EGG_TREE_DND_DIR = $(srcdir)/../../../libegg/libegg/treeviewutils
+EGG_TOOLBAR_EDITOR_DIR = $(srcdir)/../../../libegg/libegg/toolbareditor
+EGG_UTIL_DIR = $(srcdir)/../../../libegg/libegg/util
 
 regenerate-built-sources:
-	EGGFILES="$(EGG_RECENT_FILES)" EGGDIR="$(EGG_RECENT_DIR)" $(srcdir)/update-from-egg.sh
-	EGGFILES="$(EGG_TREE_DND_FILES)" EGGDIR="$(EGG_TREE_DND_DIR)" $(srcdir)/update-from-egg.sh
+#	EGGFILES="$(EGG_RECENT_FILES)" EGGDIR="$(EGG_RECENT_DIR)" $(srcdir)/update-from-egg.sh
+#	EGGFILES="$(EGG_TREE_DND_FILES)" EGGDIR="$(EGG_TREE_DND_DIR)" $(srcdir)/update-from-egg.sh
+#	EGGFILES="$(EGG_TOOLBAR_EDITOR_FILES)" EGGDIR="$(EGG_TOOLBAR_EDITOR_DIR)" $(srcdir)/update-from-egg.sh
+	EGGFILES="$(EGG_UTIL_FILES)" EGGDIR="$(EGG_UTIL_DIR)" $(srcdir)/update-from-egg.sh
Index: data/Makefile.am
===================================================================
RCS file: /cvs/gnome/nautilus/data/Makefile.am,v
retrieving revision 1.23
diff -u -p -r1.23 Makefile.am
--- data/Makefile.am	5 Feb 2005 01:42:45 -0000	1.23
+++ data/Makefile.am	12 Nov 2005 17:57:04 -0000
@@ -4,6 +4,7 @@ nautilusdatadir = $(datadir)/nautilus
 
 nautilusdata_DATA = \
 	browser.xml 			\
+	toolbars.xml			\
 	nautilus-extras.placeholder 	\
 	nautilus-suggested.placeholder 	\
 	$(NULL)
Index: src/Makefile.am
===================================================================
RCS file: /cvs/gnome/nautilus/src/Makefile.am,v
retrieving revision 1.162
diff -u -p -r1.162 Makefile.am
--- src/Makefile.am	8 Jul 2005 11:25:50 -0000	1.162
+++ src/Makefile.am	12 Nov 2005 17:57:12 -0000
@@ -109,10 +109,14 @@ nautilus_SOURCES = \
 	nautilus-sidebar-title.h		\
 	nautilus-signaller.c			\
 	nautilus-signaller.h			\
+	nautilus-singleton-action.c		\
+	nautilus-singleton-action.h		\
 	nautilus-spatial-window.c               \
 	nautilus-spatial-window.h               \
 	nautilus-throbber.c			\
 	nautilus-throbber.h			\
+	nautilus-toolbars-model.c               \
+	nautilus-toolbars-model.h               \
 	nautilus-window-bookmarks.c		\
 	nautilus-window-bookmarks.h		\
 	nautilus-window-manage-views.c		\
Index: src/nautilus-actions.h
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-actions.h,v
retrieving revision 1.4
diff -u -p -r1.4 nautilus-actions.h
--- src/nautilus-actions.h	11 Jul 2005 08:52:21 -0000	1.4
+++ src/nautilus-actions.h	12 Nov 2005 17:57:12 -0000
@@ -36,7 +36,6 @@
 #define NAUTILUS_ACTION_SHOW_HIDE_TOOLBAR "Show Hide Toolbar"
 #define NAUTILUS_ACTION_SHOW_HIDE_SIDEBAR "Show Hide Sidebar"
 #define NAUTILUS_ACTION_SHOW_HIDE_STATUSBAR "Show Hide Statusbar"
-#define NAUTILUS_ACTION_SHOW_HIDE_LOCATION_BAR "Show Hide Location Bar"
 #define NAUTILUS_ACTION_GO_TO_BURN_CD "Go to Burn CD"
 #define NAUTILUS_ACTION_ZOOM_IN "Zoom In"
 #define NAUTILUS_ACTION_ZOOM_OUT "Zoom Out"
Index: src/nautilus-location-entry.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-location-entry.c,v
retrieving revision 1.7
diff -u -p -r1.7 nautilus-location-entry.c
--- src/nautilus-location-entry.c	2 Jul 2005 14:50:36 -0000	1.7
+++ src/nautilus-location-entry.c	12 Nov 2005 17:57:13 -0000
@@ -41,6 +41,7 @@
 #include <eel/eel-string.h>
 #include <eel/eel-vfs-extensions.h>
 #include <gtk/gtkdnd.h>
+#include <gtk/gtklabel.h>
 #include <gtk/gtksignal.h>
 #include <libgnome/gnome-i18n.h>
 #include <libgnomeui/gnome-stock-icons.h>
Index: src/nautilus-navigation-window-menus.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window-menus.c,v
retrieving revision 1.281
diff -u -p -r1.281 nautilus-navigation-window-menus.c
--- src/nautilus-navigation-window-menus.c	18 Oct 2005 14:22:54 -0000	1.281
+++ src/nautilus-navigation-window-menus.c	12 Nov 2005 17:57:15 -0000
@@ -47,7 +47,9 @@
 #include <eel/eel-vfs-extensions.h>
 #include <eel/eel-xml-extensions.h>
 #include <libxml/parser.h>
+#include <gtk/gtkdialog.h>
 #include <gtk/gtkmain.h>
+#include <gtk/gtkstock.h>
 #include <libgnome/gnome-help.h>
 #include <libgnome/gnome-i18n.h>
 #include <libgnome/gnome-util.h>
@@ -60,6 +62,8 @@
 #include <libnautilus-private/nautilus-ui-utilities.h>
 #include <libnautilus-private/nautilus-icon-factory.h>
 #include <libnautilus-private/nautilus-undo-manager.h>
+#include <cut-n-paste-code/libegg/egg-toolbar-editor.h>
+#include <cut-n-paste-code/libegg/egg-toolbars-model.h>
 
 #define MENU_PATH_HISTORY_PLACEHOLDER			"/MenuBar/Other Menus/Go/History Placeholder"
 
@@ -152,9 +156,9 @@ action_show_hide_toolbar_callback (GtkAc
 	window = NAUTILUS_NAVIGATION_WINDOW (user_data);
 
 	if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) {
-		nautilus_navigation_window_show_toolbar (window);
+		nautilus_navigation_window_show_toolbar (window, TRUE);
 	} else {
-		nautilus_navigation_window_hide_toolbar (window);
+		nautilus_navigation_window_hide_toolbar (window, TRUE);
 	}
 }
 
@@ -176,21 +180,6 @@ action_show_hide_sidebar_callback (GtkAc
 }
 
 static void
-action_show_hide_location_bar_callback (GtkAction *action, 
-					gpointer user_data)
-{
-	NautilusNavigationWindow *window;
-
-	window = NAUTILUS_NAVIGATION_WINDOW (user_data);
-
-	if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) {
-		nautilus_navigation_window_show_location_bar (window, TRUE);
-	} else {
-		nautilus_navigation_window_hide_location_bar (window, TRUE);
-	}
-}
-
-static void
 action_show_hide_statusbar_callback (GtkAction *action,
 				     gpointer user_data)
 {
@@ -221,11 +210,6 @@ nautilus_navigation_window_update_show_h
 					      NAUTILUS_ACTION_SHOW_HIDE_SIDEBAR);
 	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
 				      nautilus_navigation_window_sidebar_showing (window));
-	
-	action = gtk_action_group_get_action (window->details->navigation_action_group,
-					      NAUTILUS_ACTION_SHOW_HIDE_LOCATION_BAR);
-	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
-				      nautilus_navigation_window_location_bar_showing (window));
 
 	action = gtk_action_group_get_action (window->details->navigation_action_group,
 					      NAUTILUS_ACTION_SHOW_HIDE_STATUSBAR);
@@ -247,6 +231,56 @@ action_edit_bookmarks_callback (GtkActio
         nautilus_window_edit_bookmarks (NAUTILUS_WINDOW (user_data));
 }
 
+static void
+ev_window_cmd_edit_toolbar_callback (GtkDialog *dialog,
+				     int response,
+				     NautilusNavigationWindow *window)
+{
+        egg_editable_toolbar_set_edit_mode
+                        (EGG_EDITABLE_TOOLBAR (window->details->toolbar), FALSE);
+        gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+static void
+action_edit_toolbar_callback (GtkAction *action, 
+			      NautilusNavigationWindow *window)
+{
+	GtkWidget *dialog;
+	GtkWidget *editor;
+
+        dialog = gtk_dialog_new_with_buttons (_("Toolbar Editor"),
+                                              GTK_WINDOW (window),
+                                              GTK_DIALOG_DESTROY_WITH_PARENT,
+                                              GTK_STOCK_CLOSE,
+                                              GTK_RESPONSE_CLOSE,
+                                              NULL);
+        gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
+        gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 5);
+        gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2);
+        gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+        gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
+
+        editor = egg_toolbar_editor_new (
+		nautilus_window_get_ui_manager (NAUTILUS_WINDOW (window)),
+		window->details->toolbars_model);
+        gtk_container_set_border_width (GTK_CONTAINER (editor), 5);
+        gtk_box_set_spacing (GTK_BOX (EGG_TOOLBAR_EDITOR (editor)), 5);
+
+	/* FIXME error handling */
+        gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), editor);
+        egg_toolbar_editor_load_actions (EGG_TOOLBAR_EDITOR (editor),
+					 NAUTILUS_DATADIR "/toolbars.xml");
+
+        egg_editable_toolbar_set_edit_mode
+                (EGG_EDITABLE_TOOLBAR (window->details->toolbar), TRUE);
+
+        g_signal_connect (dialog, "response",
+                          G_CALLBACK (ev_window_cmd_edit_toolbar_callback),
+			  window);
+        gtk_widget_show_all (dialog);
+}
+
+
 void
 nautilus_navigation_window_remove_go_menu_callback (NautilusNavigationWindow *window)
 {
@@ -433,6 +467,9 @@ static const GtkActionEntry navigation_e
   { "Edit Bookmarks", NULL, N_("_Edit Bookmarks"), /* name, stock id, label */
     "<control>b", N_("Display a window that allows editing the bookmarks in this menu"),
     G_CALLBACK (action_edit_bookmarks_callback) },
+  { "Edit Toolbar", NULL, N_("_Toolbar"), /* name, stock id, label */
+    NULL, N_("Display a window that allows editing the toolbars"),
+    G_CALLBACK (action_edit_toolbar_callback) },
 };
 
 static const GtkToggleActionEntry navigation_toggle_entries[] = {
@@ -446,11 +483,6 @@ static const GtkToggleActionEntry naviga
     N_("Change the visibility of this window's sidebar"),                       /* tooltip */
     G_CALLBACK (action_show_hide_sidebar_callback),
     TRUE}, /* is_active */
-  { "Show Hide Location Bar", NULL,                 /* name, stock id */
-    N_("Location _Bar"), NULL,                    /* label, accelerator */     
-    N_("Change the visibility of this window's location bar"),                    /* tooltip */
-    G_CALLBACK (action_show_hide_location_bar_callback),
-    TRUE},                                    /* is_active */
   { "Show Hide Statusbar", NULL,                 /* name, stock id */
     N_("St_atusbar"), NULL,                    /* label, accelerator */     
     N_("Change the visibility of this window's statusbar"),                    /* tooltip */
Index: src/nautilus-navigation-window-ui.xml
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window-ui.xml,v
retrieving revision 1.12
diff -u -p -r1.12 nautilus-navigation-window-ui.xml
--- src/nautilus-navigation-window-ui.xml	11 Jul 2005 08:52:21 -0000	1.12
+++ src/nautilus-navigation-window-ui.xml	12 Nov 2005 17:57:15 -0000
@@ -9,11 +9,15 @@
 			<menuitem name="Close All Windows" action="Close All Windows"/>
 		</placeholder>
 	</menu>
+	<menu action="Edit">
+		<placeholder name="Before Preferences Actions">
+			<menuitem name="Edit Toolbar" action="Edit Toolbar"/>
+		</placeholder>
+	</menu>
 	<menu action="View">
 		<placeholder name="Show Hide Placeholder">
 			<menuitem name="Show Hide Toolbar" action="Show Hide Toolbar"/>
 			<menuitem name="Show Hide Sidebar" action="Show Hide Sidebar"/>
-			<menuitem name="Show Hide Location Bar" action="Show Hide Location Bar"/>
 			<menuitem name="Show Hide Statusbar" action="Show Hide Statusbar"/>
 		</placeholder>
 	</menu>
Index: src/nautilus-navigation-window.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.c,v
retrieving revision 1.439
diff -u -p -r1.439 nautilus-navigation-window.c
--- src/nautilus-navigation-window.c	18 Oct 2005 14:22:54 -0000	1.439
+++ src/nautilus-navigation-window.c	12 Nov 2005 17:57:15 -0000
@@ -38,6 +38,7 @@
 #include "nautilus-signaller.h"
 #include "nautilus-location-bar.h"
 #include "nautilus-pathbar.h"
+#include "nautilus-singleton-action.h"
 #include "nautilus-window-manage-views.h"
 #include "nautilus-zoom-control.h"
 #include <eel/eel-accessibility.h>
@@ -126,13 +127,6 @@ GNOME_CLASS_BOILERPLATE (NautilusNavigat
 static void
 nautilus_navigation_window_instance_init (NautilusNavigationWindow *window)
 {
-	GtkUIManager *ui_manager;
-	GtkWidget *toolbar;
-	GtkWidget *location_bar;
-	GtkWidget *view_as_menu_vbox;
-	GtkToolItem *item;
-	GtkWidget *hbox;
-	
 	window->details = g_new0 (NautilusNavigationWindowDetails, 1);
 
 	window->details->tooltips = gtk_tooltips_new ();
@@ -146,86 +140,28 @@ nautilus_navigation_window_instance_init
 			  0, 1,                               3, 4,
 			  GTK_EXPAND | GTK_FILL | GTK_SHRINK, GTK_EXPAND | GTK_FILL | GTK_SHRINK,
 			  0,                                  0);
-	gtk_widget_show (window->details->content_paned);
+	gtk_widget_show (GTK_WIDGET (window->details->content_paned));
 
 	nautilus_navigation_window_initialize_actions (window);
 	nautilus_navigation_window_initialize_menus (window);
-	
-	ui_manager = nautilus_window_get_ui_manager (NAUTILUS_WINDOW (window));
-	toolbar = gtk_ui_manager_get_widget (ui_manager, "/Toolbar");
-	window->details->toolbar = toolbar;
-	gtk_table_attach (GTK_TABLE (NAUTILUS_WINDOW (window)->details->table),
-			  toolbar,
-			  /* X direction */                   /* Y direction */
-			  0, 1,                               1, 2,
-			  GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0,
-			  0,                                  0);
-	gtk_widget_show (toolbar);
 
 	nautilus_navigation_window_initialize_toolbars (window);
+ 	gtk_table_attach (GTK_TABLE (NAUTILUS_WINDOW (window)->details->table),
+			  window->details->toolbar,
+ 			  /* X direction */                   /* Y direction */
+ 			  0, 1,                               1, 2,
+ 			  GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0,
+ 			  0,                                  0);
+	gtk_widget_show (window->details->toolbar);
 
-	/* Set initial sensitivity of some buttons & menu items 
-	 * now that they're all created.
-	 */
-	nautilus_navigation_window_allow_back (window, FALSE);
-	nautilus_navigation_window_allow_forward (window, FALSE);
-
-	/* set up location bar */
-	location_bar = gtk_toolbar_new ();
-	window->details->location_bar = location_bar;
-
-	hbox = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox);
-
-	item = gtk_tool_item_new ();
-	gtk_container_set_border_width (GTK_CONTAINER (item), GNOME_PAD_SMALL);
-	gtk_widget_show (GTK_WIDGET (item));
-	gtk_tool_item_set_expand (item, TRUE);
-	gtk_container_add (GTK_CONTAINER (item),  hbox);
-	gtk_toolbar_insert (GTK_TOOLBAR (location_bar),
-			    item, -1);
-
-	window->path_bar = g_object_new (NAUTILUS_TYPE_PATH_BAR, NULL);
- 	gtk_widget_show (window->path_bar);
-	
 	g_signal_connect_object (window->path_bar, "path_clicked",
 				 G_CALLBACK (path_bar_location_changed_callback), window, 0);
-	
-	gtk_box_pack_start (GTK_BOX (hbox),
-			    window->path_bar,
-			    TRUE, TRUE, 0);
 
-	window->navigation_bar = nautilus_location_bar_new (window);
 	g_signal_connect_object (window->navigation_bar, "location_changed",
 				 G_CALLBACK (navigation_bar_location_changed_callback), window, 0);
 	g_signal_connect_object (window->navigation_bar, "cancel",
 				 G_CALLBACK (navigation_bar_cancel_callback), window, 0);
 
-	gtk_box_pack_start (GTK_BOX (hbox),
-			    window->navigation_bar,
-			    TRUE, TRUE, 0);
-
-	/* Option menu for content view types; it's empty here, filled in when a uri is set.
-	 * Pack it into vbox so it doesn't grow vertically when location bar does. 
-	 */
-	view_as_menu_vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
-	gtk_widget_show (view_as_menu_vbox);
-
-	item = gtk_tool_item_new ();
-	gtk_container_set_border_width (GTK_CONTAINER (item), GNOME_PAD_SMALL);
-	gtk_widget_show (GTK_WIDGET (item));
-	gtk_container_add (GTK_CONTAINER (item), view_as_menu_vbox);
-	gtk_toolbar_insert (GTK_TOOLBAR (location_bar),
-			    item, -1);
-	
-	window->view_as_option_menu = gtk_option_menu_new ();
-	gtk_box_pack_end (GTK_BOX (view_as_menu_vbox), window->view_as_option_menu, TRUE, FALSE, 0);
-	gtk_widget_show (window->view_as_option_menu);
-
-	/* Allocate the zoom control and place on the right next to the menu.
-	 * It gets shown later, if the view-frame contains something zoomable.
-	 */
-	window->zoom_control = nautilus_zoom_control_new ();
 	g_signal_connect_object (window->zoom_control, "zoom_in",
 				 G_CALLBACK (nautilus_window_zoom_in),
 				 window, G_CONNECT_SWAPPED);
@@ -238,22 +174,12 @@ nautilus_navigation_window_instance_init
 	g_signal_connect_object (window->zoom_control, "zoom_to_default",
 				 G_CALLBACK (nautilus_window_zoom_to_default),
 				 window, G_CONNECT_SWAPPED);
-	
-	item = gtk_tool_item_new ();
-	gtk_container_set_border_width (GTK_CONTAINER (item), GNOME_PAD_SMALL);
-	gtk_widget_show (GTK_WIDGET (item));
-	gtk_container_add (GTK_CONTAINER (item),  window->zoom_control);
-	gtk_toolbar_insert (GTK_TOOLBAR (location_bar),
-			    item, 1);
 
-	gtk_widget_show (location_bar);
-
-	gtk_table_attach (GTK_TABLE (NAUTILUS_WINDOW (window)->details->table),
-			  location_bar,
-			  /* X direction */                    /* Y direction */
-			  0, 1,                                2, 3,
-			  GTK_EXPAND | GTK_FILL | GTK_SHRINK,  0,
-			  0,                                   0);
+	/* Set initial sensitivity of some buttons & menu items 
+	 * now that they're all created.
+	 */
+	nautilus_navigation_window_allow_back (window, FALSE);
+	nautilus_navigation_window_allow_forward (window, FALSE);
 
 	eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY,
 						  always_use_location_entry_changed,
@@ -322,11 +248,11 @@ hide_temporary_bars (NautilusNavigationW
 {
 	g_assert (NAUTILUS_IS_NAVIGATION_WINDOW (window));
 
-	if (window->details->temporary_location_bar) {
-		if (nautilus_navigation_window_location_bar_showing (window)) {
-			nautilus_navigation_window_hide_location_bar (window, FALSE);
+	if (window->details->temporary_toolbar) {
+		if (nautilus_navigation_window_toolbar_showing (window)) {
+			nautilus_navigation_window_hide_toolbar (window, FALSE);
 		}
-		window->details->temporary_location_bar = FALSE;
+		window->details->temporary_toolbar = FALSE;
 	}
 	if (window->details->temporary_navigation_bar) {
 		if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY)) {
@@ -888,12 +814,12 @@ real_set_throbber_active (NautilusWindow
 }
 
 static void
-nautilus_navigation_window_show_location_bar_temporarily (NautilusNavigationWindow *window, 
-							  gboolean in_search_mode)
+nautilus_navigation_window_show_toolbar_temporarily (NautilusNavigationWindow *window, 
+						     gboolean in_search_mode)
 {
-	if (!nautilus_navigation_window_location_bar_showing (window)) {
-		nautilus_navigation_window_show_location_bar (window, FALSE);
-		window->details->temporary_location_bar = TRUE;
+	if (!nautilus_navigation_window_toolbar_showing (window)) {
+		nautilus_navigation_window_show_toolbar (window, FALSE);
+		window->details->temporary_toolbar = TRUE;
 	}
 	if (nautilus_navigation_window_path_bar_showing (window)) {
 		nautilus_navigation_window_hide_path_bar (window);
@@ -906,7 +832,7 @@ nautilus_navigation_window_show_location
 static void
 real_prompt_for_location (NautilusWindow *window, const char *initial)
 {
-	nautilus_navigation_window_show_location_bar_temporarily (NAUTILUS_NAVIGATION_WINDOW (window), FALSE);
+	nautilus_navigation_window_show_toolbar_temporarily (NAUTILUS_NAVIGATION_WINDOW (window), FALSE);
 
 	if (initial) {
 		nautilus_navigation_bar_set_location (NAUTILUS_NAVIGATION_BAR (NAUTILUS_NAVIGATION_WINDOW (window)->navigation_bar),
@@ -989,39 +915,6 @@ add_sidebar_panels (NautilusNavigationWi
 }
 
 void 
-nautilus_navigation_window_hide_location_bar (NautilusNavigationWindow *window, gboolean save_preference)
-{
-	window->details->temporary_location_bar = FALSE;
-	gtk_widget_hide (window->details->location_bar);
-	nautilus_navigation_window_update_show_hide_menu_items (window);
-	if (save_preference &&
-	    eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR)) {
-		eel_preferences_set_boolean (NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR, FALSE);
-	}
-}
-
-void 
-nautilus_navigation_window_show_location_bar (NautilusNavigationWindow *window, gboolean save_preference)
-{
-	gtk_widget_show (window->details->location_bar);
-	nautilus_navigation_window_update_show_hide_menu_items (window);
-	if (save_preference &&
-	    eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR)) {
-		eel_preferences_set_boolean (NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR, TRUE);
-	}
-}
-
-gboolean
-nautilus_navigation_window_location_bar_showing (NautilusNavigationWindow *window)
-{
-	if (window->details->location_bar != NULL) {
-		return GTK_WIDGET_VISIBLE (window->details->location_bar);
-	}
-	/* If we're not visible yet we haven't changed visibility, so its TRUE */
-	return TRUE;
-}
-
-void 
 nautilus_navigation_window_hide_path_bar (NautilusNavigationWindow *window)
 {
 	window->details->temporary_navigation_bar = FALSE;
@@ -1092,22 +985,26 @@ nautilus_navigation_window_status_bar_sh
 
 
 void 
-nautilus_navigation_window_hide_toolbar (NautilusNavigationWindow *window)
+nautilus_navigation_window_hide_toolbar (NautilusNavigationWindow *window,
+					 gboolean save_preference)
 {
 	gtk_widget_hide (window->details->toolbar);
 	nautilus_navigation_window_update_show_hide_menu_items (window);
-	if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR) &&
+	if (save_preference &&
+	    eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR) &&
 	    eel_preferences_get_boolean (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR)) {
 		eel_preferences_set_boolean (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR, FALSE);
 	}
 }
 
 void 
-nautilus_navigation_window_show_toolbar (NautilusNavigationWindow *window)
+nautilus_navigation_window_show_toolbar (NautilusNavigationWindow *window,
+					 gboolean save_preference)
 {
 	gtk_widget_show (window->details->toolbar);
 	nautilus_navigation_window_update_show_hide_menu_items (window);
-	if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR) &&
+	if (save_preference &&
+	    eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR) &&
 	    !eel_preferences_get_boolean (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR)) {
 		eel_preferences_set_boolean (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR, TRUE);
 	}
@@ -1201,15 +1098,9 @@ nautilus_navigation_window_show (GtkWidg
 	 */
 
 	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_START_WITH_TOOLBAR)) {
-		nautilus_navigation_window_show_toolbar (window);
-	} else {
-		nautilus_navigation_window_hide_toolbar (window);
-	}
-
-	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR)) {
-		nautilus_navigation_window_show_location_bar (window, FALSE);
+		nautilus_navigation_window_show_toolbar (window, FALSE);
 	} else {
-		nautilus_navigation_window_hide_location_bar (window, FALSE);
+		nautilus_navigation_window_hide_toolbar (window, FALSE);
 	}
 
 	if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY)) {
Index: src/nautilus-navigation-window.h
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-navigation-window.h,v
retrieving revision 1.112
diff -u -p -r1.112 nautilus-navigation-window.h
--- src/nautilus-navigation-window.h	8 Jul 2005 11:25:51 -0000	1.112
+++ src/nautilus-navigation-window.h	12 Nov 2005 17:57:16 -0000
@@ -88,18 +88,15 @@ void     nautilus_navigation_window_clea
 void     nautilus_navigation_window_clear_forward_list   (NautilusNavigationWindow *window);
 void     nautilus_forget_history                         (void);
 gint     nautilus_navigation_window_get_base_page_index  (NautilusNavigationWindow *window);
-void     nautilus_navigation_window_hide_location_bar    (NautilusNavigationWindow *window,
-                                                          gboolean                  save_preference);
-void     nautilus_navigation_window_show_location_bar    (NautilusNavigationWindow *window,
-                                                          gboolean                  save_preference);
 
 void     nautilus_navigation_window_hide_path_bar        (NautilusNavigationWindow *window);
 void     nautilus_navigation_window_show_path_bar        (NautilusNavigationWindow *window);
 gboolean nautilus_navigation_window_path_bar_showing 	 (NautilusNavigationWindow *window);
 
-gboolean nautilus_navigation_window_location_bar_showing (NautilusNavigationWindow *window);
-void     nautilus_navigation_window_hide_toolbar         (NautilusNavigationWindow *window);
-void     nautilus_navigation_window_show_toolbar         (NautilusNavigationWindow *window);
+void     nautilus_navigation_window_hide_toolbar         (NautilusNavigationWindow *window,
+							  gboolean                  save_preference);
+void     nautilus_navigation_window_show_toolbar         (NautilusNavigationWindow *window,
+							  gboolean                  save_preference);
 gboolean nautilus_navigation_window_toolbar_showing      (NautilusNavigationWindow *window);
 void     nautilus_navigation_window_hide_sidebar         (NautilusNavigationWindow *window);
 void     nautilus_navigation_window_show_sidebar         (NautilusNavigationWindow *window);
Index: src/nautilus-shell-ui.xml
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-shell-ui.xml,v
retrieving revision 1.121
diff -u -p -r1.121 nautilus-shell-ui.xml
--- src/nautilus-shell-ui.xml	6 Jul 2005 12:18:27 -0000	1.121
+++ src/nautilus-shell-ui.xml	12 Nov 2005 17:57:16 -0000
@@ -36,6 +36,7 @@
 		<placeholder name="Extension Actions"/>
 		<separator/>
 		<menuitem name="Backgrounds and Emblems" action="Backgrounds and Emblems"/>
+		<placeholder name="Before Preferences Placeholder"/>
 		<menuitem name="Preferences" action="Preferences"/>
 	</menu>
 	<menu action="View">
Index: src/nautilus-spatial-window.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-spatial-window.c,v
retrieving revision 1.453
diff -u -p -r1.453 nautilus-spatial-window.c
--- src/nautilus-spatial-window.c	19 Oct 2005 17:53:06 -0000	1.453
+++ src/nautilus-spatial-window.c	12 Nov 2005 17:57:17 -0000
@@ -49,11 +49,15 @@
 #include <eel/eel-string.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gdk/gdkx.h>
+#include <gtk/gtkbindings.h>
 #include <gtk/gtkdnd.h>
+#include <gtk/gtkarrow.h>
+#include <gtk/gtkimagemenuitem.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkmenubar.h>
 #include <gtk/gtkmenuitem.h>
 #include <gtk/gtkoptionmenu.h>
+#include <gtk/gtktable.h>
 #include <gtk/gtktogglebutton.h>
 #include <gtk/gtkvbox.h>
 #include <gtk/gtkuimanager.h>
Index: src/nautilus-window-bookmarks.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window-bookmarks.c,v
retrieving revision 1.2
diff -u -p -r1.2 nautilus-window-bookmarks.c
--- src/nautilus-window-bookmarks.c	18 Oct 2005 15:44:29 -0000	1.2
+++ src/nautilus-window-bookmarks.c	12 Nov 2005 17:57:17 -0000
@@ -34,6 +34,7 @@
 #include "nautilus-window-bookmarks.h"
 #include "nautilus-window-private.h"
 #include <libnautilus-private/nautilus-undo-manager.h>
+#include <gtk/gtk.h>
 #include <eel/eel-debug.h>
 #include <eel/eel-stock-dialogs.h>
 #include <eel/eel-vfs-extensions.h>
Index: src/nautilus-window-manage-views.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window-manage-views.c,v
retrieving revision 1.357
diff -u -p -r1.357 nautilus-window-manage-views.c
--- src/nautilus-window-manage-views.c	28 Oct 2005 12:41:20 -0000	1.357
+++ src/nautilus-window-manage-views.c	12 Nov 2005 17:57:19 -0000
@@ -52,6 +52,7 @@
 #include <libgnomevfs/gnome-vfs-async-ops.h>
 #include <libgnomevfs/gnome-vfs-uri.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
+#include <libnautilus-private/nautilus-directory.h>
 #include <libnautilus-private/nautilus-file-attributes.h>
 #include <libnautilus-private/nautilus-file-utilities.h>
 #include <libnautilus-private/nautilus-file.h>
Index: src/nautilus-window-menus.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window-menus.c,v
retrieving revision 1.290
diff -u -p -r1.290 nautilus-window-menus.c
--- src/nautilus-window-menus.c	26 Oct 2005 09:07:07 -0000	1.290
+++ src/nautilus-window-menus.c	12 Nov 2005 17:57:19 -0000
@@ -48,6 +48,7 @@
 #include <eel/eel-vfs-extensions.h>
 #include <eel/eel-xml-extensions.h>
 #include <libxml/parser.h>
+#include <gtk/gtk.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkaboutdialog.h>
 #include <gtk/gtkenums.h>
Index: src/nautilus-window-private.h
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window-private.h,v
retrieving revision 1.110
diff -u -p -r1.110 nautilus-window-private.h
--- src/nautilus-window-private.h	11 Jul 2005 10:23:57 -0000	1.110
+++ src/nautilus-window-private.h	12 Nov 2005 17:57:19 -0000
@@ -31,11 +31,16 @@
 #include "nautilus-window.h"
 #include "nautilus-spatial-window.h"
 #include "nautilus-navigation-window.h"
+#include "nautilus-sidebar.h"
+#include "nautilus-toolbars-model.h"
 
-#include <bonobo/bonobo-ui-component.h>
-#include <bonobo/bonobo-ui-container.h>
-#include <bonobo/bonobo-ui-toolbar-button-item.h>
-#include <libnautilus-private/nautilus-directory.h>
+#include <cut-n-paste-code/libegg/egg-editable-toolbar.h>
+
+#include <libnautilus-private/nautilus-file.h>
+#include <gtk/gtkactiongroup.h>
+#include <gtk/gtkradioaction.h>
+#include <gtk/gtkuimanager.h>
+#include <gtk/gtkwidget.h>
 
 typedef enum {
         NAUTILUS_LOCATION_CHANGE_STANDARD,
@@ -100,10 +105,6 @@ struct _NautilusNavigationWindowDetails 
         GtkWidget *content_paned;
         GtkActionGroup *navigation_action_group; /* owned by ui_manager */
         
-        /* Location bar */
-        gboolean temporary_navigation_bar;
-        gboolean temporary_location_bar;
-
         /* Side Pane */
         int side_pane_width;
         NautilusSidebar *current_side_panel;
@@ -113,10 +114,13 @@ struct _NautilusNavigationWindowDetails 
 	guint refresh_go_menu_idle_id;
         guint go_menu_merge_id;
         
-        /* Toolbar */
-        GtkWidget *toolbar;
+	/* Toolbar */
+	GtkWidget *toolbar;
+	EggToolbarsModel *toolbars_model;
         GtkTooltips *tooltips;
-        GtkWidget *location_bar;
+
+        gboolean temporary_toolbar;
+        gboolean temporary_navigation_bar;
 
         guint extensions_toolbar_merge_id;
         GtkActionGroup *extensions_toolbar_action_group;
@@ -212,7 +216,6 @@ void               nautilus_navigation_w
 void               nautilus_navigation_window_remove_go_menu_items       (NautilusNavigationWindow    *window);
 
 /* Navigation window toolbar */
-void               nautilus_navigation_window_activate_throbber                     (NautilusNavigationWindow    *window);
 void               nautilus_navigation_window_initialize_toolbars                   (NautilusNavigationWindow    *window);
 void               nautilus_navigation_window_load_extension_toolbar_items          (NautilusNavigationWindow    *window);
 void               nautilus_navigation_window_set_throbber_active                   (NautilusNavigationWindow    *window, 
Index: src/nautilus-window-toolbars.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window-toolbars.c,v
retrieving revision 1.112
diff -u -p -r1.112 nautilus-window-toolbars.c
--- src/nautilus-window-toolbars.c	4 Apr 2005 19:30:22 -0000	1.112
+++ src/nautilus-window-toolbars.c	12 Nov 2005 17:57:19 -0000
@@ -30,18 +30,23 @@
 
 #include <unistd.h>
 #include "nautilus-application.h"
+#include "nautilus-location-bar.h"
+#include "nautilus-pathbar.h"
+#include "nautilus-singleton-action.h"
 #include "nautilus-window-manage-views.h"
 #include "nautilus-window-private.h"
 #include "nautilus-window.h"
 #include "nautilus-throbber.h"
+#include "nautilus-zoom-control.h"
 #include <eel/eel-gnome-extensions.h>
 #include <eel/eel-gtk-extensions.h>
 #include <eel/eel-string.h>
+#include <glib/gi18n.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtktogglebutton.h>
+#include <gtk/gtktoolbar.h>
 #include <gdk/gdkkeysyms.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-popup-menu.h>
+#include <libgnomeui/libgnomeui.h>
 #include <libnautilus-extension/nautilus-menu-provider.h>
 #include <libnautilus-private/nautilus-bookmark.h>
 #include <libnautilus-private/nautilus-file-utilities.h>
@@ -74,21 +79,21 @@ nautilus_navigation_window_set_throbber_
 	}
 }
 
-void
-nautilus_navigation_window_activate_throbber (NautilusNavigationWindow *window)
+static void
+nautilus_navigation_window_initialize_throbber (NautilusNavigationWindow *window)
 {
+	GtkToolbar *fixed_toolbar;
 	GtkToolItem *item;
 	GtkWidget *throbber;
 
-	if (window->details->throbber != NULL) {
-		return;
-	}
+	g_assert (window->details->throbber == NULL);
+
+	fixed_toolbar = GTK_TOOLBAR (gtk_toolbar_new ());
 
 	item = gtk_tool_item_new ();
 	gtk_widget_show (GTK_WIDGET (item));
 	gtk_tool_item_set_expand (item, TRUE);
-	gtk_toolbar_insert (GTK_TOOLBAR (window->details->toolbar),
-			    item, -1);
+	gtk_toolbar_insert (fixed_toolbar, item, -1);
 	
 	throbber = nautilus_throbber_new ();
 	gtk_widget_show (GTK_WIDGET (throbber));
@@ -97,16 +102,100 @@ nautilus_navigation_window_activate_thro
 	gtk_container_add (GTK_CONTAINER (item), throbber);
 	gtk_widget_show (GTK_WIDGET (item));
 	
-	gtk_toolbar_insert (GTK_TOOLBAR (window->details->toolbar),
-			    item, -1);
+	gtk_toolbar_insert (fixed_toolbar, item, -1);
 	
 	window->details->throbber = throbber;
+
+	egg_editable_toolbar_set_fixed (EGG_EDITABLE_TOOLBAR (window->details->toolbar),
+					fixed_toolbar);
+}
+
+static void
+nautilus_navigation_window_initialize_navigation_bar (NautilusNavigationWindow *window)
+{
+	GtkToolItem *item;
+	GtkWidget *hbox, *view_as_menu_vbox;
+	GtkAction *action;
+
+	g_assert (window->path_bar == NULL);
+
+	/* Location action */
+	item = gtk_tool_item_new ();
+	gtk_container_set_border_width (GTK_CONTAINER (item), GNOME_PAD_SMALL);
+	gtk_widget_show (GTK_WIDGET (item));
+	gtk_tool_item_set_expand (item, TRUE);
+
+	action = nautilus_singleton_action_new ("Location", _("Location"), NULL, GTK_WIDGET (item));
+	gtk_action_group_add_action (
+		window->details->navigation_action_group, action);
+
+	hbox = gtk_hbox_new (FALSE, 0);
+	gtk_widget_show (hbox);
+	gtk_container_add (GTK_CONTAINER (item), hbox);
+
+	window->path_bar = g_object_new (NAUTILUS_TYPE_PATH_BAR, NULL);
+ 	gtk_widget_show (window->path_bar);
+	
+	gtk_box_pack_start (GTK_BOX (hbox),
+			    window->path_bar,
+			    TRUE, TRUE, 0);
+
+	window->navigation_bar = nautilus_location_bar_new (window);
+
+	gtk_box_pack_start (GTK_BOX (hbox),
+			    window->navigation_bar,
+			    TRUE, TRUE, 0);
+
+	/* Zoom action
+	 *
+	 * Allocate the zoom control and place on the right next to the menu.
+	 * It gets shown later, if the view-frame contains something zoomable.
+	 */
+	item = gtk_tool_item_new ();
+	gtk_container_set_border_width (GTK_CONTAINER (item), GNOME_PAD_SMALL);
+	gtk_widget_show (GTK_WIDGET (item));
+
+	action = nautilus_singleton_action_new ("Zoom", _("Zoom"), NULL, GTK_WIDGET (item));
+	gtk_action_group_add_action (
+		window->details->navigation_action_group, action);
+
+	window->zoom_control = nautilus_zoom_control_new ();
+	gtk_container_add (GTK_CONTAINER (item),  window->zoom_control);
+
+	/* View box */
+	item = gtk_tool_item_new ();
+	gtk_container_set_border_width (GTK_CONTAINER (item), GNOME_PAD_SMALL);
+	gtk_widget_show (GTK_WIDGET (item));
+
+	action = nautilus_singleton_action_new ("ViewChooser", _("ViewChooser"), NULL, GTK_WIDGET (item));
+	gtk_action_group_add_action (
+		window->details->navigation_action_group, action);
+
+	/* Option menu for content view types; it's empty here, filled in when a uri is set.
+	 * Pack it into vbox so it doesn't grow vertically when location bar does. 
+	 */
+	view_as_menu_vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
+	gtk_widget_show (view_as_menu_vbox);
+	gtk_container_add (GTK_CONTAINER (item), view_as_menu_vbox);
+
+	window->view_as_option_menu = gtk_option_menu_new ();
+	gtk_box_pack_end (GTK_BOX (view_as_menu_vbox), window->view_as_option_menu, TRUE, FALSE, 0);
+	gtk_widget_show (window->view_as_option_menu);
 }
 
 void
 nautilus_navigation_window_initialize_toolbars (NautilusNavigationWindow *window)
 {
-	nautilus_navigation_window_activate_throbber (window);
+	window->details->toolbars_model = nautilus_toolbars_model_new ();
+
+	window->details->toolbar = egg_editable_toolbar_new_with_model (
+		nautilus_window_get_ui_manager (NAUTILUS_WINDOW (window)),
+		window->details->toolbars_model);
+
+	nautilus_navigation_window_initialize_throbber       (window);
+	nautilus_navigation_window_initialize_navigation_bar (window);
+
+	nautilus_toolbars_model_load (NAUTILUS_TOOLBARS_MODEL (window->details->toolbars_model));
 }
 
 
Index: src/nautilus-window.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/nautilus-window.c,v
retrieving revision 1.457
diff -u -p -r1.457 nautilus-window.c
--- src/nautilus-window.c	18 Oct 2005 14:22:54 -0000	1.457
+++ src/nautilus-window.c	12 Nov 2005 17:57:20 -0000
@@ -52,10 +52,14 @@
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gdk/gdkx.h>
 #include <gdk/gdkkeysyms.h>
+#include <gtk/gtkaccelmap.h>
+#include <gtk/gtkbindings.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkmenubar.h>
 #include <gtk/gtkmenuitem.h>
 #include <gtk/gtkoptionmenu.h>
+#include <gtk/gtkstatusbar.h>
+#include <gtk/gtktable.h>
 #include <gtk/gtktogglebutton.h>
 #include <gtk/gtkvbox.h>
 #include <libgnome/gnome-i18n.h>
