[gnome-control-center] network: Move GtkBuilder code from CEPage to its subclasses



commit d46579144e4c33fe5438eaa4a95fb1e6762fcd02
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed Nov 6 15:05:29 2019 +1300

    network: Move GtkBuilder code from CEPage to its subclasses

 .../connection-editor/ce-page-8021x-security.c     | 29 +++++----
 panels/network/connection-editor/ce-page-details.c | 74 ++++++++++++++--------
 .../network/connection-editor/ce-page-ethernet.c   | 38 ++++++++---
 panels/network/connection-editor/ce-page-ip4.c     | 58 +++++++++++------
 panels/network/connection-editor/ce-page-ip6.c     | 60 ++++++++++++------
 .../network/connection-editor/ce-page-security.c   | 25 +++++---
 panels/network/connection-editor/ce-page-vpn.c     | 27 +++++---
 panels/network/connection-editor/ce-page-wifi.c    | 38 ++++++++---
 panels/network/connection-editor/ce-page.c         | 24 -------
 panels/network/connection-editor/ce-page.h         |  5 --
 10 files changed, 236 insertions(+), 142 deletions(-)
---
diff --git a/panels/network/connection-editor/ce-page-8021x-security.c 
b/panels/network/connection-editor/ce-page-8021x-security.c
index 25da3238a..327b5869f 100644
--- a/panels/network/connection-editor/ce-page-8021x-security.c
+++ b/panels/network/connection-editor/ce-page-8021x-security.c
@@ -37,6 +37,7 @@
 struct _CEPage8021xSecurity {
        CEPage parent;
 
+        GtkBuilder  *builder;
         GtkBox      *box;
         GtkSwitch   *enable_8021x_switch;
         GtkNotebook *notebook;
@@ -101,15 +102,22 @@ ce_page_8021x_security_new (NMConnection     *connection,
                             NMClient         *client)
 {
        CEPage8021xSecurity *self;
+        g_autoptr(GError) error = NULL;
 
-       self = CE_PAGE_8021X_SECURITY (ce_page_new (ce_page_8021x_security_get_type (),
-                                                   connection,
-                                                   
"/org/gnome/control-center/network/8021x-security-page.ui"));
+        self = CE_PAGE_8021X_SECURITY (g_object_new (ce_page_8021x_security_get_type (),
+                                                     "connection", connection,
+                                                     NULL));
 
-        self->box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "box"));
-        self->enable_8021x_switch = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (self)->builder, 
"enable_8021x_switch"));
-        self->notebook = GTK_NOTEBOOK (gtk_builder_get_object (CE_PAGE (self)->builder, "notebook"));
-        self->security_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"security_label"));
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/control-center/network/8021x-security-page.ui", &error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
+
+        self->box = GTK_BOX (gtk_builder_get_object (self->builder, "box"));
+        self->enable_8021x_switch = GTK_SWITCH (gtk_builder_get_object (self->builder, 
"enable_8021x_switch"));
+        self->notebook = GTK_NOTEBOOK (gtk_builder_get_object (self->builder, "notebook"));
+        self->security_label = GTK_LABEL (gtk_builder_get_object (self->builder, "security_label"));
 
        if (nm_connection_get_setting_802_1x (connection))
                self->initial_have_8021x = TRUE;
