[gnome-control-center] network: Convert EAPMethod classes to GtkTemplates



commit 0f1cff9130eb32b0b78557415a77ad14f957d44e
Author: Robert Ancell <robert ancell canonical com>
Date:   Thu Nov 7 11:35:25 2019 +1300

    network: Convert EAPMethod classes to GtkTemplates

 panels/network/wireless-security/eap-method-fast.c | 55 ++++++------------
 panels/network/wireless-security/eap-method-fast.h |  3 +-
 .../network/wireless-security/eap-method-fast.ui   |  4 +-
 panels/network/wireless-security/eap-method-leap.c | 45 +++++----------
 panels/network/wireless-security/eap-method-leap.h |  5 +-
 .../network/wireless-security/eap-method-leap.ui   |  4 +-
 panels/network/wireless-security/eap-method-peap.c | 57 ++++++------------
 panels/network/wireless-security/eap-method-peap.h |  5 +-
 .../network/wireless-security/eap-method-peap.ui   |  4 +-
 .../network/wireless-security/eap-method-simple.c  | 45 +++++----------
 .../network/wireless-security/eap-method-simple.h  |  5 +-
 .../network/wireless-security/eap-method-simple.ui |  4 +-
 panels/network/wireless-security/eap-method-tls.c  | 67 +++++++---------------
 panels/network/wireless-security/eap-method-tls.h  |  5 +-
 panels/network/wireless-security/eap-method-tls.ui |  4 +-
 panels/network/wireless-security/eap-method-ttls.c | 57 ++++++------------
 panels/network/wireless-security/eap-method-ttls.h |  5 +-
 .../network/wireless-security/eap-method-ttls.ui   |  4 +-
 panels/network/wireless-security/eap-method.c      |  8 ---
 panels/network/wireless-security/eap-method.h      |  5 +-
 .../network/wireless-security/wireless-security.c  |  8 +--
 21 files changed, 143 insertions(+), 256 deletions(-)
---
diff --git a/panels/network/wireless-security/eap-method-fast.c 
b/panels/network/wireless-security/eap-method-fast.c
index df8bf77df..a88d67e91 100644
--- a/panels/network/wireless-security/eap-method-fast.c
+++ b/panels/network/wireless-security/eap-method-fast.c
@@ -36,12 +36,10 @@
 #define I_METHOD_COLUMN 1
 
 struct _EAPMethodFAST {
-       GObject parent;
+       GtkGrid parent;
 
-       GtkBuilder           *builder;
        GtkEntry             *anon_identity_entry;
        GtkLabel             *anon_identity_label;
-       GtkGrid              *grid;
        GtkComboBox          *inner_auth_combo;
        GtkLabel             *inner_auth_label;
        GtkBox               *inner_auth_box;
@@ -57,7 +55,7 @@ struct _EAPMethodFAST {
 
 static void eap_method_iface_init (EAPMethodInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (EAPMethodFAST, eap_method_fast, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (EAPMethodFAST, eap_method_fast, GTK_TYPE_GRID,
                          G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
 
 static void
@@ -65,7 +63,6 @@ eap_method_fast_dispose (GObject *object)
 {
        EAPMethodFAST *self = EAP_METHOD_FAST (object);
 
-       g_clear_object (&self->builder);
        g_clear_object (&self->size_group);
 
        G_OBJECT_CLASS (eap_method_fast_parent_class)->dispose (object);
@@ -185,7 +182,6 @@ inner_auth_combo_changed_cb (EAPMethodFAST *self)
        GList *elt, *children;
        GtkTreeModel *model;
        GtkTreeIter iter;
-       GtkWidget *eap_widget;
 
        /* Remove any previous wireless security widgets */
        children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
@@ -198,13 +194,10 @@ inner_auth_combo_changed_cb (EAPMethodFAST *self)
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
        g_assert (eap);
 
-       eap_widget = eap_method_get_widget (eap);
-       g_assert (eap_widget);
-       gtk_widget_unparent (eap_widget);
-
+       gtk_widget_unparent (GTK_WIDGET (eap));
        if (self->size_group)
                eap_method_add_to_size_group (eap, self->size_group);
-       gtk_container_add (GTK_CONTAINER (self->inner_auth_box), eap_widget);
+       gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (eap)));
 
        wireless_security_notify_changed (self->sec_parent);
 }
@@ -282,13 +275,6 @@ update_secrets (EAPMethod *parent, NMConnection *connection)
                                                 I_METHOD_COLUMN);
 }
 
-static GtkWidget *
-get_widget (EAPMethod *parent)
-{
-       EAPMethodFAST *self = (EAPMethodFAST *) parent;
-       return GTK_WIDGET (self->grid);
-}
-
 static GtkWidget *
 get_default_field (EAPMethod *parent)
 {
@@ -322,14 +308,28 @@ changed_cb (EAPMethodFAST *self)
 static void
 eap_method_fast_init (EAPMethodFAST *self)
 {
+       gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 eap_method_fast_class_init (EAPMethodFASTClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
        object_class->dispose = eap_method_fast_dispose;
+
+       gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/ControlCenter/network/eap-method-fast.ui");
+
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, anon_identity_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, anon_identity_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, inner_auth_combo);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, inner_auth_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, inner_auth_box);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, pac_file_button);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, pac_file_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, pac_provision_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodFAST, pac_provision_combo);
 }
 
 static void
@@ -339,7 +339,6 @@ eap_method_iface_init (EAPMethodInterface *iface)
        iface->add_to_size_group = add_to_size_group;
        iface->fill_connection = fill_connection;
        iface->update_secrets = update_secrets;
-       iface->get_widget = get_widget;
        iface->get_default_field = get_default_field;
        iface->get_password_flags_name = get_password_flags_name;
 }
