network: Move GtkBuilder code from WirelessSecurity to subclasses

This commit is contained in:
Robert Ancell 2019-11-07 11:48:11 +13:00 committed by Georges Basile Stavracas Neto
parent 0f1cff9130
commit 4b182dd7c0
7 changed files with 94 additions and 55 deletions

View file

@ -171,7 +171,6 @@ wireless_security_unref (WirelessSecurity *self)
g_clear_pointer (&priv->username, g_free); g_clear_pointer (&priv->username, g_free);
g_clear_pointer (&priv->password, g_free); g_clear_pointer (&priv->password, g_free);
g_clear_object (&self->builder);
g_slice_free1 (priv->obj_size, self); g_slice_free1 (priv->obj_size, self);
g_free (priv); g_free (priv);
} }
@ -183,15 +182,12 @@ wireless_security_init (gsize obj_size,
WSValidateFunc validate, WSValidateFunc validate,
WSAddToSizeGroupFunc add_to_size_group, WSAddToSizeGroupFunc add_to_size_group,
WSFillConnectionFunc fill_connection, WSFillConnectionFunc fill_connection,
WSDestroyFunc destroy, WSDestroyFunc destroy)
const char *ui_resource)
{ {
g_autoptr(WirelessSecurity) self = NULL; g_autoptr(WirelessSecurity) self = NULL;
WirelessSecurityPrivate *priv; WirelessSecurityPrivate *priv;
g_autoptr(GError) error = NULL;
g_return_val_if_fail (obj_size > 0, NULL); g_return_val_if_fail (obj_size > 0, NULL);
g_return_val_if_fail (ui_resource != NULL, NULL);
g_type_ensure (WIRELESS_TYPE_SECURITY); g_type_ensure (WIRELESS_TYPE_SECURITY);
@ -206,14 +202,6 @@ wireless_security_init (gsize obj_size,
priv->validate = validate; priv->validate = validate;
priv->add_to_size_group = add_to_size_group; priv->add_to_size_group = add_to_size_group;
priv->fill_connection = fill_connection; priv->fill_connection = fill_connection;
self->builder = gtk_builder_new ();
if (!gtk_builder_add_from_resource (self->builder, ui_resource, &error)) {
g_warning ("Couldn't load UI builder resource %s: %s",
ui_resource, error->message);
return NULL;
}
priv->destroy = destroy; priv->destroy = destroy;
priv->adhoc_compatible = TRUE; priv->adhoc_compatible = TRUE;

View file

@ -40,7 +40,6 @@ typedef GtkWidget* (*WSGetWidgetFunc) (WirelessSecurity *sec);
struct _WirelessSecurity { struct _WirelessSecurity {
WirelessSecurityPrivate *priv; WirelessSecurityPrivate *priv;
GtkBuilder *builder;
}; };
#define WIRELESS_SECURITY(x) ((WirelessSecurity *) x) #define WIRELESS_SECURITY(x) ((WirelessSecurity *) x)
@ -92,8 +91,7 @@ WirelessSecurity *wireless_security_init (gsize obj_size,
WSValidateFunc validate, WSValidateFunc validate,
WSAddToSizeGroupFunc add_to_size_group, WSAddToSizeGroupFunc add_to_size_group,
WSFillConnectionFunc fill_connection, WSFillConnectionFunc fill_connection,
WSDestroyFunc destroy, WSDestroyFunc destroy);
const char *ui_resource);
void wireless_security_notify_changed (WirelessSecurity *sec); void wireless_security_notify_changed (WirelessSecurity *sec);

View file

@ -32,6 +32,7 @@
struct _WirelessSecurityDynamicWEP { struct _WirelessSecurityDynamicWEP {
WirelessSecurity parent; WirelessSecurity parent;
GtkBuilder *builder;
GtkComboBox *auth_combo; GtkComboBox *auth_combo;
GtkLabel *auth_label; GtkLabel *auth_label;
GtkGrid *grid; GtkGrid *grid;
@ -45,6 +46,7 @@ destroy (WirelessSecurity *parent)
{ {
WirelessSecurityDynamicWEP *self = (WirelessSecurityDynamicWEP *) parent; WirelessSecurityDynamicWEP *self = (WirelessSecurityDynamicWEP *) parent;
g_clear_object (&self->builder);
g_clear_object (&self->size_group); g_clear_object (&self->size_group);
} }
@ -105,22 +107,28 @@ ws_dynamic_wep_new (NMConnection *connection,
{ {
WirelessSecurity *parent; WirelessSecurity *parent;
WirelessSecurityDynamicWEP *self; WirelessSecurityDynamicWEP *self;
g_autoptr(GError) error = NULL;
parent = wireless_security_init (sizeof (WirelessSecurityDynamicWEP), parent = wireless_security_init (sizeof (WirelessSecurityDynamicWEP),
get_widget, get_widget,
validate, validate,
add_to_size_group, add_to_size_group,
fill_connection, fill_connection,
destroy, destroy);
"/org/gnome/ControlCenter/network/ws-dynamic-wep.ui");
if (!parent) if (!parent)
return NULL; return NULL;
self = (WirelessSecurityDynamicWEP *) parent; self = (WirelessSecurityDynamicWEP *) parent;
self->auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (parent->builder, "auth_combo")); self->builder = gtk_builder_new ();
self->auth_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "auth_label")); if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/ControlCenter/network/ws-dynamic-wep.ui", &error)) {
self->grid = GTK_GRID (gtk_builder_get_object (parent->builder, "grid")); g_warning ("Couldn't load UI builder resource: %s", error->message);
self->method_box = GTK_BOX (gtk_builder_get_object (parent->builder, "method_box")); return NULL;
}
self->auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "auth_combo"));
self->auth_label = GTK_LABEL (gtk_builder_get_object (self->builder, "auth_label"));
self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
self->method_box = GTK_BOX (gtk_builder_get_object (self->builder, "method_box"));
wireless_security_set_adhoc_compatible (parent, FALSE); wireless_security_set_adhoc_compatible (parent, FALSE);

View file

@ -33,6 +33,7 @@
struct _WirelessSecurityLEAP { struct _WirelessSecurityLEAP {
WirelessSecurity parent; WirelessSecurity parent;
GtkBuilder *builder;
GtkGrid *grid; GtkGrid *grid;
GtkEntry *password_entry; GtkEntry *password_entry;
GtkLabel *password_label; GtkLabel *password_label;
@ -44,6 +45,14 @@ struct _WirelessSecurityLEAP {
const char *password_flags_name; const char *password_flags_name;
}; };
static void
destroy (WirelessSecurity *parent)
{
WirelessSecurityLEAP *self = (WirelessSecurityLEAP *) parent;
g_clear_object (&self->builder);
}
static void static void
show_toggled_cb (WirelessSecurityLEAP *self) show_toggled_cb (WirelessSecurityLEAP *self)
{ {
@ -151,14 +160,14 @@ ws_leap_new (NMConnection *connection, gboolean secrets_only)
WirelessSecurity *parent; WirelessSecurity *parent;
WirelessSecurityLEAP *self; WirelessSecurityLEAP *self;
NMSettingWirelessSecurity *wsec = NULL; NMSettingWirelessSecurity *wsec = NULL;
g_autoptr(GError) error = NULL;
parent = wireless_security_init (sizeof (WirelessSecurityLEAP), parent = wireless_security_init (sizeof (WirelessSecurityLEAP),
get_widget, get_widget,
validate, validate,
add_to_size_group, add_to_size_group,
fill_connection, fill_connection,
NULL, destroy);
"/org/gnome/ControlCenter/network/ws-leap.ui");
if (!parent) if (!parent)
return NULL; return NULL;
@ -179,12 +188,18 @@ ws_leap_new (NMConnection *connection, gboolean secrets_only)
self->editing_connection = secrets_only ? FALSE : TRUE; self->editing_connection = secrets_only ? FALSE : TRUE;
self->password_flags_name = NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD; self->password_flags_name = NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD;
self->grid = GTK_GRID (gtk_builder_get_object (parent->builder, "grid")); self->builder = gtk_builder_new ();
self->password_entry = GTK_ENTRY (gtk_builder_get_object (parent->builder, "password_entry")); if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/ControlCenter/network/ws-leap.ui", &error)) {
self->password_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "password_label")); g_warning ("Couldn't load UI builder resource: %s", error->message);
self->show_password_check = GTK_CHECK_BUTTON (gtk_builder_get_object (parent->builder, "show_password_check")); return NULL;
self->username_entry = GTK_ENTRY (gtk_builder_get_object (parent->builder, "username_entry")); }
self->username_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "username_label"));
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->password_entry, "changed", G_CALLBACK (changed_cb), self); g_signal_connect_swapped (self->password_entry, "changed", G_CALLBACK (changed_cb), self);