@@ -191,11 +199,8 @@ dispose (GObject *object)
 {
        CEPage8021xSecurity *self = CE_PAGE_8021X_SECURITY (object);
 
-       if (self->security) {
-               wireless_security_unref (self->security);
-                self->security = NULL;
-        }
-
+        g_clear_object (&self->builder);
+        g_clear_pointer (&self->security, wireless_security_unref);
         g_clear_object (&self->group);
 
        G_OBJECT_CLASS (ce_page_8021x_security_parent_class)->dispose (object);
diff --git a/panels/network/connection-editor/ce-page-details.c 
b/panels/network/connection-editor/ce-page-details.c
index 7c4f75398..6c294fa56 100644
--- a/panels/network/connection-editor/ce-page-details.c
+++ b/panels/network/connection-editor/ce-page-details.c
@@ -32,6 +32,7 @@ struct _CEPageDetails
 {
         CEPage parent;
 
+        GtkBuilder *builder;
         GtkCheckButton *all_user_check;
         GtkCheckButton *auto_connect_check;
         GtkLabel *dns_heading_label;
@@ -394,6 +395,16 @@ connect_details_page (CEPageDetails *self)
                 gtk_widget_hide (GTK_WIDGET (self->forget_button));
 }
 
+static void
+ce_page_details_dispose (GObject *object)
+{
+        CEPageDetails *self = CE_PAGE_DETAILS (object);
+
+        g_clear_object (&self->builder);
+
+        G_OBJECT_CLASS (ce_page_details_parent_class)->dispose (object);
+}
+
 static GtkWidget *
 ce_page_details_get_widget (CEPage *page)
 {
@@ -415,8 +426,10 @@ ce_page_details_init (CEPageDetails *self)
 static void
 ce_page_details_class_init (CEPageDetailsClass *class)
 {
+        GObjectClass *object_class = G_OBJECT_CLASS (class);
         CEPageClass *page_class = CE_PAGE_CLASS (class);
 
+        object_class->dispose = ce_page_details_dispose;
         page_class->get_widget = ce_page_details_get_widget;
         page_class->get_title = ce_page_details_get_title;
 }
@@ -429,34 +442,41 @@ ce_page_details_new (NMConnection        *connection,
                      NetConnectionEditor *editor)
 {
         CEPageDetails *self;
+        g_autoptr(GError) error = NULL;
+
+        self = CE_PAGE_DETAILS (g_object_new (ce_page_details_get_type (),
+                                              "connection", connection,
+                                              NULL));
+
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/control-center/network/details-page.ui", &error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
 
-        self = CE_PAGE_DETAILS (ce_page_new (ce_page_details_get_type (),
-                                             connection,
-                                             "/org/gnome/control-center/network/details-page.ui"));
-
-        self->all_user_check = GTK_CHECK_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"all_user_check"));
-        self->auto_connect_check = GTK_CHECK_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"auto_connect_check"));
-        self->dns_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"dns_heading_label"));
-        self->dns_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "dns_label"));
-        self->forget_button = GTK_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, "forget_button"));
-        self->grid = GTK_GRID (gtk_builder_get_object (CE_PAGE (self)->builder, "grid"));
-        self->ipv4_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"ipv4_heading_label"));
-        self->ipv4_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "ipv4_label"));
-        self->ipv6_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"ipv6_heading_label"));
-        self->ipv6_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "ipv6_label"));
-        self->last_used_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"last_used_heading_label"));
-        self->last_used_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"last_used_label"));
-        self->mac_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"mac_heading_label"));
-        self->mac_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "mac_label"));
-        self->restrict_data_check = GTK_CHECK_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"restrict_data_check"));
-        self->route_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"route_heading_label"));
-        self->route_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "route_label"));
-        self->security_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"security_heading_label"));
-        self->security_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"security_label"));
-        self->speed_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"speed_heading_label"));
-        self->speed_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "speed_label"));
-        self->strength_heading_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"strength_heading_label"));
-        self->strength_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"strength_label"));
+        self->all_user_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, "all_user_check"));
+        self->auto_connect_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"auto_connect_check"));
+        self->dns_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, "dns_heading_label"));
+        self->dns_label = GTK_LABEL (gtk_builder_get_object (self->builder, "dns_label"));
+        self->forget_button = GTK_BUTTON (gtk_builder_get_object (self->builder, "forget_button"));
+        self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
+        self->ipv4_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ipv4_heading_label"));
+        self->ipv4_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ipv4_label"));
+        self->ipv6_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ipv6_heading_label"));
+        self->ipv6_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ipv6_label"));
+        self->last_used_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, 
"last_used_heading_label"));
+        self->last_used_label = GTK_LABEL (gtk_builder_get_object (self->builder, "last_used_label"));
+        self->mac_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, "mac_heading_label"));
+        self->mac_label = GTK_LABEL (gtk_builder_get_object (self->builder, "mac_label"));
+        self->restrict_data_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"restrict_data_check"));
+        self->route_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, 
"route_heading_label"));
+        self->route_label = GTK_LABEL (gtk_builder_get_object (self->builder, "route_label"));
+        self->security_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, 
"security_heading_label"));
+        self->security_label = GTK_LABEL (gtk_builder_get_object (self->builder, "security_label"));
+        self->speed_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, 
"speed_heading_label"));
+        self->speed_label = GTK_LABEL (gtk_builder_get_object (self->builder, "speed_label"));
+        self->strength_heading_label = GTK_LABEL (gtk_builder_get_object (self->builder, 
"strength_heading_label"));
+        self->strength_label = GTK_LABEL (gtk_builder_get_object (self->builder, "strength_label"));
 
         self->editor = editor;
         self->device = device;