@@ -355,29 +354,11 @@ eap_method_fast_new (WirelessSecurity *ws_parent,
        NMSetting8021x *s_8021x = NULL;
        const char *filename;
        gboolean provisioning_enabled = TRUE;
-       g_autoptr(GError) error = NULL;
 
        self = g_object_new (eap_method_fast_get_type (), NULL);
        self->sec_parent = ws_parent;
        self->is_editor = is_editor;
 
-       self->builder = gtk_builder_new ();
-       if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/ControlCenter/network/eap-method-fast.ui", &error)) {
-               g_warning ("Couldn't load UI builder resource: %s", error->message);
-               return NULL;
-       }
-
-       self->anon_identity_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "anon_identity_entry"));
-       self->anon_identity_label = GTK_LABEL (gtk_builder_get_object (self->builder, "anon_identity_label"));
-       self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
-       self->inner_auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "inner_auth_combo"));
-       self->inner_auth_label = GTK_LABEL (gtk_builder_get_object (self->builder, "inner_auth_label"));
-       self->inner_auth_box = GTK_BOX (gtk_builder_get_object (self->builder, "inner_auth_box"));
-       self->pac_file_button = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (self->builder, 
"pac_file_button"));
-       self->pac_file_label = GTK_LABEL (gtk_builder_get_object (self->builder, "pac_file_label"));
-       self->pac_provision_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"pac_provision_check"));
-       self->pac_provision_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, 
"pac_provision_combo"));
-
        if (connection)
                s_8021x = nm_connection_get_setting_802_1x (connection);
 
diff --git a/panels/network/wireless-security/eap-method-fast.h 
b/panels/network/wireless-security/eap-method-fast.h
index 4401f5315..474571d57 100644
--- a/panels/network/wireless-security/eap-method-fast.h
+++ b/panels/network/wireless-security/eap-method-fast.h
@@ -22,13 +22,14 @@
 
 #pragma once
 
+#include <gtk/gtk.h>
 #include <NetworkManager.h>
 
 #include "wireless-security.h"
 
 G_BEGIN_DECLS
 
-G_DECLARE_FINAL_TYPE (EAPMethodFAST, eap_method_fast, EAP, METHOD_FAST, GObject)
+G_DECLARE_FINAL_TYPE (EAPMethodFAST, eap_method_fast, EAP, METHOD_FAST, GtkGrid)
 
 EAPMethodFAST *eap_method_fast_new (WirelessSecurity *ws_parent,
                                     NMConnection *connection,
diff --git a/panels/network/wireless-security/eap-method-fast.ui 
b/panels/network/wireless-security/eap-method-fast.ui
index c6470d1ed..28964b427 100644
--- a/panels/network/wireless-security/eap-method-fast.ui
+++ b/panels/network/wireless-security/eap-method-fast.ui
@@ -29,7 +29,7 @@
       </row>
     </data>
   </object>
-  <object class="GtkGrid" id="grid">
+  <template class="EAPMethodFAST" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="valign">start</property>
@@ -165,5 +165,5 @@
         <property name="top_attach">1</property>
       </packing>
     </child>
-  </object>
+  </template>
 </interface>
diff --git a/panels/network/wireless-security/eap-method-leap.c 
b/panels/network/wireless-security/eap-method-leap.c
index fe5997f0b..55e818b49 100644
--- a/panels/network/wireless-security/eap-method-leap.c
+++ b/panels/network/wireless-security/eap-method-leap.c
@@ -33,10 +33,8 @@
 #include "utils.h"
 
 struct _EAPMethodLEAP {
-       GObject parent;
+       GtkGrid parent;
 
-       GtkBuilder     *builder;
-       GtkGrid        *grid;
        GtkEntry       *password_entry;
        GtkLabel       *password_label;
        GtkCheckButton *show_password_check;
@@ -50,7 +48,7 @@ struct _EAPMethodLEAP {
 
 static void eap_method_iface_init (EAPMethodInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (EAPMethodLEAP, eap_method_leap, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (EAPMethodLEAP, eap_method_leap, GTK_TYPE_GRID,
                          G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
 
 static void
@@ -133,13 +131,6 @@ update_secrets (EAPMethod *parent, NMConnection *connection)
                                  (HelperSecretFunc) nm_setting_802_1x_get_password);
 }
 
-static GtkWidget *
-get_widget (EAPMethod *parent)
-{
-       EAPMethodLEAP *self = (EAPMethodLEAP *) parent;
-       return GTK_WIDGET (self->grid);
-}
-
 static GtkWidget *
 get_default_field (EAPMethod *parent)
 {
@@ -192,8 +183,7 @@ eap_method_leap_dispose (GObject *object)
 {
        EAPMethodLEAP *self = EAP_METHOD_LEAP (object);
 
-       g_clear_object (&self->builder);
-       g_signal_handlers_disconnect_by_data (self->grid, self);
+       g_signal_handlers_disconnect_by_data (self, self);
        g_signal_handlers_disconnect_by_data (self->username_entry, self->ws_parent);
        g_signal_handlers_disconnect_by_data (self->password_entry, self->ws_parent);
        g_signal_handlers_disconnect_by_data (self->show_password_check, self);
@@ -210,14 +200,24 @@ changed_cb (EAPMethodLEAP *self)
 static void
 eap_method_leap_init (EAPMethodLEAP *self)
 {
+       gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 eap_method_leap_class_init (EAPMethodLEAPClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
        object_class->dispose = eap_method_leap_dispose;
+
+       gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/ControlCenter/network/eap-method-leap.ui");
+
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodLEAP, password_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodLEAP, password_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodLEAP, show_password_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodLEAP, username_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodLEAP, username_label);
 }
 
 static void
@@ -227,7 +227,6 @@ eap_method_iface_init (EAPMethodInterface *iface)
        iface->add_to_size_group = add_to_size_group;
        iface->fill_connection = fill_connection;
        iface->update_secrets = update_secrets;
-       iface->get_widget = get_widget;
        iface->get_default_field = get_default_field;
        iface->get_password_flags_name = get_password_flags_name;
 }
@@ -239,27 +238,13 @@ eap_method_leap_new (WirelessSecurity *ws_parent,
 {
        EAPMethodLEAP *self;
        NMSetting8021x *s_8021x = NULL;
-       g_autoptr(GError) error = NULL;
 
        self = g_object_new (eap_method_leap_get_type (), NULL);
        self->editing_connection = secrets_only ? FALSE : TRUE;
        self->ws_parent = ws_parent;
 
-       self->builder = gtk_builder_new ();
-       if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/ControlCenter/network/eap-method-leap.ui", &error)) {
-               g_warning ("Couldn't load UI builder resource: %s", error->message);
-               return NULL;
-       }
-
-       self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
-       self->password_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "password_entry"));
-       self->password_label = GTK_LABEL (gtk_builder_get_object (self->builder, "password_label"));
-       self->show_password_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"show_password_check"));
-       self->username_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "username_entry"));
-       self->username_label = GTK_LABEL (gtk_builder_get_object (self->builder, "username_label"));
-
-       g_signal_connect_swapped (self->grid, "realize", G_CALLBACK (widgets_realized), self);
-       g_signal_connect_swapped (self->grid, "unrealize", G_CALLBACK (widgets_unrealized), self);
+       g_signal_connect_swapped (self, "realize", G_CALLBACK (widgets_realized), self);
+       g_signal_connect_swapped (self, "unrealize", G_CALLBACK (widgets_unrealized), self);
 
        g_signal_connect_swapped (self->username_entry, "changed", G_CALLBACK (changed_cb), self);
 
