diff options
author | Richard Hughes <richard@hughsie.com> | 2010-12-17 10:58:56 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2010-12-17 11:02:03 +0000 |
commit | 1ce24314ad08ec8ab92e38dae6924d82d378d793 (patch) | |
tree | 218385ccc415b7612be2057d436a9fee3e9d2c81 | |
parent | 39d9ed99767bd84b1cccaccb5336f2e829cac977 (diff) |
network: teach the panel about nameservers and routes
-rw-r--r-- | panels/network/cc-network-panel.c | 305 | ||||
-rw-r--r-- | panels/network/network.ui | 255 |
2 files changed, 507 insertions, 53 deletions
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c index 91db9e1cc..14462f885 100644 --- a/panels/network/cc-network-panel.c +++ b/panels/network/cc-network-panel.c @@ -648,7 +648,6 @@ panel_got_device_proxy_ip4_cb (GObject *source_object, gpointer user_data) { GError *error = NULL; - GVariant *result = NULL; PanelDeviceItem *item = (PanelDeviceItem *) user_data; item->proxy_ip4 = g_dbus_proxy_new_for_bus_finish (res, &error); @@ -658,20 +657,10 @@ panel_got_device_proxy_ip4_cb (GObject *source_object, goto out; } - /* get the Address */ - result = g_dbus_proxy_get_cached_property (item->proxy_ip4, "Addresses"); - //Addresses = array of (array of uint32) - //Routes = array of (array of uint32) - //Domains = array of string - //Nameservers = array of uint32 - //WinsServers = array of uint32 - /* add device if there are no more pending actions */ if (--item->device_add_refcount == 0) panel_add_device_to_listview (item); out: - if (result != NULL) - g_variant_unref (result); return; } @@ -684,7 +673,6 @@ panel_got_device_proxy_ip6_cb (GObject *source_object, gpointer user_data) { GError *error = NULL; - GVariant *result = NULL; PanelDeviceItem *item = (PanelDeviceItem *) user_data; item->proxy_ip6 = g_dbus_proxy_new_for_bus_finish (res, &error); @@ -694,19 +682,10 @@ panel_got_device_proxy_ip6_cb (GObject *source_object, goto out; } - /* get the Address */ - result = g_dbus_proxy_get_cached_property (item->proxy_ip6, "Addresses"); - //Addresses = array of (struct of (array of (byte), uint32, array of (byte))) - //Routes = array of (struct of (array of (byte), uint32, array of (byte))) - //Nameservers = array of (array of byte) - //Domains = array of string - /* add device if there are no more pending actions */ if (--item->device_add_refcount == 0) panel_add_device_to_listview (item); out: - if (result != NULL) - g_variant_unref (result); return; } @@ -1121,14 +1100,15 @@ panel_set_label_for_variant_ipv4 (GtkWidget *widget, GVariant *variant) } /** - * panel_set_label_for_variant_ipv4_array: + * panel_set_label_for_variant_ipv4_array_array: * * This is some crazy shit. NM sends us the following data type: * "array of [array of [uint32]]" **/ -static void -panel_set_label_for_variant_ipv4_array (GtkWidget *widget, GVariant *variant) +static gboolean +panel_set_label_for_variant_ipv4_array_array (GtkWidget *widget, GVariant *variant) { + gboolean ret; gchar *tmp; gsize len; GString *string; @@ -1141,10 +1121,6 @@ panel_set_label_for_variant_ipv4_array (GtkWidget *widget, GVariant *variant) /* get an iter of the outer array */ len = g_variant_iter_init (&iter, variant); - if (len != 1) { - g_warning ("invalid ipv4 address?!"); - goto out; - } /* unwrap the outer array */ outer = g_variant_iter_next_value (&iter); @@ -1182,17 +1158,68 @@ panel_set_label_for_variant_ipv4_array (GtkWidget *widget, GVariant *variant) /* set label */ gtk_label_set_label (GTK_LABEL (widget), string->str); out: + ret = string->len > 0; g_string_free (string, TRUE); + return ret; } /** * panel_set_label_for_variant_ipv4_array: * + * TNM sends us the following data type "array of [uint32]" + **/ +static void +panel_set_label_for_variant_ipv4_array (GtkWidget *widget, GVariant *variant) +{ + gchar *tmp; + gsize len; + GString *string; + guint i; + GVariant *value; + + string = g_string_new (""); + + /* unwrap the array */ + len = g_variant_n_children (variant); + if (len == 0) { + g_warning ("invalid ipv4 address on inner?!"); + goto out; + } + for (i=0; i<len; i++) { + value = g_variant_get_child_value (variant, i); + tmp = panel_ipv4_to_string (value); + + /* ignore invalid entries: TODO why? */ + if (g_str_has_suffix (tmp, ".0")) { + g_debug ("ignoring IP %s", tmp); + } else { + g_debug ("got IP %s", tmp); + g_string_append_printf (string, + "%s, ", + tmp); + } + g_free (tmp); + g_variant_unref (value); + } + + /* remove trailing space comma */ + if (string->len > 2) + g_string_set_size (string, string->len - 2); + + /* set label */ + gtk_label_set_label (GTK_LABEL (widget), string->str); +out: + g_string_free (string, TRUE); +} + +/** + * panel_set_label_for_variant_ipv6_prefixed_array: + * * This is some crazy shit. NM sends us the following data type: * "array of [struct of (array of [byte], uint32, array of [byte])]" **/ -static void -panel_set_label_for_variant_ipv6_array (GtkWidget *widget, GVariant *variant) +static gboolean +panel_set_label_for_variant_ipv6_prefixed_array (GtkWidget *widget, GVariant *variant) { GString *string; gchar *tmp; @@ -1201,13 +1228,14 @@ panel_set_label_for_variant_ipv6_array (GtkWidget *widget, GVariant *variant) gsize len; GVariant *address; guint32 prefix; + gboolean ret = FALSE; string = g_string_new (""); /* get an iter of the outer array */ len = g_variant_iter_init (&iter, variant); if (len == 0) { - g_warning ("invalid ipv6 address?!"); + g_debug ("no ipv6 address"); goto out; } @@ -1231,7 +1259,57 @@ panel_set_label_for_variant_ipv6_array (GtkWidget *widget, GVariant *variant) /* set label */ gtk_label_set_label (GTK_LABEL (widget), string->str); out: + ret = string->len > 0; g_string_free (string, TRUE); + return ret; +} + +/** + * panel_set_label_for_variant_ipv6_array: + * + * NM sends us the following data type: + * "array of [array of (byte)]" + **/ +static gboolean +panel_set_label_for_variant_ipv6_array (GtkWidget *widget, GVariant *variant) +{ + gboolean ret = FALSE; + GString *string; + gchar *tmp; + GVariantIter iter; + gsize len; + GVariant *address; + + string = g_string_new (""); + + /* get an iter of the outer array */ + len = g_variant_iter_init (&iter, variant); + if (len == 0) { + g_debug ("no ipv6 address"); + goto out; + } + + /* unwrap the outer array */ + address = g_variant_iter_next_value (&iter); + while (address != NULL) { + + /* format the address and add to the string */ + tmp = panel_ipv6_to_string (address); + g_string_append_printf (string, "%s, ", tmp); + + address = g_variant_iter_next_value (&iter); + } + + /* remove trailing space comma */ + if (string->len > 2) + g_string_set_size (string, string->len - 2); + + /* set label */ + gtk_label_set_label (GTK_LABEL (widget), string->str); +out: + ret = string->len > 0; + g_string_free (string, TRUE); + return ret; } /** @@ -1240,10 +1318,13 @@ out: static void panel_populate_wired_device (PanelDeviceItem *item) { + gboolean ret; GtkWidget *widget; + GVariant *hw_address; GVariant *ip4 = NULL; GVariant *ip6 = NULL; - GVariant *hw_address; + GVariant *nameservers = NULL; + GVariant *routes = NULL; GVariant *speed; CcNetworkPanelPrivate *priv = item->panel->priv; @@ -1252,26 +1333,99 @@ panel_populate_wired_device (PanelDeviceItem *item) "hbox_wired_ip6")); if (item->proxy_ip6 != NULL) { gtk_widget_show (widget); + + /* array of (ipdata, prefix, route) */ ip6 = g_dbus_proxy_get_cached_property (item->proxy_ip6, "Addresses"); widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "label_wired_ip6")); - panel_set_label_for_variant_ipv6_array (widget, ip6); + panel_set_label_for_variant_ipv6_prefixed_array (widget, ip6); + + /* array of (ipdata, prefix, route) */ + routes = g_dbus_proxy_get_cached_property (item->proxy_ip6, + "Routes"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wired_route")); + ret = panel_set_label_for_variant_ipv6_prefixed_array (widget, routes); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_route")); + gtk_widget_set_visible (widget, ret); + + /* array of ipdata */ + nameservers = g_dbus_proxy_get_cached_property (item->proxy_ip6, + "Nameservers"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wired_dns")); + ret = panel_set_label_for_variant_ipv6_array (widget, nameservers); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_dns")); + gtk_widget_set_visible (widget, ret); + + /* Domains = array of string */ + //no widget + + /* i'm not sure how to get this yet */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_subnet")); + gtk_widget_hide (widget); } else { gtk_widget_hide (widget); } /* set IPv4 */ - widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, - "label_wired_ip4")); if (item->proxy_ip4 != NULL) { + /* array of (array of uint32) */ ip4 = g_dbus_proxy_get_cached_property (item->proxy_ip4, "Addresses"); - panel_set_label_for_variant_ipv4_array (widget, ip4); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wired_ip4")); + panel_set_label_for_variant_ipv4_array_array (widget, ip4); + + /* array of (array of uint32) */ + routes = g_dbus_proxy_get_cached_property (item->proxy_ip4, + "Routes"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wired_route")); + ret = panel_set_label_for_variant_ipv4_array_array (widget, routes); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_route")); + gtk_widget_set_visible (widget, ret); + + /* array of uint32 */ + nameservers = g_dbus_proxy_get_cached_property (item->proxy_ip4, + "Nameservers"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wired_dns")); + panel_set_label_for_variant_ipv4_array (widget, nameservers); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_dns")); + gtk_widget_show (widget); + + /* Domains = array of string */ + //no widget + /* WinsServers = array of uint32 */ + //no widget + + /* i'm not sure how to get this yet */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_subnet")); + gtk_widget_hide (widget); + } else { ip4 = g_dbus_proxy_get_cached_property (item->proxy, "Ip4Address"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wired_ip4")); panel_set_label_for_variant_ipv4 (widget, ip4); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_route")); + gtk_widget_hide (widget); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_dns")); + gtk_widget_hide (widget); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wired_subnet")); + gtk_widget_hide (widget); } /* set MAC */ @@ -1291,6 +1445,10 @@ panel_populate_wired_device (PanelDeviceItem *item) g_variant_unref (ip4); if (ip6 != NULL) g_variant_unref (ip6); + if (routes != NULL) + g_variant_unref (routes); + if (nameservers != NULL) + g_variant_unref (nameservers); g_variant_unref (hw_address); g_variant_unref (speed); } @@ -1301,11 +1459,14 @@ panel_populate_wired_device (PanelDeviceItem *item) static void panel_populate_wireless_device (PanelDeviceItem *item) { + gboolean ret; GtkWidget *widget; GVariant *bitrate; GVariant *hw_address; GVariant *ip4; GVariant *ip6; + GVariant *nameservers = NULL; + GVariant *routes = NULL; CcNetworkPanelPrivate *priv = item->panel->priv; /* set IPv6 */ @@ -1313,26 +1474,86 @@ panel_populate_wireless_device (PanelDeviceItem *item) "hbox_wireless_ip6")); if (item->proxy_ip6 != NULL) { gtk_widget_show (widget); + + /* array of (ipdata, prefix, route) */ ip6 = g_dbus_proxy_get_cached_property (item->proxy_ip6, "Addresses"); widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "label_wireless_ip6")); - panel_set_label_for_variant_ipv6_array (widget, ip6); + panel_set_label_for_variant_ipv6_prefixed_array (widget, ip6); + + /* array of (ipdata, prefix, route) */ + routes = g_dbus_proxy_get_cached_property (item->proxy_ip6, + "Routes"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wireless_route")); + ret = panel_set_label_for_variant_ipv6_prefixed_array (widget, routes); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wireless_route")); + gtk_widget_set_visible (widget, ret); + + /* array of ipdata */ + nameservers = g_dbus_proxy_get_cached_property (item->proxy_ip6, + "Nameservers"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wireless_dns")); + ret = panel_set_label_for_variant_ipv6_array (widget, nameservers); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wireless_dns")); + gtk_widget_set_visible (widget, ret); + + /* Domains = array of string */ + //no widget } else { gtk_widget_hide (widget); } /* set IPv4 */ - widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, - "label_wireless_ip4")); if (item->proxy_ip4 != NULL) { + /* array of (array of uint32) */ ip4 = g_dbus_proxy_get_cached_property (item->proxy_ip4, "Addresses"); - panel_set_label_for_variant_ipv4_array (widget, ip4); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wireless_ip4")); + panel_set_label_for_variant_ipv4_array_array (widget, ip4); + + /* array of (array of uint32) */ + routes = g_dbus_proxy_get_cached_property (item->proxy_ip4, + "Routes"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wireless_route")); + panel_set_label_for_variant_ipv4_array_array (widget, routes); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wireless_route")); + gtk_widget_show (widget); + + /* array of uint32 */ + nameservers = g_dbus_proxy_get_cached_property (item->proxy_ip4, + "Nameservers"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wireless_dns")); + panel_set_label_for_variant_ipv4_array (widget, nameservers); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wireless_dns")); + gtk_widget_show (widget); + + /* Domains = array of string */ + //no widget + /* WinsServers = array of uint32 */ + //no widget + } else { ip4 = g_dbus_proxy_get_cached_property (item->proxy, "Ip4Address"); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "label_wireless_ip4")); panel_set_label_for_variant_ipv4 (widget, ip4); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wireless_route")); + gtk_widget_hide (widget); + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "hbox_wireless_dns")); + gtk_widget_hide (widget); } /* set MAC */ @@ -1351,6 +1572,10 @@ panel_populate_wireless_device (PanelDeviceItem *item) g_variant_unref (ip4); if (ip6 != NULL) g_variant_unref (ip6); + if (routes != NULL) + g_variant_unref (routes); + if (nameservers != NULL) + g_variant_unref (nameservers); g_variant_unref (hw_address); g_variant_unref (bitrate); } diff --git a/panels/network/network.ui b/panels/network/network.ui index eaa26e8a3..24aa761b4 100644 --- a/panels/network/network.ui +++ b/panels/network/network.ui @@ -374,6 +374,141 @@ <property name="position">3</property> </packing> </child> + <child> + <object class="GtkHBox" id="hbox_wired_subnet"> + <property name="visible">True</property> + <property name="spacing">9</property> + <child> + <object class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Subnet Mast:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_wired_subnet"> + <property name="visible">True</property> + <property name="label">127.0.0.1</property> + <property name="selectable">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox_wired_route"> + <property name="visible">True</property> + <property name="spacing">9</property> + <child> + <object class="GtkHBox" id="hbox19"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Default Route:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_wired_route"> + <property name="visible">True</property> + <property name="label">127.0.0.1</property> + <property name="selectable">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox_wired_dns"> + <property name="visible">True</property> + <property name="spacing">9</property> + <child> + <object class="GtkHBox" id="hbox21"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes">DNS:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_wired_dns"> + <property name="visible">True</property> + <property name="label">127.0.0.1</property> + <property name="selectable">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> </object> </child> <child type="tab"> @@ -526,6 +661,50 @@ </packing> </child> <child> + <object class="GtkHBox" id="hbox15"> + <property name="visible">True</property> + <property name="spacing">9</property> + <child> + <object class="GtkHBox" id="hbox16"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="label" translatable="yes">Network Name:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="combobox_network_name"> + <property name="visible">True</property> + <property name="model">liststore_wireless_network</property> + <property name="has_entry">True</property> + <property name="entry_text_column">1</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> <object class="GtkHBox" id="hbox_wireless_ip4"> <property name="visible">True</property> <property name="spacing">9</property> @@ -567,7 +746,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -612,20 +791,20 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> <child> - <object class="GtkHBox" id="hbox15"> + <object class="GtkHBox" id="hbox_wireless_route"> <property name="visible">True</property> <property name="spacing">9</property> <child> - <object class="GtkHBox" id="hbox16"> + <object class="GtkHBox" id="hbox23"> <property name="visible">True</property> <child> - <object class="GtkLabel" id="label15"> + <object class="GtkLabel" id="label8"> <property name="visible">True</property> - <property name="label" translatable="yes">Network Name:</property> + <property name="label" translatable="yes">Default Route:</property> </object> <packing> <property name="expand">False</property> @@ -642,14 +821,14 @@ </packing> </child> <child> - <object class="GtkComboBox" id="combobox_network_name"> + <object class="GtkLabel" id="label_wireless_route"> <property name="visible">True</property> - <property name="model">liststore_wireless_network</property> - <property name="has_entry">True</property> - <property name="entry_text_column">1</property> + <property name="label">127.0.0.1</property> <property name="selectable">True</property> </object> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> @@ -657,7 +836,52 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">5</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox_wireless_dns"> + <property name="visible">True</property> + <property name="spacing">9</property> + <child> + <object class="GtkHBox" id="hbox25"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="label" translatable="yes">DNS:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_wireless_dns"> + <property name="visible">True</property> + <property name="label">127.0.0.1</property> + <property name="selectable">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> </packing> </child> </object> @@ -999,8 +1223,8 @@ <child> <object class="GtkLabel" id="label_vpn_group_password"> <property name="visible">True</property> - <property name="selectable">True</property> <property name="label">***********</property> + <property name="selectable">True</property> </object> <packing> <property name="expand">False</property> @@ -1044,8 +1268,8 @@ <child> <object class="GtkLabel" id="label_vpn_username"> <property name="visible">True</property> - <property name="selectable">True</property> <property name="label">smithy</property> + <property name="selectable">True</property> </object> <packing> <property name="expand">False</property> @@ -1578,6 +1802,11 @@ <widget name="hbox47"/> <widget name="hbox49"/> <widget name="hbox3"/> + <widget name="hbox13"/> + <widget name="hbox19"/> + <widget name="hbox21"/> + <widget name="hbox23"/> + <widget name="hbox25"/> </widgets> </object> <object class="GtkListStore" id="liststore_proxy_method"> |