diff --git a/panels/network/connection-editor/ce-page-ethernet.c 
b/panels/network/connection-editor/ce-page-ethernet.c
index 81dac4f7c..77578065e 100644
--- a/panels/network/connection-editor/ce-page-ethernet.c
+++ b/panels/network/connection-editor/ce-page-ethernet.c
@@ -35,6 +35,7 @@ struct _CEPageEthernet
 {
         CEPage parent;
 
+        GtkBuilder      *builder;
         GtkComboBoxText *cloned_mac;
         GtkComboBoxText *device_mac;
         GtkGrid         *grid;
@@ -140,6 +141,16 @@ ui_to_setting (CEPageEthernet *self)
                       NULL);
 }
 
+static void
+ce_page_ethernet_dispose (GObject *object)
+{
+        CEPageEthernet *self = CE_PAGE_ETHERNET (object);
+
+        g_clear_object (&self->builder);
+
+        G_OBJECT_CLASS (ce_page_ethernet_parent_class)->dispose (object);
+}
+
 static GtkWidget *
 ce_page_ethernet_get_widget (CEPage *page)
 {
@@ -198,8 +209,10 @@ ce_page_ethernet_init (CEPageEthernet *self)
 static void
 ce_page_ethernet_class_init (CEPageEthernetClass *class)
 {
+        GObjectClass *object_class = G_OBJECT_CLASS (class);
         CEPageClass *page_class = CE_PAGE_CLASS (class);
 
+        object_class->dispose = ce_page_ethernet_dispose;
         page_class->get_widget = ce_page_ethernet_get_widget;
         page_class->get_title = ce_page_ethernet_get_title;
         page_class->validate = ce_page_ethernet_validate;
@@ -210,17 +223,24 @@ ce_page_ethernet_new (NMConnection     *connection,
                       NMClient         *client)
 {
         CEPageEthernet *self;
+        g_autoptr(GError) error = NULL;
 
-        self = CE_PAGE_ETHERNET (ce_page_new (ce_page_ethernet_get_type (),
-                                              connection,
-                                              "/org/gnome/control-center/network/ethernet-page.ui"));
+        self = CE_PAGE_ETHERNET (g_object_new (ce_page_ethernet_get_type (),
+                                               "connection", connection,
+                                               NULL));
+
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/control-center/network/ethernet-page.ui", &error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
 
-        self->cloned_mac = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (CE_PAGE (self)->builder, 
"cloned_mac_combo"));
-        self->device_mac = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (CE_PAGE (self)->builder, 
"mac_combo"));
-        self->grid = GTK_GRID (gtk_builder_get_object (CE_PAGE (self)->builder, "grid"));
-        self->mtu = GTK_SPIN_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, "mtu_spin"));
-        self->mtu_label = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (self)->builder, "mtu_label"));
-        self->name = GTK_ENTRY (gtk_builder_get_object (CE_PAGE (self)->builder, "name_entry"));
+        self->cloned_mac = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (self->builder, "cloned_mac_combo"));
+        self->device_mac = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (self->builder, "mac_combo"));
+        self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
+        self->mtu = GTK_SPIN_BUTTON (gtk_builder_get_object (self->builder, "mtu_spin"));
+        self->mtu_label = GTK_WIDGET (gtk_builder_get_object (self->builder, "mtu_label"));
+        self->name = GTK_ENTRY (gtk_builder_get_object (self->builder, "name_entry"));
 
         self->client = client;
         self->setting_connection = nm_connection_get_setting_connection (connection);