diff --git a/panels/network/wireless-security/eap-method-leap.h 
b/panels/network/wireless-security/eap-method-leap.h
index b8522ebab..5b3491643 100644
--- a/panels/network/wireless-security/eap-method-leap.h
+++ b/panels/network/wireless-security/eap-method-leap.h
@@ -22,11 +22,14 @@
 
 #pragma once
 
+#include <gtk/gtk.h>
+#include <NetworkManager.h>
+
 #include "wireless-security.h"
 
 G_BEGIN_DECLS
 
-G_DECLARE_FINAL_TYPE (EAPMethodLEAP, eap_method_leap, EAP, METHOD_LEAP, GObject)
+G_DECLARE_FINAL_TYPE (EAPMethodLEAP, eap_method_leap, EAP, METHOD_LEAP, GtkGrid)
 
 EAPMethodLEAP *eap_method_leap_new (WirelessSecurity *ws_parent,
                                     NMConnection *connection,
diff --git a/panels/network/wireless-security/eap-method-leap.ui 
b/panels/network/wireless-security/eap-method-leap.ui
index b08802c15..4e289fba8 100644
--- a/panels/network/wireless-security/eap-method-leap.ui
+++ b/panels/network/wireless-security/eap-method-leap.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="3.4"/>
-  <object class="GtkGrid" id="grid">
+  <template class="EAPMethodLEAP" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="valign">start</property>
@@ -77,5 +77,5 @@
         <property name="top_attach">0</property>
       </packing>
     </child>
-  </object>
+  </template>
 </interface>
diff --git a/panels/network/wireless-security/eap-method-peap.c 
b/panels/network/wireless-security/eap-method-peap.c
index 70e1b3e8c..3b4353bb2 100644
--- a/panels/network/wireless-security/eap-method-peap.c
+++ b/panels/network/wireless-security/eap-method-peap.c
@@ -35,15 +35,13 @@
 #define I_METHOD_COLUMN 1
 
 struct _EAPMethodPEAP {
-       GObject parent;
+       GtkGrid parent;
 
-       GtkBuilder           *builder;
        GtkEntry             *anon_identity_entry;
        GtkLabel             *anon_identity_label;
        GtkFileChooserButton *ca_cert_button;
        GtkLabel             *ca_cert_label;
        GtkCheckButton       *ca_cert_not_required_check;
-       GtkGrid              *grid;
        GtkBox               *inner_auth_box;
        GtkComboBox          *inner_auth_combo;
        GtkLabel             *inner_auth_label;
@@ -57,7 +55,7 @@ struct _EAPMethodPEAP {
 
 static void eap_method_iface_init (EAPMethodInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (EAPMethodPEAP, eap_method_peap, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (EAPMethodPEAP, eap_method_peap, GTK_TYPE_GRID,
                          G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
 
 static void
@@ -65,7 +63,6 @@ eap_method_peap_dispose (GObject *object)
 {
        EAPMethodPEAP *self = EAP_METHOD_PEAP (object);
 
-       g_clear_object (&self->builder);
        g_clear_object (&self->size_group);
 
        G_OBJECT_CLASS (eap_method_peap_parent_class)->dispose (object);
@@ -191,7 +188,6 @@ inner_auth_combo_changed_cb (EAPMethodPEAP *self)
        GList *elt, *children;
        GtkTreeModel *model;
        GtkTreeIter iter;
-       GtkWidget *eap_widget;
 
        /* Remove any previous wireless security widgets */
        children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
@@ -203,13 +199,10 @@ inner_auth_combo_changed_cb (EAPMethodPEAP *self)
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
        g_assert (eap);
 
-       eap_widget = eap_method_get_widget (eap);
-       g_assert (eap_widget);
-       gtk_widget_unparent (eap_widget);
-
+       gtk_widget_unparent (GTK_WIDGET (eap));
        if (self->size_group)
                eap_method_add_to_size_group (eap, self->size_group);
-       gtk_container_add (GTK_CONTAINER (self->inner_auth_box), eap_widget);
+       gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (eap)));
 
        wireless_security_notify_changed (self->sec_parent);
 }
@@ -302,13 +295,6 @@ update_secrets (EAPMethod *method, NMConnection *connection)
                                                 I_METHOD_COLUMN);
 }
 
-static GtkWidget *
-get_widget (EAPMethod *method)
-{
-       EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
-       return GTK_WIDGET (self->grid);
-}
-
 static GtkWidget *
 get_default_field (EAPMethod *method)
 {
@@ -331,14 +317,29 @@ changed_cb (EAPMethodPEAP *self)
 static void
 eap_method_peap_init (EAPMethodPEAP *self)
 {
+       gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 eap_method_peap_class_init (EAPMethodPEAPClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
        object_class->dispose = eap_method_peap_dispose;
+
+       gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/ControlCenter/network/eap-method-peap.ui");
+
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, anon_identity_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, anon_identity_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, ca_cert_button);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, ca_cert_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, ca_cert_not_required_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, inner_auth_box);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, inner_auth_combo);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, inner_auth_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, version_combo);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodPEAP, version_label);
 }
 
 static void