View file

@ -33,6 +33,7 @@
struct _WirelessSecurityWEPKey { struct _WirelessSecurityWEPKey {
WirelessSecurity parent; WirelessSecurity parent;
GtkBuilder *builder;
GtkComboBox *auth_method_combo; GtkComboBox *auth_method_combo;
GtkLabel *auth_method_label; GtkLabel *auth_method_label;
GtkGrid *grid; GtkGrid *grid;
@ -89,6 +90,7 @@ destroy (WirelessSecurity *parent)
WirelessSecurityWEPKey *self = (WirelessSecurityWEPKey *) parent; WirelessSecurityWEPKey *self = (WirelessSecurityWEPKey *) parent;
int i; int i;
g_clear_object (&self->builder);
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
memset (self->keys[i], 0, sizeof (self->keys[i])); memset (self->keys[i], 0, sizeof (self->keys[i]));
} }
@ -264,26 +266,32 @@ ws_wep_key_new (NMConnection *connection,
guint8 default_key_idx = 0; guint8 default_key_idx = 0;
gboolean is_adhoc = adhoc_create; gboolean is_adhoc = adhoc_create;
gboolean is_shared_key = FALSE; gboolean is_shared_key = FALSE;
g_autoptr(GError) error = NULL;
parent = wireless_security_init (sizeof (WirelessSecurityWEPKey), parent = wireless_security_init (sizeof (WirelessSecurityWEPKey),
get_widget, get_widget,
validate, validate,
add_to_size_group, add_to_size_group,
fill_connection, fill_connection,
destroy, destroy);
"/org/gnome/ControlCenter/network/ws-wep-key.ui");
if (!parent) if (!parent)
return NULL; return NULL;
self = (WirelessSecurityWEPKey *) parent; self = (WirelessSecurityWEPKey *) parent;
self->auth_method_combo = GTK_COMBO_BOX (gtk_builder_get_object (parent->builder, "auth_method_combo")); self->builder = gtk_builder_new ();
self->auth_method_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "auth_method_label")); if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/ControlCenter/network/ws-wep-key.ui", &error)) {
self->grid = GTK_GRID (gtk_builder_get_object (parent->builder, "grid")); g_warning ("Couldn't load UI builder resource: %s", error->message);
self->key_entry = GTK_ENTRY (gtk_builder_get_object (parent->builder, "key_entry")); return NULL;
self->key_index_combo = GTK_COMBO_BOX (gtk_builder_get_object (parent->builder, "key_index_combo")); }
self->key_index_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "key_index_label"));
self->key_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "key_label")); self->auth_method_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "auth_method_combo"));
self->show_key_check = GTK_CHECK_BUTTON (gtk_builder_get_object (parent->builder, "show_key_check")); self->auth_method_label = GTK_LABEL (gtk_builder_get_object (self->builder, "auth_method_label"));
self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
self->key_entry = GTK_ENTRY (gtk_builder_get_object (self->builder, "key_entry"));
self->key_index_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "key_index_combo"));
self->key_index_label = GTK_LABEL (gtk_builder_get_object (self->builder, "key_index_label"));
self->key_label = GTK_LABEL (gtk_builder_get_object (self->builder, "key_label"));
self->show_key_check = GTK_CHECK_BUTTON (gtk_builder_get_object (self->builder, "show_key_check"));
self->editing_connection = secrets_only ? FALSE : TRUE; self->editing_connection = secrets_only ? FALSE : TRUE;
self->password_flags_name = NM_SETTING_WIRELESS_SECURITY_WEP_KEY0; self->password_flags_name = NM_SETTING_WIRELESS_SECURITY_WEP_KEY0;

