[gedit/multiviews: 15/15] Add tab manager class



commit 216d421badf982206c4c1ef110785e657e7774b2
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Sat Jan 30 19:46:39 2010 +0100

    Add tab manager class

 gedit/Makefile.am            |    2 +
 gedit/gedit-commands-view.c  |   26 ++++++
 gedit/gedit-commands.h       |    4 +
 gedit/gedit-page.c           |    1 +
 gedit/gedit-tab-manager.c    |  195 ++++++++++++++++++++++++++++++++++++++++++
 gedit/gedit-tab-manager.h    |   76 ++++++++++++++++
 gedit/gedit-ui.h             |    4 +
 gedit/gedit-ui.xml           |    3 +
 gedit/gedit-window-private.h |    3 +-
 gedit/gedit-window.c         |  125 ++++++++++++++++-----------
 10 files changed, 385 insertions(+), 54 deletions(-)
---
diff --git a/gedit/Makefile.am b/gedit/Makefile.am
index 6534260..879ec3f 100644
--- a/gedit/Makefile.am
+++ b/gedit/Makefile.am
@@ -88,6 +88,7 @@ NOINST_H_FILES =			\
 	gedit-smart-charset-converter.h	\
 	gedit-style-scheme-manager.h	\
 	gedit-tab-label.h		\
+	gedit-tab-manager.h		\
 	gedittextregion.h		\
 	gedit-ui.h			\
 	gedit-web-view.h		\
@@ -196,6 +197,7 @@ libgedit_la_SOURCES = 			\
 	gedit-tab-label.c		\
 	gedit-utils.c 			\
 	gedit-view-interface.c 		\
+	gedit-tab-manager.c		\
 	gedit-text-view.c 		\
 	gedit-text-buffer.c		\
 	gedit-view-container.c 		\
diff --git a/gedit/gedit-commands-view.c b/gedit/gedit-commands-view.c
index 8a44097..cc74522 100644
--- a/gedit/gedit-commands-view.c
+++ b/gedit/gedit-commands-view.c
@@ -40,6 +40,7 @@
 #include "gedit-debug.h"
 #include "gedit-window.h"
 #include "gedit-window-private.h"
+#include "gedit-tab-manager.h"
 
 
 void
@@ -154,6 +155,31 @@ _gedit_cmd_view_leave_fullscreen_mode (GtkAction *action,
 }
 
 void