@@ -348,7 +349,6 @@ eap_method_iface_init (EAPMethodInterface *iface)
        iface->add_to_size_group = add_to_size_group;
        iface->fill_connection = fill_connection;
        iface->update_secrets = update_secrets;
-       iface->get_widget = get_widget;
        iface->get_default_field = get_default_field;
        iface->get_password_flags_name = get_password_flags_name;
 }
@@ -363,30 +363,11 @@ eap_method_peap_new (WirelessSecurity *ws_parent,
        GtkFileFilter *filter;
        NMSetting8021x *s_8021x = NULL;
        const char *filename;
-       g_autoptr(GError) error = NULL;
 
        self = g_object_new (eap_method_peap_get_type (), NULL);
        self->sec_parent = ws_parent;
        self->is_editor = is_editor;
 
-       self->builder = gtk_builder_new ();
-       if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/ControlCenter/network/eap-method-peap.ui", &error)) {
-               g_warning ("Couldn't load UI builder resource: %s", error->message);
-               return NULL;
-       }
-
-       self->anon_identity_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "anon_identity_entry"));
-       self->anon_identity_label = GTK_LABEL (gtk_builder_get_object (self->builder, "anon_identity_label"));
-       self->ca_cert_button = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (self->builder, 
"ca_cert_button"));
-       self->ca_cert_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ca_cert_label"));
-       self->ca_cert_not_required_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"ca_cert_not_required_check"));
-       self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
-       self->inner_auth_box = GTK_BOX (gtk_builder_get_object (self->builder, "inner_auth_box"));
-       self->inner_auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "inner_auth_combo"));
-       self->inner_auth_label = GTK_LABEL (gtk_builder_get_object (self->builder, "inner_auth_label"));
-       self->version_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "version_combo"));
-       self->version_label = GTK_LABEL (gtk_builder_get_object (self->builder, "version_label"));
-
        if (connection)
                s_8021x = nm_connection_get_setting_802_1x (connection);
 
diff --git a/panels/network/wireless-security/eap-method-peap.h 
b/panels/network/wireless-security/eap-method-peap.h
index 64952c689..b79641799 100644
--- a/panels/network/wireless-security/eap-method-peap.h
+++ b/panels/network/wireless-security/eap-method-peap.h
@@ -22,11 +22,14 @@
 
 #pragma once
 
+#include <gtk/gtk.h>
+#include <NetworkManager.h>
+
 #include "wireless-security.h"
 
 G_BEGIN_DECLS
 