View file

@ -32,6 +32,7 @@
struct _WirelessSecurityWPAEAP { struct _WirelessSecurityWPAEAP {
WirelessSecurity parent; WirelessSecurity parent;
GtkBuilder *builder;
GtkComboBox *auth_combo; GtkComboBox *auth_combo;
GtkLabel *auth_label; GtkLabel *auth_label;
GtkGrid *grid; GtkGrid *grid;
@ -40,12 +41,12 @@ struct _WirelessSecurityWPAEAP {
GtkSizeGroup *size_group; GtkSizeGroup *size_group;
}; };
static void static void
destroy (WirelessSecurity *parent) destroy (WirelessSecurity *parent)
{ {
WirelessSecurityWPAEAP *self = (WirelessSecurityWPAEAP *) parent; WirelessSecurityWPAEAP *self = (WirelessSecurityWPAEAP *) parent;
g_clear_object (&self->builder);
g_clear_object (&self->size_group); g_clear_object (&self->size_group);
} }
@ -106,22 +107,28 @@ ws_wpa_eap_new (NMConnection *connection,
{ {
WirelessSecurity *parent; WirelessSecurity *parent;
WirelessSecurityWPAEAP *self; WirelessSecurityWPAEAP *self;
g_autoptr(GError) error = NULL;
parent = wireless_security_init (sizeof (WirelessSecurityWPAEAP), parent = wireless_security_init (sizeof (WirelessSecurityWPAEAP),
get_widget, get_widget,
validate, validate,
add_to_size_group, add_to_size_group,
fill_connection, fill_connection,
destroy, destroy);
"/org/gnome/ControlCenter/network/ws-wpa-eap.ui");
if (!parent) if (!parent)
return NULL; return NULL;
self = (WirelessSecurityWPAEAP *) parent; self = (WirelessSecurityWPAEAP *) parent;
self->auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (parent->builder, "auth_combo")); self->builder = gtk_builder_new ();
self->auth_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "auth_label")); if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/ControlCenter/network/ws-wpa-eap.ui", &error)) {
self->grid = GTK_GRID (gtk_builder_get_object (parent->builder, "grid")); g_warning ("Couldn't load UI builder resource: %s", error->message);
self->method_box = GTK_BOX (gtk_builder_get_object (parent->builder, "method_box")); return NULL;
}
self->auth_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "auth_combo"));
self->auth_label = GTK_LABEL (gtk_builder_get_object (self->builder, "auth_label"));
self->grid = GTK_GRID (gtk_builder_get_object (self->builder, "grid"));
self->method_box = GTK_BOX (gtk_builder_get_object (self->builder, "method_box"));
wireless_security_set_adhoc_compatible (parent, FALSE); wireless_security_set_adhoc_compatible (parent, FALSE);