+_gedit_cmd_view_split_notebook (GtkAction *action,
+				GeditWindow *window)
+{
+	GeditNotebook *notebook;
+	GeditPage *page;
+
+	notebook = gedit_tab_manager_split (GEDIT_TAB_MANAGER (window->priv->tab_manager));
+
+	page = GEDIT_PAGE (_gedit_page_new (NULL));
+	gtk_widget_show (GTK_WIDGET (page));
+
+	gedit_notebook_add_page (notebook,
+				 page,
+				 -1,
+				 FALSE);
+}
+
+void
+_gedit_cmd_view_unsplit_notebook (GtkAction *action,
+				  GeditWindow *window)
+{
+	
+}
+
+void
 _gedit_cmd_view_split_horizontally (GtkAction *action,
 				    GeditWindow *window)
 {
diff --git a/gedit/gedit-commands.h b/gedit/gedit-commands.h
index 6995cd1..2e974f2 100644
--- a/gedit/gedit-commands.h
+++ b/gedit/gedit-commands.h
@@ -120,6 +120,10 @@ void		_gedit_cmd_view_toggle_fullscreen_mode	(GtkAction   *action,
 							 GeditWindow *window);
 void		_gedit_cmd_view_leave_fullscreen_mode	(GtkAction   *action,
 							 GeditWindow *window);
+void		_gedit_cmd_view_split_notebook		(GtkAction *action,
+							 GeditWindow *window);
+void		_gedit_cmd_view_unsplit_notebook	(GtkAction *action,
+							 GeditWindow *window);
 void		_gedit_cmd_view_split_horizontally	(GtkAction *action,
 							 GeditWindow *window);
 void		_gedit_cmd_view_split_vertically	(GtkAction *action,
diff --git a/gedit/gedit-page.c b/gedit/gedit-page.c
index e44bc41..0745068 100644
--- a/gedit/gedit-page.c
+++ b/gedit/gedit-page.c
@@ -691,6 +691,7 @@ static void
 gedit_page_init (GeditPage *page)
 {
 	page->priv = GEDIT_PAGE_GET_PRIVATE (page);
+	page->priv->containers = NULL;
 }
 
 /**
diff --git a/gedit/gedit-tab-manager.c b/gedit/gedit-tab-manager.c
new file mode 100644
index 0000000..b2d29d9
--- /dev/null
+++ b/gedit/gedit-tab-manager.c
@@ -0,0 +1,195 @@
+/*
+ * gedit-tab-manager.c
+ * This file is part of gedit
+ *
+ * Copyright (C) 2010 - Ignacio Casal Quinteiro
+ *
+ * gedit is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * gedit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gedit; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+
+#include "gedit-tab-manager.h"
+
+
+#define GEDIT_TAB_MANAGER_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GEDIT_TYPE_TAB_MANAGER, GeditTabManagerPrivate))
+
+struct _GeditTabManagerPrivate
+{
+	GSList        *notebooks;
+	GeditNotebook *active_notebook;
+};
+
+/* Signals */
+enum
+{
+	NOTEBOOK_ADDED,
+	NOTEBOOK_REMOVED,
+	LAST_SIGNAL
+};
+
+static guint signals [LAST_SIGNAL] = { 0 };
+
+G_DEFINE_TYPE (GeditTabManager, gedit_tab_manager, GTK_TYPE_VBOX)
+
+static void
+gedit_tab_manager_finalize (GObject *object)
+{
+	G_OBJECT_CLASS (gedit_tab_manager_parent_class)->finalize (object);
+}
+
+static void
+gedit_tab_manager_class_init (GeditTabManagerClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	
+	object_class->finalize = gedit_tab_manager_finalize;
+
+	signals[NOTEBOOK_ADDED] =
+		g_signal_new ("notebook-added",
+			      G_TYPE_FROM_CLASS (object_class),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (GeditTabManagerClass, notebook_added),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE,
+			      1,
+			      GEDIT_TYPE_NOTEBOOK);
+
+	signals[NOTEBOOK_REMOVED] =
+		g_signal_new ("notebook-removed",
+			      G_TYPE_FROM_CLASS (object_class),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (GeditTabManagerClass, notebook_removed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE,
+			      1,
+			      GEDIT_TYPE_NOTEBOOK);
+
+	g_type_class_add_private (object_class, sizeof (GeditTabManagerPrivate));
+}
+
+static void
+add_notebook (GeditTabManager *manager,
+	      GtkWidget       *notebook,
+	      gboolean         main_container)
+{
+	if (main_container)
+	{
+		gtk_box_pack_start (GTK_BOX (manager), notebook,
+		                    TRUE, TRUE, 0);
+	}
+	else
+	{
+		GtkWidget *active_notebook;
+		GtkWidget *paned;
+		GtkWidget *parent;
+
+		active_notebook = GTK_WIDGET (manager->priv->active_notebook);
+
+		paned = gtk_hpaned_new ();
+		gtk_widget_show (paned);
+	
+		/* First we remove the active container from its parent to make
+		   this we add a ref to it*/
+		g_object_ref (active_notebook);
+		parent = gtk_widget_get_parent (active_notebook);
+	
+		gtk_container_remove (GTK_CONTAINER (parent), active_notebook);
+		gtk_container_add (GTK_CONTAINER (parent), paned);
+	
+		gtk_paned_pack1 (GTK_PANED (paned), active_notebook, FALSE, TRUE);
+		g_object_unref (active_notebook);
+	
+		gtk_paned_pack2 (GTK_PANED (paned), notebook, FALSE, TRUE);
+	}
+
+	manager->priv->notebooks = g_slist_append (manager->priv->notebooks,
+						   notebook);
+
+	g_signal_emit (G_OBJECT (manager),
+		       signals[NOTEBOOK_ADDED],
+		       0,
+		       notebook);
+}
+
+static void
+gedit_tab_manager_init (GeditTabManager *manager)
+{
+	GeditNotebook *notebook;
+
+	manager->priv = GEDIT_TAB_MANAGER_GET_PRIVATE (manager);
+	manager->priv->notebooks = NULL;
+
+	notebook = GEDIT_NOTEBOOK (gedit_notebook_new ());
+	gtk_widget_show (GTK_WIDGET (notebook));
+
+	add_notebook (manager, GTK_WIDGET (notebook), TRUE);
+	manager->priv->active_notebook = notebook;
+}
+
+GtkWidget *
+gedit_tab_manager_new ()
+{
+	return GTK_WIDGET (g_object_new (GEDIT_TYPE_TAB_MANAGER, NULL));
+}
+
+GeditNotebook *
+gedit_tab_manager_get_active_notebook (GeditTabManager *manager)
+{
+	g_return_val_if_fail (GEDIT_IS_TAB_MANAGER (manager), NULL);
+
+	return manager->priv->active_notebook;
+}
+
+GeditNotebook *
+gedit_tab_manager_split (GeditTabManager *manager)
+{
+	GtkWidget *notebook;
+
+	g_return_val_if_fail (GEDIT_IS_TAB_MANAGER (manager), NULL);
+
+	notebook = gedit_notebook_new ();
+	gtk_widget_show (notebook);
+
+	add_notebook (manager, notebook, FALSE);
+
+	return GEDIT_NOTEBOOK (notebook);
+}
+
+void
+gedit_tab_manager_remove_page (GeditTabManager *manager,
+			       GeditPage       *page)
+{
+	GeditNotebook *notebook;
+
+	
+}
+
+void
+gedit_tab_manager_remove_all_pages (GeditTabManager *manager)
+{
+	
+}
+
+GList *
+gedit_tab_manager_get_pages (GeditTabManager *manager)
+{
+	g_return_val_if_fail (GEDIT_IS_TAB_MANAGER (manager), NULL);
+
+	/* FIXME: Iterate all notebooks */
+	return gtk_container_get_children (GTK_CONTAINER (manager->priv->active_notebook));
+}
diff --git a/gedit/gedit-tab-manager.h b/gedit/gedit-tab-manager.h
new file mode 100644
index 0000000..c1be920
--- /dev/null
+++ b/gedit/gedit-tab-manager.h
@@ -0,0 +1,76 @@
+/*
+ * gedit-tab-manager.h
+ * This file is part of gedit
+ *
+ * Copyright (C) 2010 - Ignacio Casal Quinteiro
+ *
+ * gedit is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * gedit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gedit; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifndef __GEDIT_TAB_MANAGER_H__
+#define __GEDIT_TAB_MANAGER_H__
+
+#include <glib-object.h>
+
+#include "gedit-notebook.h"
+
+G_BEGIN_DECLS
+
+#define GEDIT_TYPE_TAB_MANAGER			(gedit_tab_manager_get_type ())
+#define GEDIT_TAB_MANAGER(obj)			(G_TYPE_CHECK_INSTANCE_CAST ((obj), GEDIT_TYPE_TAB_MANAGER, GeditTabManager))
+#define GEDIT_TAB_MANAGER_CONST(obj)		(G_TYPE_CHECK_INSTANCE_CAST ((obj), GEDIT_TYPE_TAB_MANAGER, GeditTabManager const))
+#define GEDIT_TAB_MANAGER_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST ((klass), GEDIT_TYPE_TAB_MANAGER, GeditTabManagerClass))
+#define GEDIT_IS_TAB_MANAGER(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEDIT_TYPE_TAB_MANAGER))
+#define GEDIT_IS_TAB_MANAGER_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), GEDIT_TYPE_TAB_MANAGER))
+#define GEDIT_TAB_MANAGER_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj), GEDIT_TYPE_TAB_MANAGER, GeditTabManagerClass))
+
+typedef struct _GeditTabManager		GeditTabManager;
+typedef struct _GeditTabManagerClass	GeditTabManagerClass;
+typedef struct _GeditTabManagerPrivate	GeditTabManagerPrivate;
+
+struct _GeditTabManager
+{
+	GtkVBox parent;
+	
+	GeditTabManagerPrivate *priv;
+};
+
+struct _GeditTabManagerClass
+{
+	GtkVBoxClass parent_class;
+
+	void		(*notebook_added)	(GeditTabManager *manager,
+						 GeditNotebook   *notebook);
+	void		(*notebook_removed)	(GeditTabManager *manager,
+						 GeditNotebook   *notebook);
+};
+
+GType			 gedit_tab_manager_get_type			(void) G_GNUC_CONST;
+
+GtkWidget		*gedit_tab_manager_new				(void);
+
+GeditNotebook		*gedit_tab_manager_get_active_notebook		(GeditTabManager *manager);
+
+GeditNotebook		*gedit_tab_manager_split			(GeditTabManager *manager);
+
+void			 gedit_tab_manager_remove_page			(GeditTabManager *manager,
+									 GeditPage       *page);
+
+GList			*gedit_tab_manager_get_pages			(GeditTabManager *manager);
+
+G_END_DECLS
+
+#endif /* __GEDIT_TAB_MANAGER_H__ */
diff --git a/gedit/gedit-ui.h b/gedit/gedit-ui.h
index 7a5285b..ce9350e 100644
--- a/gedit/gedit-ui.h
+++ b/gedit/gedit-ui.h
@@ -111,6 +111,10 @@ static const GtkActionEntry gedit_menu_entries[] =
 	/* View menu */
 	{ "ViewHighlightMode", NULL, N_("_Highlight Mode") },
 	{ "ViewSplit", NULL, N_("S_plit") },
+	{ "ViewSplitNotebook", NULL, N_("Split _Notebook"), NULL,
+	  N_("Split Notebook"), G_CALLBACK (_gedit_cmd_view_split_notebook) },
+	{ "ViewUnsplitNotebook", NULL, N_("Unsplit _Notebook"), NULL,
+	  N_("Unsplit Notebook"), G_CALLBACK (_gedit_cmd_view_unsplit_notebook) },
 	{ "ViewSplitHorizontal", NULL, N_("Split _Horizontally"), NULL,
 	  N_("Split Horizontally"), G_CALLBACK (_gedit_cmd_view_split_horizontally) },
 	{ "ViewSplitVertical", NULL, N_("Split _Vertically"), NULL,
diff --git a/gedit/gedit-ui.xml b/gedit/gedit-ui.xml
index e235084..3f80e2b 100644
--- a/gedit/gedit-ui.xml
+++ b/gedit/gedit-ui.xml
@@ -84,6 +84,9 @@
       <menuitem name="ViewFullscreenMenu" action="ViewFullscreen"/>
       <separator/>
       <menu name="ViewSplitMenu" action="ViewSplit">
+        <menuitem name="ViewSplitNotebookMenu" action="ViewSplitNotebook"/>
+        <menuitem name="ViewUnsplitNotebookMenu" action="ViewUnsplitNotebook"/>
+        <separator/>
         <menuitem name="ViewSplitVerticalMenu" action="ViewSplitVertical"/>
         <menuitem name="ViewSplitHorizontalMenu" action="ViewSplitHorizontal"/>
         <separator/>
diff --git a/gedit/gedit-window-private.h b/gedit/gedit-window-private.h
index da21671..c7bbaa6 100644
--- a/gedit/gedit-window-private.h
+++ b/gedit/gedit-window-private.h
@@ -45,7 +45,8 @@ G_BEGIN_DECLS
 
 struct _GeditWindowPrivate
 {
-	GtkWidget      *notebook;
+	GtkWidget      *tab_manager;
+	GtkWidget      *active_notebook;
 
 	GtkWidget      *side_panel;
 	GtkWidget      *bottom_panel;
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 647e49e..e2e8a9a 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -56,6 +56,7 @@
 #include "gedit-enum-types.h"
 #include "gedit-dirs.h"
 #include "gedit-status-combo-box.h"
+#include "gedit-tab-manager.h"
 #include "gedit-text-buffer.h"
 #include "gedit-text-view.h"
 
@@ -1700,7 +1701,8 @@ documents_list_menu_activate (GtkToggleAction *action,
 		return;
 
 	n = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (action));
-	gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook), n);
+	/* FIXME */
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->active_notebook), n);
 }
 
 static gchar *
