[tepl] TabGroup: add the :active-view property



commit b4515b0cd09218af0de1688527e2e2e8acc17d74
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Fri Jul 21 05:13:07 2017 +0200

    TabGroup: add the :active-view property

 tepl/tepl-application-window.c |   20 ++++++++++++++++++++
 tepl/tepl-notebook.c           |    7 +++++++
 tepl/tepl-tab-group.c          |   16 ++++++++++++++++
 tepl/tepl-tab.c                |    6 ++++++
 4 files changed, 49 insertions(+), 0 deletions(-)
---
diff --git a/tepl/tepl-application-window.c b/tepl/tepl-application-window.c
index 2ebc6bf..aa36406 100644
--- a/tepl/tepl-application-window.c
+++ b/tepl/tepl-application-window.c
@@ -67,6 +67,7 @@ enum
        PROP_0,
        PROP_APPLICATION_WINDOW,
        PROP_ACTIVE_TAB,
+       PROP_ACTIVE_VIEW,
 };
 
 #define TEPL_APPLICATION_WINDOW_KEY "tepl-application-window-key"
@@ -99,6 +100,10 @@ tepl_application_window_get_property (GObject    *object,
                        g_value_set_object (value, tepl_tab_group_get_active_tab (TEPL_TAB_GROUP 
(tepl_window)));
                        break;
 
+               case PROP_ACTIVE_VIEW:
+                       g_value_set_object (value, tepl_tab_group_get_active_view (TEPL_TAB_GROUP 
(tepl_window)));
+                       break;
+
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                        break;
@@ -178,6 +183,7 @@ tepl_application_window_class_init (TeplApplicationWindowClass *klass)
                                                              G_PARAM_STATIC_STRINGS));
 
        g_object_class_override_property (object_class, PROP_ACTIVE_TAB, "active-tab");
+       g_object_class_override_property (object_class, PROP_ACTIVE_VIEW, "active-view");
 }
 
 static GList *
@@ -280,6 +286,14 @@ active_tab_notify_cb (TeplTabGroup          *tab_group,
        g_object_notify (G_OBJECT (tepl_window), "active-tab");
 }
 
+static void
+active_view_notify_cb (TeplTabGroup          *tab_group,
+                      GParamSpec            *pspec,
+                      TeplApplicationWindow *tepl_window)
+{
+       g_object_notify (G_OBJECT (tepl_window), "active-view");
+}
+
 /**
  * tepl_application_window_set_tab_group:
  * @tepl_window: a #TeplApplicationWindow.
@@ -315,6 +329,12 @@ tepl_application_window_set_tab_group (TeplApplicationWindow *tepl_window,
                                 G_CALLBACK (active_tab_notify_cb),
                                 tepl_window,
                                 0);
+
+       g_signal_connect_object (tab_group,
+                                "notify::active-view",
+                                G_CALLBACK (active_view_notify_cb),
+                                tepl_window,
+                                0);
 }
 
 /* ex:set ts=8 noet: */
diff --git a/tepl/tepl-notebook.c b/tepl/tepl-notebook.c
index 95973fe..d7ab54a 100644
--- a/tepl/tepl-notebook.c
+++ b/tepl/tepl-notebook.c
@@ -40,6 +40,7 @@ enum
 {
        PROP_0,
        PROP_ACTIVE_TAB,
+       PROP_ACTIVE_VIEW,
 };
 
 static void tepl_tab_group_interface_init (gpointer g_iface,
@@ -66,6 +67,10 @@ tepl_notebook_get_property (GObject    *object,
                        g_value_set_object (value, tepl_tab_group_get_active_tab (tab_group));
                        break;
 
+               case PROP_ACTIVE_VIEW:
+                       g_value_set_object (value, tepl_tab_group_get_active_view (tab_group));
+                       break;
+
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                        break;
@@ -103,6 +108,7 @@ tepl_notebook_switch_page (GtkNotebook *notebook,
         * other GtkNotebook signals?
         */
        g_object_notify (G_OBJECT (notebook), "active-tab");
+       g_object_notify (G_OBJECT (notebook), "active-view");
 }
 
 static void
@@ -117,6 +123,7 @@ tepl_notebook_class_init (TeplNotebookClass *klass)
        notebook_class->switch_page = tepl_notebook_switch_page;
 
        g_object_class_override_property (object_class, PROP_ACTIVE_TAB, "active-tab");
+       g_object_class_override_property (object_class, PROP_ACTIVE_VIEW, "active-view");
 }
 
 static GList *
diff --git a/tepl/tepl-tab-group.c b/tepl/tepl-tab-group.c
index 70bf7c9..aadf9ee 100644
--- a/tepl/tepl-tab-group.c
+++ b/tepl/tepl-tab-group.c
@@ -19,6 +19,7 @@
 
 #include "tepl-tab-group.h"
 #include "tepl-tab.h"
+#include "tepl-view.h"
 
 /**
  * SECTION:tab-group
@@ -67,6 +68,21 @@ tepl_tab_group_default_init (TeplTabGroupInterface *interface)
                                                                  TEPL_TYPE_TAB,
                                                                  G_PARAM_READABLE |
                                                                  G_PARAM_STATIC_STRINGS));
+
+       /**
+        * TeplTabGroup:active-view:
+        *
+        * The #TeplView of the active tab.
+        *
+        * Since: 3.0
+        */
+       g_object_interface_install_property (interface,
+                                            g_param_spec_object ("active-view",
+                                                                 "Active View",
+                                                                 "",
+                                                                 TEPL_TYPE_VIEW,
+                                                                 G_PARAM_READABLE |
+                                                                 G_PARAM_STATIC_STRINGS));
 }
 
 /**
diff --git a/tepl/tepl-tab.c b/tepl/tepl-tab.c
index 148c57f..e4d78fa 100644
--- a/tepl/tepl-tab.c
+++ b/tepl/tepl-tab.c
@@ -56,6 +56,7 @@ enum
        PROP_0,
        PROP_VIEW,
        PROP_ACTIVE_TAB,
+       PROP_ACTIVE_VIEW,
 };
 
 static void tepl_tab_group_interface_init (gpointer g_iface,
@@ -183,6 +184,10 @@ tepl_tab_get_property (GObject    *object,
                        g_value_set_object (value, tepl_tab_group_get_active_tab (TEPL_TAB_GROUP (tab)));
                        break;
 
+               case PROP_ACTIVE_VIEW:
+                       g_value_set_object (value, tepl_tab_group_get_active_view (TEPL_TAB_GROUP (tab)));
+                       break;
+
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                        break;
@@ -250,6 +255,7 @@ tepl_tab_class_init (TeplTabClass *klass)
                                                              G_PARAM_STATIC_STRINGS));
 
        g_object_class_override_property (object_class, PROP_ACTIVE_TAB, "active-tab");
+       g_object_class_override_property (object_class, PROP_ACTIVE_VIEW, "active-view");
 }
 
 static GList *


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