diff --git a/panels/network/connection-editor/ce-page-ip4.c b/panels/network/connection-editor/ce-page-ip4.c
index c82c789fd..50162c90b 100644
--- a/panels/network/connection-editor/ce-page-ip4.c
+++ b/panels/network/connection-editor/ce-page-ip4.c
@@ -39,6 +39,7 @@ struct _CEPageIP4
 {
         CEPage parent;
 
+        GtkBuilder        *builder;
         GtkBox            *address_box;
         GtkSizeGroup      *address_sizegroup;
         GtkSwitch         *auto_dns_switch;
@@ -510,22 +511,6 @@ connect_ip4_page (CEPageIP4 *self)
         gboolean disabled;
         guint method;
 
-        self->address_box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "address_box"));
-        self->address_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (CE_PAGE (self)->builder, 
"address_sizegroup"));
-        self->auto_dns_switch = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (self)->builder, 
"auto_dns_switch"));
-        self->auto_routes_switch = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (self)->builder, 
"auto_routes_switch"));
-        self->automatic_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"automatic_radio"));
-        self->content_box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "content_box"));
-        self->disabled_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"disabled_radio"));
-        self->dns_entry = GTK_ENTRY (gtk_builder_get_object (CE_PAGE (self)->builder, "dns_entry"));
-        self->local_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"local_radio"));
-        self->manual_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"manual_radio"));
-        self->never_default_check = GTK_CHECK_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"never_default_check"));
-        self->routes_box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "routes_box"));
-        self->routes_metric_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (CE_PAGE (self)->builder, 
"routes_metric_sizegroup"));
-        self->routes_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (CE_PAGE (self)->builder, 
"routes_sizegroup"));
-        self->scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (CE_PAGE (self)->builder, 
"scrolled_window"));
-
         add_address_box (self);
         add_dns_section (self);
         add_routes_box (self);
@@ -862,6 +847,16 @@ out:
         return ret;
 }
 