@@ -1754,7 +1756,8 @@ update_documents_list_menu (GeditWindow *window)
 	}
 	g_list_free (actions);
 
-	n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (p->notebook));
+	/* FIXME */
+	n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (p->active_notebook));
 
 	id = (n > 0) ? gtk_ui_manager_new_merge_id (p->manager) : 0;
 
@@ -1769,7 +1772,7 @@ update_documents_list_menu (GeditWindow *window)
 		gchar *tip;
 		gchar *accel;
 
-		page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (p->notebook), i);
+		page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (p->active_notebook), i);
 		container = gedit_page_get_active_view_container (GEDIT_PAGE (page));
 
 		/* NOTE: the action is associated to the position of the tab in
@@ -2635,10 +2638,11 @@ set_sensitivity_according_to_window_state (GeditWindow *window)
 	gtk_action_group_set_sensitive (window->priv->recents_action_group,
 					!(window->priv->state & GEDIT_WINDOW_STATE_SAVING_SESSION));
 
-	gedit_notebook_set_close_buttons_sensitive (GEDIT_NOTEBOOK (window->priv->notebook),
+	/* FIXME */
+	gedit_notebook_set_close_buttons_sensitive (GEDIT_NOTEBOOK (window->priv->active_notebook),
 						    !(window->priv->state & GEDIT_WINDOW_STATE_SAVING_SESSION));
 						    