View file

@ -36,6 +36,7 @@
struct _WirelessSecurityWPAPSK { struct _WirelessSecurityWPAPSK {
WirelessSecurity parent; WirelessSecurity parent;
GtkBuilder *builder;
GtkGrid *grid; GtkGrid *grid;
GtkEntry *password_entry; GtkEntry *password_entry;
GtkLabel *password_label; GtkLabel *password_label;
@ -47,6 +48,14 @@ struct _WirelessSecurityWPAPSK {
const char *password_flags_name; const char *password_flags_name;
}; };
static void
destroy (WirelessSecurity *parent)
{
WirelessSecurityWPAPSK *self = (WirelessSecurityWPAPSK *) parent;
g_clear_object (&self->builder);
}
static GtkWidget * static GtkWidget *
get_widget (WirelessSecurity *parent) get_widget (WirelessSecurity *parent)
{ {
@ -181,24 +190,30 @@ ws_wpa_psk_new (NMConnection *connection, gboolean secrets_only)
WirelessSecurity *parent; WirelessSecurity *parent;
WirelessSecurityWPAPSK *self; WirelessSecurityWPAPSK *self;
NMSetting *setting = NULL; NMSetting *setting = NULL;
g_autoptr(GError) error = NULL;
parent = wireless_security_init (sizeof (WirelessSecurityWPAPSK), parent = wireless_security_init (sizeof (WirelessSecurityWPAPSK),
get_widget, get_widget,
validate, validate,
add_to_size_group, add_to_size_group,
fill_connection, fill_connection,
NULL, destroy);
"/org/gnome/ControlCenter/network/ws-wpa-psk.ui");
if (!parent) if (!parent)
return NULL; return NULL;
self = (WirelessSecurityWPAPSK *) parent; self = (WirelessSecurityWPAPSK *) parent;
self->grid = GTK_GRID (gtk_builder_get_object (parent->builder, "grid")); self->builder = gtk_builder_new ();
self->password_entry = GTK_ENTRY (gtk_builder_get_object (parent->builder, "password_entry")); if (!gtk_builder_add_from_resource (self->builder, "/org/gnome/ControlCenter/network/ws-wpa-psk.ui", &error)) {
self->password_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "password_label")); g_warning ("Couldn't load UI builder resource: %s", error->message);
self->show_password_check = GTK_CHECK_BUTTON (gtk_builder_get_object (parent->builder, "show_password_check")); return NULL;
self->type_combo = GTK_COMBO_BOX (gtk_builder_get_object (parent->builder, "type_combo")); }
self->type_label = GTK_LABEL (gtk_builder_get_object (parent->builder, "type_label"));
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->type_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->builder, "type_combo"));
self->type_label = GTK_LABEL (gtk_builder_get_object (self->builder, "type_label"));
wireless_security_set_adhoc_compatible (parent, FALSE); wireless_security_set_adhoc_compatible (parent, FALSE);