-G_DECLARE_FINAL_TYPE (EAPMethodPEAP, eap_method_peap, EAP, METHOD_PEAP, GObject)
+G_DECLARE_FINAL_TYPE (EAPMethodPEAP, eap_method_peap, EAP, METHOD_PEAP, GtkGrid)
 
 EAPMethodPEAP *eap_method_peap_new (WirelessSecurity *ws_parent,
                                     NMConnection *connection,
diff --git a/panels/network/wireless-security/eap-method-peap.ui 
b/panels/network/wireless-security/eap-method-peap.ui
index 8190d4898..baa6c5cb6 100644
--- a/panels/network/wireless-security/eap-method-peap.ui
+++ b/panels/network/wireless-security/eap-method-peap.ui
@@ -29,7 +29,7 @@
       </row>
     </data>
   </object>
-  <object class="GtkGrid" id="grid">
+  <template class="EAPMethodPEAP" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="column_spacing">6</property>
@@ -179,5 +179,5 @@
         <property name="width">2</property>
       </packing>
     </child>
-  </object>
+  </template>
 </interface>
diff --git a/panels/network/wireless-security/eap-method-simple.c 
b/panels/network/wireless-security/eap-method-simple.c
index 2eabf64d7..112583877 100644
--- a/panels/network/wireless-security/eap-method-simple.c
+++ b/panels/network/wireless-security/eap-method-simple.c
@@ -33,10 +33,8 @@
 #include "utils.h"
 
 struct _EAPMethodSimple {
-       GObject parent;
+       GtkGrid parent;
 
-       GtkBuilder      *builder;
-       GtkGrid         *grid;
        GtkEntry        *password_entry;
        GtkLabel        *password_label;
        GtkToggleButton *show_password_check;
@@ -53,7 +51,7 @@ struct _EAPMethodSimple {
 
 static void eap_method_iface_init (EAPMethodInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (EAPMethodSimple, eap_method_simple, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (EAPMethodSimple, eap_method_simple, GTK_TYPE_GRID,
                          G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
 
 static void
@@ -197,13 +195,6 @@ update_secrets (EAPMethod *method, NMConnection *connection)
                                  (HelperSecretFunc) nm_setting_802_1x_get_password);
 }
 
-static GtkWidget *
-get_widget (EAPMethod *method)
-{
-       EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
-       return GTK_WIDGET (self->grid);
-}
-
 static GtkWidget *
 get_default_field (EAPMethod *method)
 {
@@ -292,8 +283,7 @@ eap_method_simple_dispose (GObject *object)
 {
        EAPMethodSimple *self = EAP_METHOD_SIMPLE (object);
 
-       g_clear_object (&self->builder);
-       g_signal_handlers_disconnect_by_data (self->grid, self);
+       g_signal_handlers_disconnect_by_data (self, self);
        g_signal_handlers_disconnect_by_data (self->username_entry, self->ws_parent);
        g_signal_handlers_disconnect_by_data (self->password_entry, self->ws_parent);
        g_signal_handlers_disconnect_by_data (self->password_entry, self);
@@ -313,14 +303,24 @@ changed_cb (EAPMethodSimple *self)
 static void
 eap_method_simple_init (EAPMethodSimple *self)
 {
+       gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 eap_method_simple_class_init (EAPMethodSimpleClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
        object_class->dispose = eap_method_simple_dispose;
+
+       gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/ControlCenter/network/eap-method-simple.ui");
+
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodSimple, password_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodSimple, username_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodSimple, password_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodSimple, show_password_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodSimple, username_entry);
 }
 
 static void
@@ -330,7 +330,6 @@ eap_method_iface_init (EAPMethodInterface *iface)
        iface->add_to_size_group = add_to_size_group;
        iface->fill_connection = fill_connection;
        iface->update_secrets = update_secrets;
-       iface->get_widget = get_widget;
        iface->get_default_field = get_default_field;
        iface->get_password_flags_name = get_password_flags_name;
        iface->get_phase2 = get_phase2;
@@ -344,7 +343,6 @@ eap_method_simple_new (WirelessSecurity *ws_parent,
 {
        EAPMethodSimple *self;
        NMSetting8021x *s_8021x = NULL;
-       g_autoptr(GError) error = NULL;
 
        self = g_object_new (eap_method_simple_get_type (), NULL);
        self->ws_parent = ws_parent;
@@ -352,21 +350,8 @@ eap_method_simple_new (WirelessSecurity *ws_parent,
        self->type = type;
        g_assert (type < EAP_METHOD_SIMPLE_TYPE_LAST);
 
-       self->builder = gtk_builder_new ();
-       if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/ControlCenter/network/eap-method-simple.ui", &error)) {
-               g_warning ("Couldn't load UI builder resource: %s", error->message);
-               return NULL;
-       }
-
-       self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
-       self->password_label = GTK_LABEL (gtk_builder_get_object (self->builder, "password_label"));
-       self->username_label = GTK_LABEL (gtk_builder_get_object (self->builder, "username_label"));
-       self->password_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "password_entry"));
-       self->show_password_check = GTK_TOGGLE_BUTTON (gtk_builder_get_object (self->builder, 
"show_password_check"));
-       self->username_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "username_entry"));
-
-       g_signal_connect_swapped (self->grid, "realize", G_CALLBACK (widgets_realized), self);
-       g_signal_connect_swapped (self->grid, "unrealize", G_CALLBACK (widgets_unrealized), self);
+       g_signal_connect_swapped (self, "realize", G_CALLBACK (widgets_realized), self);
+       g_signal_connect_swapped (self, "unrealize", G_CALLBACK (widgets_unrealized), self);
 
        g_signal_connect_swapped (self->username_entry, "changed", G_CALLBACK (changed_cb), self);
 
diff --git a/panels/network/wireless-security/eap-method-simple.h 
b/panels/network/wireless-security/eap-method-simple.h
index be418dd09..527b7dbc4 100644
--- a/panels/network/wireless-security/eap-method-simple.h
+++ b/panels/network/wireless-security/eap-method-simple.h
@@ -22,11 +22,14 @@
 
 #pragma once
 
+#include <gtk/gtk.h>
+#include <NetworkManager.h>
+
 #include "wireless-security.h"
 
 G_BEGIN_DECLS
 
-G_DECLARE_FINAL_TYPE (EAPMethodSimple, eap_method_simple, EAP, METHOD_SIMPLE, GObject)
+G_DECLARE_FINAL_TYPE (EAPMethodSimple, eap_method_simple, EAP, METHOD_SIMPLE, GtkGrid)
 
 typedef enum {
        /* NOTE: when updating this table, also update eap_methods[] */
diff --git a/panels/network/wireless-security/eap-method-simple.ui 
b/panels/network/wireless-security/eap-method-simple.ui
index 00799ac93..7a0a9a677 100644
--- a/panels/network/wireless-security/eap-method-simple.ui
+++ b/panels/network/wireless-security/eap-method-simple.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="3.4"/>
-  <object class="GtkGrid" id="grid">
+  <template class="EAPMethodSimple" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="valign">start</property>
@@ -93,5 +93,5 @@
         <property name="top_attach">2</property>
       </packing>
     </child>
-  </object>
+  </template>
 </interface>
diff --git a/panels/network/wireless-security/eap-method-tls.c 
b/panels/network/wireless-security/eap-method-tls.c
index 8263d56e6..15c615c7d 100644
--- a/panels/network/wireless-security/eap-method-tls.c
+++ b/panels/network/wireless-security/eap-method-tls.c
@@ -33,13 +33,11 @@
 #include "utils.h"
 
 struct _EAPMethodTLS {
-       GObject parent;
+       GtkGrid parent;
 
-       GtkBuilder           *builder;
        GtkFileChooserButton *ca_cert_button;
        GtkLabel             *ca_cert_label;
        GtkCheckButton       *ca_cert_not_required_check;
-       GtkGrid              *grid;
        GtkEntry             *identity_entry;
        GtkLabel             *identity_label;
        GtkFileChooserButton *private_key_button;
@@ -58,19 +56,9 @@ struct _EAPMethodTLS {
 
 static void eap_method_iface_init (EAPMethodInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (EAPMethodTLS, eap_method_tls, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (EAPMethodTLS, eap_method_tls, GTK_TYPE_GRID,
                          G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
 
-static void
-eap_method_tls_dispose (GObject *object)
-{
-       EAPMethodTLS *self = EAP_METHOD_TLS (object);
-
-       g_clear_object (&self->builder);
-
-       G_OBJECT_CLASS (eap_method_tls_parent_class)->dispose (object);
-}
-
 static void
 show_toggled_cb (EAPMethodTLS *self)
 {
@@ -281,7 +269,7 @@ private_key_picker_helper (EAPMethodTLS *self, const char *filename, gboolean ch
                GtkWidget *toplevel;
                GtkWindow *parent_window = NULL;
 
-               toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self->grid));
+               toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
                if (gtk_widget_is_toplevel (toplevel))
                        parent_window = GTK_WINDOW (toplevel);
 
@@ -412,13 +400,6 @@ update_secrets (EAPMethod *method, NMConnection *connection)
        }
 }
 
-static GtkWidget *
-get_widget (EAPMethod *method)
-{
-       EAPMethodTLS *self = EAP_METHOD_TLS (method);
-       return GTK_WIDGET (self->grid);
-}
-
 static GtkWidget *
 get_default_field (EAPMethod *method)
 {
@@ -443,14 +424,28 @@ get_phase2 (EAPMethod *method)
 static void
 eap_method_tls_init (EAPMethodTLS *self)
 {
+       gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 eap_method_tls_class_init (EAPMethodTLSClass *klass)
 {
-        GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-       object_class->dispose = eap_method_tls_dispose;
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+       gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/ControlCenter/network/eap-method-tls.ui");
+
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, ca_cert_button);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, ca_cert_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, ca_cert_not_required_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, identity_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, identity_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, private_key_button);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, private_key_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, private_key_password_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, private_key_password_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, show_password_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, user_cert_button);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTLS, user_cert_label);
 }
 
 static void
@@ -460,7 +455,6 @@ eap_method_iface_init (EAPMethodInterface *iface)
        iface->add_to_size_group = add_to_size_group;
        iface->fill_connection = fill_connection;
        iface->update_secrets = update_secrets;
-       iface->get_widget = get_widget;
        iface->get_default_field = get_default_field;
        iface->get_password_flags_name = get_password_flags_name;
        iface->get_phase2 = get_phase2;
@@ -475,7 +469,6 @@ eap_method_tls_new (WirelessSecurity *ws_parent,
        EAPMethodTLS *self;
        NMSetting8021x *s_8021x = NULL;
        gboolean ca_not_required = FALSE;
-       g_autoptr(GError) error = NULL;
 
        self = g_object_new (eap_method_tls_get_type (), NULL);
        self->phase2 = phase2;
@@ -485,26 +478,6 @@ eap_method_tls_new (WirelessSecurity *ws_parent,
        self->sec_parent = ws_parent;
        self->editing_connection = secrets_only ? FALSE : TRUE;
 
-       self->builder = gtk_builder_new ();
-       if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/ControlCenter/network/eap-method-tls.ui", &error)) {
-               g_warning ("Couldn't load UI builder resource: %s", error->message);
-               return NULL;
-       }
-
-       self->ca_cert_button = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (self->builder, 
"ca_cert_button"));
-       self->ca_cert_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ca_cert_label"));
-       self->ca_cert_not_required_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"ca_cert_not_required_check"));
-       self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
-       self->identity_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "identity_entry"));
-       self->identity_label = GTK_LABEL (gtk_builder_get_object (self->builder, "identity_label"));
-       self->private_key_button = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (self->builder, 
"private_key_button"));
-       self->private_key_label = GTK_LABEL (gtk_builder_get_object (self->builder, "private_key_label"));
-       self->private_key_password_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, 
"private_key_password_entry"));
-       self->private_key_password_label = GTK_LABEL (gtk_builder_get_object (self->builder, 
"private_key_password_label"));
-       self->show_password_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"show_password_check"));
-       self->user_cert_button = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (self->builder, 
"user_cert_button"));
-       self->user_cert_label = GTK_LABEL (gtk_builder_get_object (self->builder, "user_cert_label"));
-
        if (connection)
                s_8021x = nm_connection_get_setting_802_1x (connection);
 