-	gedit_notebook_set_page_drag_and_drop_enabled (GEDIT_NOTEBOOK (window->priv->notebook),
+	gedit_notebook_set_page_drag_and_drop_enabled (GEDIT_NOTEBOOK (window->priv->active_notebook),
 						       !(window->priv->state & GEDIT_WINDOW_STATE_SAVING_SESSION));
 
 	if ((window->priv->state & GEDIT_WINDOW_STATE_SAVING_SESSION) != 0)
@@ -2698,7 +2702,8 @@ _gedit_window_set_lockdown (GeditWindow       *window,
 
 	/* start/stop autosave in each existing tab */
 	autosave = gedit_prefs_manager_get_auto_save ();
-	gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+	/* FIXME */
+	gtk_container_foreach (GTK_CONTAINER (window->priv->active_notebook),
 			       update_tab_autosave,
 			       &autosave);
 
@@ -2725,8 +2730,9 @@ static void
 analyze_page_state (GeditViewContainer    *tab, 
 		   GeditWindow *window)
 {
-	GeditViewContainerState ts;
 #if 0
+	GeditViewContainerState ts;
+
 	ts = gedit_view_container_get_state (tab);
 	
 	switch (ts)
@@ -2773,7 +2779,8 @@ update_window_state (GeditWindow *window)
 	
 	window->priv->num_pages_with_error = 0;
 
-	gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+	/* FIXME */
+	gtk_container_foreach (GTK_CONTAINER (window->priv->active_notebook),
 	       		       (GtkCallback)analyze_page_state,
 	       		       window);
 		
@@ -2845,7 +2852,8 @@ sync_name (GeditViewContainer *container,
 	}
 
 	/* sync the item in the documents list menu */
-	n = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->notebook),
+	/* FIXME */
+	n = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->active_notebook),
 				   GTK_WIDGET (page));
 	action_name = g_strdup_printf ("Tab_%d", n);
 	action = gtk_action_group_get_action (window->priv->documents_list_action_group,
@@ -4088,6 +4096,7 @@ gedit_window_init (GeditWindow *window)
 {
 	GtkWidget *main_box;
 	GtkTargetList *tl;
+	GeditNotebook *notebook;
 
 	gedit_debug (DEBUG_WINDOW);
 
@@ -4131,13 +4140,13 @@ gedit_window_init (GeditWindow *window)
   			 TRUE, 
   			 FALSE);
   	
-	gedit_debug_message (DEBUG_WINDOW, "Create gedit notebook");
-	window->priv->notebook = gedit_notebook_new ();
-  	gtk_paned_pack1 (GTK_PANED (window->priv->vpaned),
-  			 window->priv->notebook,
-  			 TRUE, 
-  			 TRUE);
-  	gtk_widget_show (window->priv->notebook);
+	gedit_debug_message (DEBUG_WINDOW, "Create tab manager");
+	window->priv->tab_manager = gedit_tab_manager_new ();
+	gtk_paned_pack1 (GTK_PANED (window->priv->vpaned),
+			 window->priv->tab_manager,
+			 TRUE, 
+			 TRUE);
+	gtk_widget_show (window->priv->tab_manager);
 
 	/* side and bottom panels */
   	create_side_panel (window);
@@ -4182,36 +4191,39 @@ gedit_window_init (GeditWindow *window)
 	
 	gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
 
-	/* Connect signals */
-	g_signal_connect (window->priv->notebook,
+	/* Connect notebook signals */
+	notebook = gedit_tab_manager_get_active_notebook (GEDIT_TAB_MANAGER (window->priv->tab_manager));
+	window->priv->active_notebook = GTK_WIDGET (notebook);
+
+	g_signal_connect (notebook,
 			  "switch_page",
 			  G_CALLBACK (notebook_switch_page),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "gedit_page_added",
 			  G_CALLBACK (notebook_page_added),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "gedit_page_removed",
 			  G_CALLBACK (notebook_page_removed),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "pages_reordered",
 			  G_CALLBACK (notebook_pages_reordered),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "page_detached",
 			  G_CALLBACK (notebook_page_detached),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "page_close_request",
 			  G_CALLBACK (notebook_page_close_request),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "button-press-event",
 			  G_CALLBACK (notebook_button_press_event),
 			  window);
-	g_signal_connect (window->priv->notebook,
+	g_signal_connect (notebook,
 			  "popup-menu",
 			  G_CALLBACK (notebook_popup_menu),
 			  window);
@@ -4325,7 +4337,7 @@ _gedit_window_get_notebook (GeditWindow *window)
 {
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
 
-	return window->priv->notebook;
+	return window->priv->active_notebook;
 }
 
 /**
@@ -4349,7 +4361,7 @@ gedit_window_create_page (GeditWindow *window,
 	page = GEDIT_PAGE (_gedit_page_new (NULL));
 	gtk_widget_show (GTK_WIDGET (page));
 
-	gedit_notebook_add_page (GEDIT_NOTEBOOK (window->priv->notebook),
+	gedit_notebook_add_page (GEDIT_NOTEBOOK (window->priv->active_notebook),
 				 page,
 				 -1,
 				 jump_to);
@@ -4402,7 +4414,7 @@ gedit_window_create_page_from_uri (GeditWindow         *window,
 	page = _gedit_page_new (GEDIT_VIEW_CONTAINER (container));
 	gtk_widget_show (page);
 
-	gedit_notebook_add_page (GEDIT_NOTEBOOK (window->priv->notebook),
+	gedit_notebook_add_page (GEDIT_NOTEBOOK (window->priv->active_notebook),
 				 GEDIT_PAGE (page),
 				 -1,
 				 jump_to);
@@ -4459,8 +4471,9 @@ gedit_window_get_documents (GeditWindow *window)
 	GList *res = NULL;
 
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
-	
-	gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+
+	/* FIXME: Iterate all notebooks */
+	gtk_container_foreach (GTK_CONTAINER (window->priv->active_notebook),
 			       (GtkCallback)add_document,
 			       &res);
 			       
@@ -4495,8 +4508,9 @@ gedit_window_get_views (GeditWindow *window)
 	GList *res = NULL;
 
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
-	
-	gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+
+	/* FIXME: Iterate all notebooks */
+	gtk_container_foreach (GTK_CONTAINER (window->priv->active_notebook),
 			       (GtkCallback)add_view,
 			       &res);
 			       
@@ -4531,7 +4545,7 @@ gedit_window_close_page (GeditWindow *window,
 				  (gedit_view_container_get_state (c) != GEDIT_VIEW_CONTAINER_STATE_SHOWING_PRINT_PREVIEW));
 	}
 	
-	gedit_notebook_remove_page (GEDIT_NOTEBOOK (window->priv->notebook),
+	gedit_notebook_remove_page (GEDIT_NOTEBOOK (window->priv->active_notebook),
 				    page);
 }
 
@@ -4550,7 +4564,8 @@ gedit_window_close_all_pages (GeditWindow *window)
 
 	window->priv->removing_pages = TRUE;
 
-	gedit_notebook_remove_all_pages (GEDIT_NOTEBOOK (window->priv->notebook));
+	/* FIXME: Add tab manager remove all pages */
+	gedit_notebook_remove_all_pages (GEDIT_NOTEBOOK (window->priv->active_notebook));
 
 	window->priv->removing_pages = FALSE;
 }
@@ -4580,8 +4595,8 @@ gedit_window_close_pages (GeditWindow *window,
 		if (pages->next == NULL)
 			window->priv->removing_pages = FALSE;
 
-		gedit_notebook_remove_page (GEDIT_NOTEBOOK (window->priv->notebook),
-					    GEDIT_PAGE (pages->data));
+		gedit_tab_manager_remove_page (GEDIT_TAB_MANAGER (window->priv->tab_manager),
+					       GEDIT_PAGE (pages->data));
 
 		pages = g_list_next (pages);
 	}
@@ -4598,13 +4613,13 @@ _gedit_window_move_page_to_new_window (GeditWindow *window,
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
 	g_return_val_if_fail (GEDIT_IS_PAGE (page), NULL);
 	g_return_val_if_fail (gtk_notebook_get_n_pages (
-			      GTK_NOTEBOOK (window->priv->notebook)) > 1, 
+			      GTK_NOTEBOOK (window->priv->active_notebook)) > 1, 
 			      NULL);
 
 	new_window = clone_window (window);
-
-	gedit_notebook_move_page (GEDIT_NOTEBOOK (window->priv->notebook),
-				  GEDIT_NOTEBOOK (new_window->priv->notebook),
+	/* FIXME */
+	gedit_notebook_move_page (GEDIT_NOTEBOOK (window->priv->active_notebook),
+				  GEDIT_NOTEBOOK (new_window->priv->active_notebook),
 				  page,
 				  -1);
 
@@ -4628,12 +4643,13 @@ gedit_window_set_active_page (GeditWindow *window,
 	
 	g_return_if_fail (GEDIT_IS_WINDOW (window));
 	g_return_if_fail (GEDIT_IS_PAGE (page));
-	
-	page_num = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->notebook),
+
+	/* FIXME */
+	page_num = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->active_notebook),
 					  GTK_WIDGET (page));
 	g_return_if_fail (page_num != -1);
 	