+static void
+ce_page_ip4_dispose (GObject *object)
+{
+        CEPageIP4 *self = CE_PAGE_IP4 (object);
+
+        g_clear_object (&self->builder);
+
+        G_OBJECT_CLASS (ce_page_ip4_parent_class)->dispose (object);
+}
+
 static GtkWidget *
 ce_page_ip4_get_widget (CEPage *page)
 {
@@ -894,8 +889,10 @@ ce_page_ip4_init (CEPageIP4 *self)
 static void
 ce_page_ip4_class_init (CEPageIP4Class *class)
 {
+        GObjectClass *object_class = G_OBJECT_CLASS (class);
         CEPageClass *page_class = CE_PAGE_CLASS (class);
 
+        object_class->dispose = ce_page_ip4_dispose;
         page_class->get_widget = ce_page_ip4_get_widget;
         page_class->get_title = ce_page_ip4_get_title;
         page_class->validate = ce_page_ip4_validate;
@@ -906,10 +903,33 @@ ce_page_ip4_new (NMConnection     *connection,
                  NMClient         *client)
 {
         CEPageIP4 *self;
+        g_autoptr(GError) error = NULL;
+
+        self = CE_PAGE_IP4 (g_object_new (ce_page_ip4_get_type (),
+                                          "connection", connection,
+                                          NULL));
+
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/control-center/network/ip4-page.ui", 
&error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
 
-        self = CE_PAGE_IP4 (ce_page_new (ce_page_ip4_get_type (),
-                                         connection,
-                                         "/org/gnome/control-center/network/ip4-page.ui"));
+        self->address_box = GTK_BOX (gtk_builder_get_object (self->builder, "address_box"));
+        self->address_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (self->builder, 
"address_sizegroup"));
+        self->auto_dns_switch = GTK_SWITCH (gtk_builder_get_object (self->builder, "auto_dns_switch"));
+        self->auto_routes_switch = GTK_SWITCH (gtk_builder_get_object (self->builder, "auto_routes_switch"));
+        self->automatic_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "automatic_radio"));
+        self->content_box = GTK_BOX (gtk_builder_get_object (self->builder, "content_box"));
+        self->disabled_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "disabled_radio"));
+        self->dns_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "dns_entry"));
+        self->local_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "local_radio"));
+        self->manual_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "manual_radio"));
+        self->never_default_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"never_default_check"));
+        self->routes_box = GTK_BOX (gtk_builder_get_object (self->builder, "routes_box"));
+        self->routes_metric_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (self->builder, 
"routes_metric_sizegroup"));
+        self->routes_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (self->builder, "routes_sizegroup"));
+        self->scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (self->builder, 
"scrolled_window"));
 
         self->setting = nm_connection_get_setting_ip4_config (connection);
         if (!self->setting) {
diff --git a/panels/network/connection-editor/ce-page-ip6.c b/panels/network/connection-editor/ce-page-ip6.c
index 08759ed12..c58682075 100644
--- a/panels/network/connection-editor/ce-page-ip6.c
+++ b/panels/network/connection-editor/ce-page-ip6.c
@@ -40,6 +40,7 @@ struct _CEPageIP6
 {
         CEPage parent;
 
+        GtkBuilder        *builder;
         GtkBox            *address_box;
         GtkSizeGroup      *address_sizegroup;
         GtkSwitch         *auto_dns_switch;
@@ -471,23 +472,6 @@ connect_ip6_page (CEPageIP6 *self)
         gboolean disabled;
         guint method;
 
-        self->address_box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "address_box"));
-        self->address_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (CE_PAGE (self)->builder, 
"address_sizegroup"));
-        self->auto_dns_switch = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (self)->builder, 
"auto_dns_switch"));
-        self->auto_routes_switch = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (self)->builder, 
"auto_routes_switch"));
-        self->automatic_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"automatic_radio"));
-        self->content_box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "content_box"));
-        self->dhcp_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, "dhcp_radio"));
-        self->disabled_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"disabled_radio"));
-        self->dns_entry = GTK_ENTRY (gtk_builder_get_object (CE_PAGE (self)->builder, "dns_entry"));
-        self->local_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"local_radio"));
-        self->manual_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"manual_radio"));
-        self->never_default_check = GTK_CHECK_BUTTON (gtk_builder_get_object (CE_PAGE (self)->builder, 
"never_default_check"));
-        self->routes_box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "routes_box"));
-        self->routes_metric_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (CE_PAGE (self)->builder, 
"routes_metric_sizegroup"));
-        self->routes_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (CE_PAGE (self)->builder, 
"routes_sizegroup"));
-        self->scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (CE_PAGE (self)->builder, 
"scrolled_window"));
-
         add_address_box (self);
         add_dns_section (self);
         add_routes_box (self);
@@ -786,6 +770,16 @@ out:
         return ret;
 }
 
