[glade] Do not show projects tabs when there is only one project open.
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] Do not show projects tabs when there is only one project open.
- Date: Tue, 12 Mar 2013 22:30:32 +0000 (UTC)
commit 93b26f4bf93686db54dc22f607be1a346de2b9a1
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date: Fri Mar 8 15:59:01 2013 -0300
Do not show projects tabs when there is only one project open.
src/glade-window.c | 44 +++++++++++++++++++++++++++++++++++---------
src/glade.glade | 23 ++++++++++++++++-------
2 files changed, 51 insertions(+), 16 deletions(-)
---
diff --git a/src/glade-window.c b/src/glade-window.c
index 1f9cdc7..4f94280 100644
--- a/src/glade-window.c
+++ b/src/glade-window.c
@@ -100,7 +100,7 @@ struct _GladeWindowPrivate
GtkWidget *main_vbox;
- GtkWidget *notebook;
+ GtkWidget *notebook, *notebook_frame;
GladeDesignView *active_view;
gint num_tabs;
@@ -1424,6 +1424,27 @@ confirm_close_project (GladeWindow *window, GladeProject *project)
}
static void
+glade_window_notebook_set_show_tabs (GladeWindow *window, gboolean show)
+{
+ GladeWindowPrivate *priv = window->priv;
+ GList *projects = glade_app_get_projects ();
+
+ if (projects == NULL || g_list_next (projects) == NULL)
+ show = FALSE;
+
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), show);
+ gtk_frame_set_shadow_type (GTK_FRAME (priv->notebook_frame),
+ show ? GTK_SHADOW_NONE : GTK_SHADOW_IN);
+}
+
+static void
+glade_window_notebook_tabs_update (GladeWindow *window)
+{
+ GtkToggleAction *tabs = GTK_TOGGLE_ACTION (window->priv->action.project_tabs_visible);
+ glade_window_notebook_set_show_tabs (window, gtk_toggle_action_get_active (tabs));
+}
+
+static void
do_close (GladeWindow *window, GladeProject *project)
{
GladeDesignView *view;
@@ -1445,6 +1466,8 @@ do_close (GladeWindow *window, GladeProject *project)
gtk_notebook_remove_page (GTK_NOTEBOOK (window->priv->notebook), n);
g_object_unref (view);
+
+ glade_window_notebook_tabs_update (window);
}
void
@@ -2004,9 +2027,9 @@ void
on_project_tabs_visible_action_toggled (GtkAction *action, GladeWindow *window)
{
if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), TRUE);
+ glade_window_notebook_set_show_tabs (window, TRUE);
else
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), FALSE);
+ glade_window_notebook_set_show_tabs (window, FALSE);
}
void
@@ -2355,6 +2378,7 @@ create_notebook_tab (GladeWindow *window,
static void
add_project (GladeWindow *window, GladeProject *project, gboolean for_file)
{
+ GladeWindowPrivate *priv = window->priv;
GtkWidget *view, *label;
g_return_if_fail (GLADE_IS_PROJECT (project));
@@ -2372,13 +2396,14 @@ add_project (GladeWindow *window, GladeProject *project, gboolean for_file)
/* Custom notebook tab label (will be refreshed later) */
label = create_notebook_tab (window, project, for_file);
- gtk_notebook_append_page (GTK_NOTEBOOK (window->priv->notebook),
- GTK_WIDGET (view), label);
- gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook), -1);
+ gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), GTK_WIDGET (view), label);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), -1);
refresh_notebook_tab_for_project (window, project);
- gtk_widget_show (GTK_WIDGET (window->priv->editor));
+ glade_window_notebook_tabs_update (window);
+
+ gtk_widget_show (GTK_WIDGET (priv->editor));
}
void
@@ -2874,13 +2899,13 @@ glade_window_config_load (GladeWindow *window)
else
gtk_widget_hide (priv->statusbar);
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), show_tabs);
+ glade_window_notebook_set_show_tabs (window, show_tabs);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->action.toolbar_visible), show_toolbar);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->action.project_tabs_visible), show_tabs);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->action.statusbar_visible), show_tabs);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->action.statusbar_visible), show_status);
/* Paned positions */
load_paned_position (config, window->priv->left_pane, "left_pane", 200);
@@ -3047,6 +3072,7 @@ glade_window_constructed (GObject *object)
priv->right_pane = GET_OBJECT (builder, GTK_WIDGET, "right_paned");
priv->notebook = GET_OBJECT (builder, GTK_WIDGET, "notebook");
+ priv->notebook_frame = GET_OBJECT (builder, GTK_WIDGET, "notebook_frame");
priv->palettes_notebook = GET_OBJECT (builder, GTK_WIDGET, "palettes_notebook");
priv->inspectors_notebook = GET_OBJECT (builder, GTK_WIDGET, "inspectors_notebook");
priv->editor = GET_OBJECT (builder, GLADE_EDITOR, "editor");
diff --git a/src/glade.glade b/src/glade.glade
index 0f94e9b..a4b3606 100644
--- a/src/glade.glade
+++ b/src/glade.glade
@@ -1024,14 +1024,23 @@ Andreas Nilsson <andreas andreasn se></property>
</packing>
</child>
<child>
- <object class="GtkNotebook" id="notebook">
+ <object class="GtkFrame" id="notebook_frame">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_border">False</property>
- <property name="scrollable">True</property>
- <signal name="page-added" handler="on_notebook_tab_added" swapped="no"/>
- <signal name="switch-page" handler="on_notebook_switch_page" swapped="no"/>
- <signal name="page-removed" handler="on_notebook_tab_removed" swapped="no"/>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <property name="scrollable">True</property>
+ <signal name="page-added" handler="on_notebook_tab_added" swapped="no"/>
+ <signal name="switch-page" handler="on_notebook_switch_page" swapped="no"/>
+ <signal name="page-removed" handler="on_notebook_tab_removed" swapped="no"/>
+ </object>
+ </child>
</object>
<packing>
<property name="resize">True</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]