-	gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook),
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->active_notebook),
 				       page_num);
 }
 
@@ -4784,8 +4800,8 @@ gedit_window_get_unsaved_documents (GeditWindow *window)
 	GList *l;
 
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
-	
-	pages = gtk_container_get_children (GTK_CONTAINER (window->priv->notebook));
+
+	pages = gedit_tab_manager_get_pages (GEDIT_TAB_MANAGER (window->priv->tab_manager));
 	
 	l = pages;
 	while (l != NULL)
@@ -4851,8 +4867,9 @@ _gedit_window_fullscreen (GeditWindow *window)
 
 	/* Go to fullscreen mode and hide bars */
 	gtk_window_fullscreen (&window->window);
-	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), FALSE);
-	g_signal_connect (window->priv->notebook, "notify::show-tabs",
+	/* FIXME */
+	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->active_notebook), FALSE);
+	g_signal_connect (window->priv->active_notebook, "notify::show-tabs",
 			  G_CALLBACK (hide_notebook_tabs_on_fullscreen), window);
 	
 	gtk_widget_hide (window->priv->menubar);
@@ -4884,10 +4901,11 @@ _gedit_window_unfullscreen (GeditWindow *window)
 
 	/* Unfullscreen and show bars */
 	gtk_window_unfullscreen (&window->window);