+static void
+ce_page_ip6_dispose (GObject *object)
+{
+        CEPageIP6 *self = CE_PAGE_IP6 (object);
+
+        g_clear_object (&self->builder);
+
+        G_OBJECT_CLASS (ce_page_ip6_parent_class)->dispose (object);
+}
+
 static GtkWidget *
 ce_page_ip6_get_widget (CEPage *page)
 {
@@ -818,8 +812,10 @@ ce_page_ip6_init (CEPageIP6 *self)
 static void
 ce_page_ip6_class_init (CEPageIP6Class *class)
 {
+        GObjectClass *object_class = G_OBJECT_CLASS (class);
         CEPageClass *page_class = CE_PAGE_CLASS (class);
 
+        object_class->dispose = ce_page_ip6_dispose;
         page_class->get_widget = ce_page_ip6_get_widget;
         page_class->get_title = ce_page_ip6_get_title;
         page_class->validate = ce_page_ip6_validate;
@@ -830,10 +826,34 @@ ce_page_ip6_new (NMConnection     *connection,
                  NMClient         *client)
 {
         CEPageIP6 *self;
+        g_autoptr(GError) error = NULL;
+
+        self = CE_PAGE_IP6 (g_object_new (ce_page_ip6_get_type (),
+                                          "connection", connection,
+                                          NULL));
+
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/control-center/network/ip6-page.ui", 
&error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
 
-        self = CE_PAGE_IP6 (ce_page_new (ce_page_ip6_get_type (),
-                                         connection,
-                                         "/org/gnome/control-center/network/ip6-page.ui"));
+        self->address_box = GTK_BOX (gtk_builder_get_object (self->builder, "address_box"));
+        self->address_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (self->builder, 
"address_sizegroup"));
+        self->auto_dns_switch = GTK_SWITCH (gtk_builder_get_object (self->builder, "auto_dns_switch"));
+        self->auto_routes_switch = GTK_SWITCH (gtk_builder_get_object (self->builder, "auto_routes_switch"));
+        self->automatic_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "automatic_radio"));
+        self->content_box = GTK_BOX (gtk_builder_get_object (self->builder, "content_box"));
+        self->dhcp_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "dhcp_radio"));
+        self->disabled_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "disabled_radio"));
+        self->dns_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "dns_entry"));
+        self->local_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "local_radio"));
+        self->manual_radio = GTK_RADIO_BUTTON (gtk_builder_get_object (self->builder, "manual_radio"));
+        self->never_default_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"never_default_check"));
+        self->routes_box = GTK_BOX (gtk_builder_get_object (self->builder, "routes_box"));
+        self->routes_metric_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (self->builder, 
"routes_metric_sizegroup"));
+        self->routes_sizegroup = GTK_SIZE_GROUP (gtk_builder_get_object (self->builder, "routes_sizegroup"));
+        self->scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (self->builder, 
"scrolled_window"));
 
         self->setting = nm_connection_get_setting_ip6_config (connection);
         if (!self->setting) {
diff --git a/panels/network/connection-editor/ce-page-security.c 
b/panels/network/connection-editor/ce-page-security.c
index 03f3138e2..41ecf980f 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -38,6 +38,7 @@ struct _CEPageSecurity
 {
         CEPage parent;
 
+        GtkBuilder  *builder;
         GtkBox      *box;
         GtkNotebook *notebook;
         GtkComboBox *security_combo;
@@ -232,11 +233,6 @@ finish_setup (CEPageSecurity *self)
 
         self->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 
-        self->box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "box"));
-        self->notebook = GTK_NOTEBOOK (gtk_builder_get_object (CE_PAGE (self)->builder, "notebook"));
-        self->security_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, 
"security_label"));
-        self->security_combo = GTK_COMBO_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, 
"security_combo"));
-
         dev_caps =   NM_WIFI_DEVICE_CAP_CIPHER_WEP40
                    | NM_WIFI_DEVICE_CAP_CIPHER_WEP104
                    | NM_WIFI_DEVICE_CAP_CIPHER_TKIP
@@ -371,6 +367,7 @@ ce_page_security_dispose (GObject *object)
 {
         CEPageSecurity *self = CE_PAGE_SECURITY (object);
 
+        g_clear_object (&self->builder);
         g_clear_object (&self->group);
 
         G_OBJECT_CLASS (ce_page_security_parent_class)->dispose (object);
@@ -470,10 +467,22 @@ ce_page_security_new (NMConnection      *connection,
         CEPageSecurity *self;
         NMUtilsSecurityType default_type = NMU_SEC_NONE;
         NMSettingWirelessSecurity *sws;
+        g_autoptr(GError) error = NULL;
+
+        self = CE_PAGE_SECURITY (g_object_new (ce_page_security_get_type (),
+                                               "connection", connection,
+                                               NULL));
+
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/control-center/network/security-page.ui", &error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
 
-        self = CE_PAGE_SECURITY (ce_page_new (ce_page_security_get_type (),
-                                              connection,
-                                              "/org/gnome/control-center/network/security-page.ui"));
+        self->box = GTK_BOX (gtk_builder_get_object (self->builder, "box"));
+        self->notebook = GTK_NOTEBOOK (gtk_builder_get_object (self->builder, "notebook"));
+        self->security_label = GTK_LABEL (gtk_builder_get_object (self->builder, "security_label"));
+        self->security_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "security_combo"));
 
         sws = nm_connection_get_setting_wireless_security (connection);
         if (sws)