diff --git a/panels/network/wireless-security/eap-method-tls.h 
b/panels/network/wireless-security/eap-method-tls.h
index 3507b0ffc..fff224565 100644
--- a/panels/network/wireless-security/eap-method-tls.h
+++ b/panels/network/wireless-security/eap-method-tls.h
@@ -22,11 +22,14 @@
 
 #pragma once
 
+#include <gtk/gtk.h>
+#include <NetworkManager.h>
+
 #include "wireless-security.h"
 
 G_BEGIN_DECLS
 
-G_DECLARE_FINAL_TYPE (EAPMethodTLS, eap_method_tls, EAP, METHOD_TLS, GObject)
+G_DECLARE_FINAL_TYPE (EAPMethodTLS, eap_method_tls, EAP, METHOD_TLS, GtkGrid)
 
 EAPMethodTLS *eap_method_tls_new (WirelessSecurity *ws_parent,
                                   NMConnection *connection,
diff --git a/panels/network/wireless-security/eap-method-tls.ui 
b/panels/network/wireless-security/eap-method-tls.ui
index 194ac41e5..28698f457 100644
--- a/panels/network/wireless-security/eap-method-tls.ui
+++ b/panels/network/wireless-security/eap-method-tls.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="3.4"/>
-  <object class="GtkGrid" id="grid">
+  <template class="EAPMethodTLS" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="valign">start</property>
@@ -168,5 +168,5 @@
         <property name="top_attach">6</property>
       </packing>
     </child>
-  </object>
+  </template>
 </interface>
diff --git a/panels/network/wireless-security/eap-method-ttls.c 
b/panels/network/wireless-security/eap-method-ttls.c
index e21c2f83e..67ba854a6 100644
--- a/panels/network/wireless-security/eap-method-ttls.c
+++ b/panels/network/wireless-security/eap-method-ttls.c
@@ -35,9 +35,8 @@
 #define I_METHOD_COLUMN 1
 
 struct _EAPMethodTTLS {
-       GObject parent;
+       GtkGrid parent;
 
-       GtkBuilder           *builder;
        GtkEntry             *anon_identity_entry;
        GtkLabel             *anon_identity_label;
        GtkFileChooserButton *ca_cert_button;
@@ -45,7 +44,6 @@ struct _EAPMethodTTLS {
        GtkCheckButton       *ca_cert_not_required_check;
        GtkEntry             *domain_match_entry;
        GtkLabel             *domain_match_label;
-       GtkGrid              *grid;
        GtkComboBox          *inner_auth_combo;
        GtkLabel             *inner_auth_label;
        GtkBox               *inner_auth_box;
@@ -57,7 +55,7 @@ struct _EAPMethodTTLS {
 
 static void eap_method_iface_init (EAPMethodInterface *);
 
-G_DEFINE_TYPE_WITH_CODE (EAPMethodTTLS, eap_method_ttls, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (EAPMethodTTLS, eap_method_ttls, GTK_TYPE_GRID,
                          G_IMPLEMENT_INTERFACE (eap_method_get_type (), eap_method_iface_init))
 
 static void
@@ -65,7 +63,6 @@ eap_method_ttls_dispose (GObject *object)
 {
        EAPMethodTTLS *self = EAP_METHOD_TTLS (object);
 
-       g_clear_object (&self->builder);
        g_clear_object (&self->size_group);
 
        G_OBJECT_CLASS (eap_method_ttls_parent_class)->dispose (object);
@@ -181,7 +178,6 @@ inner_auth_combo_changed_cb (EAPMethodTTLS *self)
        GList *elt, *children;
        GtkTreeModel *model;
        GtkTreeIter iter;
-       GtkWidget *eap_widget;
 
        /* Remove any previous wireless security widgets */
        children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
@@ -194,13 +190,10 @@ inner_auth_combo_changed_cb (EAPMethodTTLS *self)
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
        g_assert (eap);
 
-       eap_widget = eap_method_get_widget (eap);
-       g_assert (eap_widget);
-       gtk_widget_unparent (eap_widget);
-
+       gtk_widget_unparent (GTK_WIDGET (eap));
        if (self->size_group)
                eap_method_add_to_size_group (eap, self->size_group);
-       gtk_container_add (GTK_CONTAINER (self->inner_auth_box), eap_widget);
+       gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (eap)));
 
        wireless_security_notify_changed (self->sec_parent);
 }
@@ -355,13 +348,6 @@ update_secrets (EAPMethod *method, NMConnection *connection)
                                                 I_METHOD_COLUMN);
 }
 
-static GtkWidget *
-get_widget (EAPMethod *method)
-{
-       EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
-       return GTK_WIDGET (self->grid);
-}
-
 static GtkWidget *
 get_default_field (EAPMethod *method)
 {
@@ -384,14 +370,29 @@ changed_cb (EAPMethodTTLS *self)
 static void
 eap_method_ttls_init (EAPMethodTTLS *self)
 {
+       gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 eap_method_ttls_class_init (EAPMethodTTLSClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
        object_class->dispose = eap_method_ttls_dispose;
+
+       gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/ControlCenter/network/eap-method-ttls.ui");
+
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, anon_identity_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, anon_identity_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, ca_cert_button);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, ca_cert_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, ca_cert_not_required_check);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, domain_match_entry);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, domain_match_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_combo);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_label);
+       gtk_widget_class_bind_template_child (widget_class, EAPMethodTTLS, inner_auth_box);
 }
 
 static void