-	g_signal_handlers_disconnect_by_func (window->priv->notebook,
+	/* FIXME */
+	g_signal_handlers_disconnect_by_func (window->priv->active_notebook,
 					      hide_notebook_tabs_on_fullscreen,
 					      window);
-	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), TRUE);
+	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->active_notebook), TRUE);
 	gtk_widget_show (window->priv->menubar);
 	
 	action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
@@ -4932,16 +4950,17 @@ GeditViewContainer *
 gedit_window_get_view_container_from_location (GeditWindow *window,
 					       GFile       *location)
 {
-	GList *tabs;
+	GList *pages;
 	GList *l;
 	GeditViewContainer *ret = NULL;
 
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
 	g_return_val_if_fail (G_IS_FILE (location), NULL);
 
-	tabs = gtk_container_get_children (GTK_CONTAINER (window->priv->notebook));
+	/* FIXME: This is totally wrong */
+	pages = gedit_tab_manager_get_pages (GEDIT_TAB_MANAGER (window->priv->tab_manager));
 	
-	for (l = tabs; l != NULL; l = g_list_next (l))
+	for (l = pages; l != NULL; l = g_list_next (l))
 	{
 		GeditDocument *d;
 		GeditViewContainer *t;
@@ -4966,7 +4985,7 @@ gedit_window_get_view_container_from_location (GeditWindow *window,
 		}
 	}
 	
-	g_list_free (tabs);
+	g_list_free (pages);
 	
 	return ret;
 }



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