diff --git a/panels/network/connection-editor/ce-page-vpn.c b/panels/network/connection-editor/ce-page-vpn.c
index 086bff435..758c26a8b 100644
--- a/panels/network/connection-editor/ce-page-vpn.c
+++ b/panels/network/connection-editor/ce-page-vpn.c
@@ -33,9 +33,10 @@ struct _CEPageVpn
 {
         CEPage parent;
 
-        GtkBox   *box;
-        GtkLabel *failure_label;
-        GtkEntry *name_entry;
+        GtkBuilder *builder;
+        GtkBox     *box;
+        GtkLabel   *failure_label;
+        GtkEntry   *name_entry;
 
         NMSettingConnection *setting_connection;
         NMSettingVpn *setting_vpn;
@@ -129,6 +130,7 @@ ce_page_vpn_dispose (GObject *object)
 {
         CEPageVpn *self = CE_PAGE_VPN (object);
 
+        g_clear_object (&self->builder);
         g_clear_object (&self->editor);
 
         G_OBJECT_CLASS (ce_page_vpn_parent_class)->dispose (object);
@@ -213,14 +215,21 @@ ce_page_vpn_new (NMConnection     *connection,
                 NMClient         *client)
 {
         CEPageVpn *self;
+        g_autoptr(GError) error = NULL;
 
-        self = CE_PAGE_VPN (ce_page_new (ce_page_vpn_get_type (),
-                                        connection,
-                                        "/org/gnome/control-center/network/vpn-page.ui"));
+        self = CE_PAGE_VPN (g_object_new (ce_page_vpn_get_type (),
+                                          "connection", connection,
+                                          NULL));
 
-        self->box = GTK_BOX (gtk_builder_get_object (CE_PAGE (self)->builder, "box"));
-        self->failure_label = GTK_LABEL (gtk_builder_get_object (CE_PAGE (self)->builder, "failure_label"));
-        self->name_entry = GTK_ENTRY (gtk_builder_get_object (CE_PAGE (self)->builder, "name_entry"));
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/control-center/network/vpn-page.ui", 
&error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
+
+        self->box = GTK_BOX (gtk_builder_get_object (self->builder, "box"));
+        self->failure_label = GTK_LABEL (gtk_builder_get_object (self->builder, "failure_label"));
+        self->name_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "name_entry"));
 
         g_signal_connect (self, "initialized", G_CALLBACK (finish_setup), NULL);
 
diff --git a/panels/network/connection-editor/ce-page-wifi.c b/panels/network/connection-editor/ce-page-wifi.c
index a9b5e4fa0..f0968f66b 100644
--- a/panels/network/connection-editor/ce-page-wifi.c
+++ b/panels/network/connection-editor/ce-page-wifi.c
@@ -35,6 +35,7 @@ struct _CEPageWifi
 {
         CEPage parent;
 
+        GtkBuilder      *builder;
         GtkComboBoxText *bssid_combo;
         GtkComboBoxText *cloned_mac_combo;
         GtkGrid         *grid;
@@ -123,6 +124,16 @@ ui_to_setting (CEPageWifi *self)
                       NULL);
 }
 
