[gedit/multiviews: 15/15] Add tab manager class
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/multiviews: 15/15] Add tab manager class
- Date: Sun, 16 Oct 2011 18:32:10 +0000 (UTC)
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]