@@ -401,7 +402,6 @@ eap_method_iface_init (EAPMethodInterface *iface)
        iface->add_to_size_group = add_to_size_group;
        iface->fill_connection = fill_connection;
        iface->update_secrets = update_secrets;
-       iface->get_widget = get_widget;
        iface->get_default_field = get_default_field;
        iface->get_password_flags_name = get_password_flags_name;
 }
@@ -416,30 +416,11 @@ eap_method_ttls_new (WirelessSecurity *ws_parent,
        GtkFileFilter *filter;
        NMSetting8021x *s_8021x = NULL;
        const char *filename;
-       g_autoptr(GError) error = NULL;
 
        self = g_object_new (eap_method_ttls_get_type (), NULL);
        self->sec_parent = ws_parent;
        self->is_editor = is_editor;
 
-       self->builder = gtk_builder_new ();
-       if (!gtk_builder_add_from_resource (self->builder, 
"/org/gnome/ControlCenter/network/eap-method-ttls.ui", &error)) {
-               g_warning ("Couldn't load UI builder resource: %s", error->message);
-               return NULL;
-       }
-
-       self->anon_identity_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "anon_identity_entry"));
-       self->anon_identity_label = GTK_LABEL (gtk_builder_get_object (self->builder, "anon_identity_label"));
-       self->ca_cert_button = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (self->builder, 
"ca_cert_button"));
-       self->ca_cert_label = GTK_LABEL (gtk_builder_get_object (self->builder, "ca_cert_label"));
-       self->ca_cert_not_required_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, 
"ca_cert_not_required_check"));
-       self->domain_match_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "domain_match_entry"));
-       self->domain_match_label = GTK_LABEL (gtk_builder_get_object (self->builder, "domain_match_label"));
-       self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
-       self->inner_auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "inner_auth_combo"));
-       self->inner_auth_label = GTK_LABEL (gtk_builder_get_object (self->builder, "inner_auth_label"));
-       self->inner_auth_box = GTK_BOX (gtk_builder_get_object (self->builder, "inner_auth_box"));
-
        if (connection)
                s_8021x = nm_connection_get_setting_802_1x (connection);
 