+static void
+ce_page_wifi_dispose (GObject *object)
+{
+        CEPageWifi *self = CE_PAGE_WIFI (object);
+
+        g_clear_object (&self->builder);
+
+        G_OBJECT_CLASS (ce_page_wifi_parent_class)->dispose (object);
+}
+
 static GtkWidget *
 ce_page_wifi_get_widget (CEPage *page)
 {
@@ -184,8 +195,10 @@ ce_page_wifi_init (CEPageWifi *self)
 static void
 ce_page_wifi_class_init (CEPageWifiClass *class)
 {
-        CEPageClass *page_class= CE_PAGE_CLASS (class);
+        GObjectClass *object_class = G_OBJECT_CLASS (class);
+        CEPageClass *page_class = CE_PAGE_CLASS (class);
 
+        object_class->dispose = ce_page_wifi_dispose;
         page_class->get_widget = ce_page_wifi_get_widget;
         page_class->get_title = ce_page_wifi_get_title;
         page_class->validate = ce_page_wifi_class_validate;
@@ -196,16 +209,23 @@ ce_page_wifi_new (NMConnection     *connection,
                   NMClient         *client)
 {
         CEPageWifi *self;
+        g_autoptr(GError) error = NULL;
 
-        self = CE_PAGE_WIFI (ce_page_new (ce_page_wifi_get_type (),
-                                          connection,
-                                          "/org/gnome/control-center/network/wifi-page.ui"));
+        self = CE_PAGE_WIFI (g_object_new (ce_page_wifi_get_type (),
+                                           "connection", connection,
+                                           NULL));
+
+        self->builder = gtk_builder_new ();
+        if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/control-center/network/wifi-page.ui", 
&error)) {
+                g_warning ("Couldn't load builder file: %s", error->message);
+                return NULL;
+        }
 
-        self->bssid_combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (CE_PAGE (self)->builder, 
"bssid_combo"));
-        self->cloned_mac_combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (CE_PAGE (self)->builder, 
"cloned_mac_combo"));
-        self->grid = GTK_GRID (gtk_builder_get_object (CE_PAGE (self)->builder, "grid"));
-        self->mac_combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (CE_PAGE (self)->builder, "mac_combo"));
-        self->ssid_entry = GTK_ENTRY (gtk_builder_get_object (CE_PAGE (self)->builder, "ssid_entry"));
+        self->bssid_combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (self->builder, "bssid_combo"));
+        self->cloned_mac_combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (self->builder, 
"cloned_mac_combo"));
+        self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
+        self->mac_combo = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (self->builder, "mac_combo"));
+        self->ssid_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "ssid_entry"));
 
         self->client = client;
         self->setting = nm_connection_get_setting_wireless (connection);
diff --git a/panels/network/connection-editor/ce-page.c b/panels/network/connection-editor/ce-page.c
index 6b94168fa..e53115036 100644
--- a/panels/network/connection-editor/ce-page.c
+++ b/panels/network/connection-editor/ce-page.c
@@ -66,7 +66,6 @@ dispose (GObject *object)
 {
         CEPage *self = CE_PAGE (object);
 
-        g_clear_object (&self->builder);
         g_clear_object (&self->connection);
 
         G_OBJECT_CLASS (ce_page_parent_class)->dispose (object);
@@ -147,7 +146,6 @@ set_property (GObject      *object,
 static void
 ce_page_init (CEPage *self)
 {
-        self->builder = gtk_builder_new ();
 }
 
 static void
@@ -196,28 +194,6 @@ ce_page_class_init (CEPageClass *page_class)
                               G_TYPE_NONE, 1, G_TYPE_POINTER);
 }
 
-CEPage *
-ce_page_new (GType             type,
-             NMConnection     *connection,
-             const gchar      *ui_resource)
-{
-        g_autoptr(CEPage) self = NULL;
-        g_autoptr(GError) error = NULL;
-
-        self = CE_PAGE (g_object_new (type,
-                                      "connection", connection,
-                                      NULL));
-
-        if (ui_resource) {
-                if (!gtk_builder_add_from_resource (self->builder, ui_resource, &error)) {
-                        g_warning ("Couldn't load builder file: %s", error->message);
-                        return NULL;
-                }
-        }
-
-        return g_steal_pointer (&self);
-}
-
 static void
 emit_initialized (CEPage *self,
                   GError *error)
diff --git a/panels/network/connection-editor/ce-page.h b/panels/network/connection-editor/ce-page.h
index cc9477f78..5931ab87d 100644
--- a/panels/network/connection-editor/ce-page.h
+++ b/panels/network/connection-editor/ce-page.h
@@ -45,8 +45,6 @@ struct _CEPage
         GObject parent;
 
         gboolean initialized;
-        GtkBuilder *builder;
-
         NMConnection *connection;
 };
 
@@ -70,9 +68,6 @@ gboolean     ce_page_validate        (CEPage           *page,
                                       GError          **error);
 gboolean     ce_page_get_initialized (CEPage           *page);
 void         ce_page_changed         (CEPage           *page);
-CEPage      *ce_page_new             (GType             type,
-                                      NMConnection     *connection,
-                                      const gchar      *ui_resource);
 void         ce_page_complete_init   (CEPage           *page,
                                       const gchar      *setting_name,
                                       GVariant         *variant,



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