diff --git a/panels/network/wireless-security/eap-method-ttls.h 
b/panels/network/wireless-security/eap-method-ttls.h
index 58af57805..9a0be55ef 100644
--- a/panels/network/wireless-security/eap-method-ttls.h
+++ b/panels/network/wireless-security/eap-method-ttls.h
@@ -22,11 +22,14 @@
 
 #pragma once
 
+#include <gtk/gtk.h>
+#include <NetworkManager.h>
+
 #include "wireless-security.h"
 
 G_BEGIN_DECLS
 
-G_DECLARE_FINAL_TYPE (EAPMethodTTLS, eap_method_ttls, EAP, METHOD_TTLS, GObject)
+G_DECLARE_FINAL_TYPE (EAPMethodTTLS, eap_method_ttls, EAP, METHOD_TTLS, GtkGrid)
 
 EAPMethodTTLS *eap_method_ttls_new (WirelessSecurity *ws_parent,
                                     NMConnection *connection,
diff --git a/panels/network/wireless-security/eap-method-ttls.ui 
b/panels/network/wireless-security/eap-method-ttls.ui
index 519d99379..e36fc8bb8 100644
--- a/panels/network/wireless-security/eap-method-ttls.ui
+++ b/panels/network/wireless-security/eap-method-ttls.ui
@@ -12,7 +12,7 @@
       </row>
     </data>
   </object>
-  <object class="GtkGrid" id="grid">
+  <template class="EAPMethodTTLS" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="column_spacing">6</property>
@@ -158,5 +158,5 @@
         <property name="width">2</property>
       </packing>
     </child>
-  </object>
+  </template>
 </interface>
diff --git a/panels/network/wireless-security/eap-method.c b/panels/network/wireless-security/eap-method.c
index e1a147c03..c309609b7 100644
--- a/panels/network/wireless-security/eap-method.c
+++ b/panels/network/wireless-security/eap-method.c
@@ -40,14 +40,6 @@ eap_method_default_init (EAPMethodInterface *iface)
 {
 }
 
-GtkWidget *
-eap_method_get_widget (EAPMethod *self)
-{
-       g_return_val_if_fail (self != NULL, NULL);
-
-       return EAP_METHOD_GET_IFACE (self)->get_widget (self);
-}
-
 GtkWidget *
 eap_method_get_default_field (EAPMethod *self)
 {
diff --git a/panels/network/wireless-security/eap-method.h b/panels/network/wireless-security/eap-method.h
index 3910a9e9f..4c23b5858 100644
--- a/panels/network/wireless-security/eap-method.h
+++ b/panels/network/wireless-security/eap-method.h
@@ -27,7 +27,7 @@
 
 G_BEGIN_DECLS
 
-G_DECLARE_INTERFACE (EAPMethod, eap_method, EAP, METHOD, GObject)
+G_DECLARE_INTERFACE (EAPMethod, eap_method, EAP, METHOD, GtkGrid)
 
 struct _EAPMethodInterface {
        GTypeInterface g_iface;
@@ -36,14 +36,11 @@ struct _EAPMethodInterface {
        void         (*fill_connection)         (EAPMethod *method, NMConnection *connection, 
NMSettingSecretFlags flags);
        void         (*update_secrets)          (EAPMethod *method, NMConnection *connection);
        gboolean     (*validate)                (EAPMethod *method, GError **error);
-       GtkWidget*   (*get_widget)              (EAPMethod *method);
        GtkWidget*   (*get_default_field)       (EAPMethod *method);
        const gchar* (*get_password_flags_name) (EAPMethod *method);
        gboolean     (*get_phase2)              (EAPMethod *method);
 };
 
-GtkWidget *eap_method_get_widget (EAPMethod *method);
-
 GtkWidget *eap_method_get_default_field (EAPMethod *method);
 
 const gchar *eap_method_get_password_flags_name (EAPMethod *method);
diff --git a/panels/network/wireless-security/wireless-security.c 
b/panels/network/wireless-security/wireless-security.c
index e8c4a7a27..7f9ab9c77 100644
--- a/panels/network/wireless-security/wireless-security.c
+++ b/panels/network/wireless-security/wireless-security.c
@@ -340,7 +340,6 @@ ws_802_1x_auth_combo_changed (GtkComboBox *combo,
 {
        EAPMethod *eap;
        GList *elt, *children;
-       GtkWidget *eap_widget;
        GtkWidget *eap_default_field;
 
        /* Remove any previous wireless security widgets */
@@ -351,13 +350,10 @@ ws_802_1x_auth_combo_changed (GtkComboBox *combo,
        eap = ws_802_1x_auth_combo_get_eap (GTK_COMBO_BOX (combo));
        g_assert (eap);
 
-       eap_widget = eap_method_get_widget (eap);
-       g_assert (eap_widget);
-       gtk_widget_unparent (eap_widget);
-
+       gtk_widget_unparent (GTK_WIDGET (eap));
        if (size_group)
                eap_method_add_to_size_group (eap, size_group);
-       gtk_container_add (GTK_CONTAINER (vbox), eap_widget);
+       gtk_container_add (GTK_CONTAINER (vbox), g_object_ref (GTK_WIDGET (eap)));
 
        /* Refocus the EAP method's default widget */
        eap_default_field = eap_method_get_default_field (eap);



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