summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2021-11-29 10:37:01 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2021-12-14 22:34:21 -0300
commitefbad6eb505dad57776fa8e7b8b1c5209dc336af (patch)
tree59baef20f889719bb7e801daae66c956208b8c27
parentd189a67000f1920ecab7dcb4e26425dde2b1ca84 (diff)
downloadgnome-control-center-efbad6eb505dad57776fa8e7b8b1c5209dc336af.tar.gz
network: Port to GTK4
Boy this was hard. To ease the pain of porting wireless-security to GTK4, add a new WsFileChooserButton class that mimics the behavior of a button that triggers a filechooser, as per the migration guide suggests. There were lots of GtkGrids, so the diff is particularly horrendous. Sorry. This needs serious testing before landing.
-rw-r--r--meson.build2
-rw-r--r--panels/meson.build2
-rw-r--r--panels/network/cc-network-panel.c55
-rw-r--r--panels/network/cc-network-panel.ui91
-rw-r--r--panels/network/cc-wifi-connection-list.c31
-rw-r--r--panels/network/cc-wifi-connection-list.h6
-rw-r--r--panels/network/cc-wifi-connection-row.c25
-rw-r--r--panels/network/cc-wifi-connection-row.h4
-rw-r--r--panels/network/cc-wifi-connection-row.ui93
-rw-r--r--panels/network/cc-wifi-hotspot-dialog.c32
-rw-r--r--panels/network/cc-wifi-hotspot-dialog.h2
-rw-r--r--panels/network/cc-wifi-hotspot-dialog.ui73
-rw-r--r--panels/network/cc-wifi-panel.c50
-rw-r--r--panels/network/cc-wifi-panel.ui408
-rw-r--r--panels/network/connection-editor/8021x-security-page.ui41
-rw-r--r--panels/network/connection-editor/ce-ip-address-entry.c4
-rw-r--r--panels/network/connection-editor/ce-netmask-entry.c6
-rw-r--r--panels/network/connection-editor/ce-page-8021x-security.c17
-rw-r--r--panels/network/connection-editor/ce-page-details.c12
-rw-r--r--panels/network/connection-editor/ce-page-ethernet.c20
-rw-r--r--panels/network/connection-editor/ce-page-ip4.c250
-rw-r--r--panels/network/connection-editor/ce-page-ip4.h4
-rw-r--r--panels/network/connection-editor/ce-page-ip6.c256
-rw-r--r--panels/network/connection-editor/ce-page-ip6.h4
-rw-r--r--panels/network/connection-editor/ce-page-security.c17
-rw-r--r--panels/network/connection-editor/ce-page-vpn.c26
-rw-r--r--panels/network/connection-editor/ce-page-wifi.c24
-rw-r--r--panels/network/connection-editor/ce-page.c8
-rw-r--r--panels/network/connection-editor/connection-editor.ui60
-rw-r--r--panels/network/connection-editor/details-page.ui377
-rw-r--r--panels/network/connection-editor/ethernet-page.ui128
-rw-r--r--panels/network/connection-editor/ip4-page.ui593
-rw-r--r--panels/network/connection-editor/ip6-page.ui622
-rw-r--r--panels/network/connection-editor/net-connection-editor.c78
-rw-r--r--panels/network/connection-editor/security-page.ui42
-rw-r--r--panels/network/connection-editor/vpn-helpers.c103
-rw-r--r--panels/network/connection-editor/vpn-page.ui31
-rw-r--r--panels/network/connection-editor/wifi-page.ui99
-rw-r--r--panels/network/net-device-ethernet.c66
-rw-r--r--panels/network/net-device-mobile.c5
-rw-r--r--panels/network/net-device-wifi.c143
-rw-r--r--panels/network/net-device-wifi.h3
-rw-r--r--panels/network/net-proxy.c29
-rw-r--r--panels/network/net-proxy.h4
-rw-r--r--panels/network/net-vpn.c2
-rw-r--r--panels/network/network-bluetooth.ui33
-rw-r--r--panels/network/network-dialogs.c4
-rw-r--r--panels/network/network-ethernet.ui93
-rw-r--r--panels/network/network-mobile.ui328
-rw-r--r--panels/network/network-proxy.ui635
-rw-r--r--panels/network/network-vpn.ui43
-rw-r--r--panels/network/network-wifi.ui119
-rw-r--r--panels/network/wireless-security/eap-method-fast.c57
-rw-r--r--panels/network/wireless-security/eap-method-fast.ui102
-rw-r--r--panels/network/wireless-security/eap-method-leap.c22
-rw-r--r--panels/network/wireless-security/eap-method-leap.ui57
-rw-r--r--panels/network/wireless-security/eap-method-peap.c55
-rw-r--r--panels/network/wireless-security/eap-method-peap.ui112
-rw-r--r--panels/network/wireless-security/eap-method-simple.c24
-rw-r--r--panels/network/wireless-security/eap-method-simple.ui68
-rw-r--r--panels/network/wireless-security/eap-method-tls.c109
-rw-r--r--panels/network/wireless-security/eap-method-tls.ui138
-rw-r--r--panels/network/wireless-security/eap-method-ttls.c59
-rw-r--r--panels/network/wireless-security/eap-method-ttls.ui112
-rw-r--r--panels/network/wireless-security/eap-method.c77
-rw-r--r--panels/network/wireless-security/eap-method.h2
-rw-r--r--panels/network/wireless-security/helpers.c2
-rw-r--r--panels/network/wireless-security/meson.build2
-rw-r--r--panels/network/wireless-security/ws-dynamic-wep.c12
-rw-r--r--panels/network/wireless-security/ws-dynamic-wep.ui37
-rw-r--r--panels/network/wireless-security/ws-file-chooser-button.c268
-rw-r--r--panels/network/wireless-security/ws-file-chooser-button.h44
-rw-r--r--panels/network/wireless-security/ws-leap.c12
-rw-r--r--panels/network/wireless-security/ws-leap.ui59
-rw-r--r--panels/network/wireless-security/ws-sae.c8
-rw-r--r--panels/network/wireless-security/ws-sae.ui55
-rw-r--r--panels/network/wireless-security/ws-wep-key.c14
-rw-r--r--panels/network/wireless-security/ws-wep-key.ui85
-rw-r--r--panels/network/wireless-security/ws-wpa-eap.c12
-rw-r--r--panels/network/wireless-security/ws-wpa-eap.ui37
-rw-r--r--panels/network/wireless-security/ws-wpa-psk.c8
-rw-r--r--panels/network/wireless-security/ws-wpa-psk.ui65
-rw-r--r--shell/cc-panel-loader.c10
83 files changed, 3017 insertions, 3910 deletions
diff --git a/meson.build b/meson.build
index 5075eacfc..f00280e9e 100644
--- a/meson.build
+++ b/meson.build
@@ -210,7 +210,7 @@ if host_is_linux
# network manager
network_manager_deps = [
dependency('libnm', version: '>= 1.24.0'),
- dependency('libnma', version: '>= 1.8.0'),
+ dependency('libnma-gtk4', version: '>= 1.8.0'),
dependency('mm-glib', version: '>= 0.7')
]
endif
diff --git a/panels/meson.build b/panels/meson.build
index 5382bb034..3fec950e3 100644
--- a/panels/meson.build
+++ b/panels/meson.build
@@ -32,7 +32,7 @@ panels = [
]
if host_is_linux
-# panels += ['network']
+ panels += ['network']
endif
if host_is_linux_not_s390
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index bd4e55df8..1bf09e8a8 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -426,8 +426,7 @@ panel_add_device (CcNetworkPanel *self, NMDevice *device)
case NM_DEVICE_TYPE_ETHERNET:
case NM_DEVICE_TYPE_INFINIBAND:
device_ethernet = net_device_ethernet_new (self->client, device);
- gtk_widget_show (GTK_WIDGET (device_ethernet));
- gtk_container_add (GTK_CONTAINER (self->box_wired), GTK_WIDGET (device_ethernet));
+ gtk_box_append (GTK_BOX (self->box_wired), GTK_WIDGET (device_ethernet));
g_ptr_array_add (self->ethernet_devices, device_ethernet);
g_hash_table_insert (self->nm_device_to_device, device, device_ethernet);
break;
@@ -453,15 +452,13 @@ panel_add_device (CcNetworkPanel *self, NMDevice *device)
}
device_mobile = net_device_mobile_new (self->client, device, modem_object);
- gtk_widget_show (GTK_WIDGET (device_mobile));
- gtk_container_add (GTK_CONTAINER (self->box_wired), GTK_WIDGET (device_mobile));
+ gtk_box_append (GTK_BOX (self->box_wired), GTK_WIDGET (device_mobile));
g_ptr_array_add (self->mobile_devices, device_mobile);
g_hash_table_insert (self->nm_device_to_device, device, device_mobile);
break;
case NM_DEVICE_TYPE_BT:
device_bluetooth = net_device_bluetooth_new (self->client, device);
- gtk_widget_show (GTK_WIDGET (device_bluetooth));
- gtk_container_add (GTK_CONTAINER (self->box_bluetooth), GTK_WIDGET (device_bluetooth));
+ gtk_box_append (GTK_BOX (self->box_bluetooth), GTK_WIDGET (device_bluetooth));
g_ptr_array_add (self->bluetooth_devices, device_bluetooth);
g_hash_table_insert (self->nm_device_to_device, device, device_bluetooth);
@@ -496,7 +493,7 @@ panel_remove_device (CcNetworkPanel *self, NMDevice *device)
g_ptr_array_remove (self->mobile_devices, net_device);
g_hash_table_remove (self->nm_device_to_device, device);
- gtk_widget_destroy (net_device);
+ gtk_box_remove (GTK_BOX (gtk_widget_get_parent (net_device)), net_device);
/* update vpn widgets */
update_vpn_section (self);
@@ -614,8 +611,7 @@ panel_add_vpn_device (CcNetworkPanel *self, NMConnection *connection)
}
net_vpn = net_vpn_new (self->client, connection);
- gtk_widget_show (GTK_WIDGET (net_vpn));
- gtk_container_add (GTK_CONTAINER (self->box_vpn), GTK_WIDGET (net_vpn));
+ gtk_box_append (GTK_BOX (self->box_vpn), GTK_WIDGET (net_vpn));
/* store in the devices array */
g_ptr_array_add (self->vpns, net_vpn);
@@ -657,7 +653,7 @@ client_connection_removed_cb (CcNetworkPanel *self, NMConnection *connection)
NetVpn *vpn = g_ptr_array_index (self->vpns, i);
if (net_vpn_get_connection (vpn) == connection) {
g_ptr_array_remove (self->vpns, vpn);
- gtk_widget_destroy (GTK_WIDGET (vpn));
+ gtk_box_remove (GTK_BOX (self->box_vpn), GTK_WIDGET (vpn));
update_vpn_section (self);
return;
}
@@ -676,27 +672,25 @@ panel_check_network_manager_version (CcNetworkPanel *self)
GtkWidget *label;
g_autofree gchar *markup = NULL;
- gtk_container_remove (GTK_CONTAINER (self), gtk_bin_get_child (GTK_BIN (self)));
-
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 20);
gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
gtk_widget_set_vexpand (box, TRUE);
- gtk_container_add (GTK_CONTAINER (self), box);
+ adw_bin_set_child (ADW_BIN (self), box);
label = gtk_label_new (_("Oops, something has gone wrong. Please contact your software vendor."));
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_widget_set_vexpand (label, TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_widget_set_valign (label, GTK_ALIGN_END);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+ gtk_box_append (GTK_BOX (box), label);
markup = g_strdup_printf ("<small><tt>%s</tt></small>",
_("NetworkManager needs to be running."));
label = gtk_label_new (NULL);
+ gtk_widget_set_vexpand (label, TRUE);
gtk_label_set_markup (GTK_LABEL (label), markup);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_widget_set_valign (label, GTK_ALIGN_START);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- gtk_widget_show_all (box);
+ gtk_box_append (GTK_BOX (box), label);
} else {
manager_running (self);
}
@@ -709,17 +703,19 @@ create_connection_cb (GtkWidget *button,
NetConnectionEditor *editor;
editor = net_connection_editor_new (NULL, NULL, NULL, self->client);
- gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
+ gtk_window_set_transient_for (GTK_WINDOW (editor),
+ GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (self))));
gtk_window_present (GTK_WINDOW (editor));
}
static void
-on_toplevel_map (GtkWidget *widget,
- CcNetworkPanel *self)
+cc_network_panel_map (GtkWidget *widget)
{
+ GTK_WIDGET_CLASS (cc_network_panel_parent_class)->map (widget);
+
/* is the user compiling against a new version, but not running
* the daemon? */
- panel_check_network_manager_version (self);
+ panel_check_network_manager_version (CC_NETWORK_PANEL (widget));
}
@@ -732,6 +728,8 @@ cc_network_panel_class_init (CcNetworkPanelClass *klass)
panel_class->get_help_uri = cc_network_panel_get_help_uri;
+ widget_class->map = cc_network_panel_map;
+
object_class->get_property = cc_network_panel_get_property;
object_class->set_property = cc_network_panel_set_property;
object_class->dispose = cc_network_panel_dispose;
@@ -754,11 +752,10 @@ cc_network_panel_class_init (CcNetworkPanelClass *klass)
static void
cc_network_panel_init (CcNetworkPanel *self)
{
- NetProxy *proxy;
- g_autoptr(GError) error = NULL;
- GtkWidget *toplevel;
g_autoptr(GDBusConnection) system_bus = NULL;
+ g_autoptr(GError) error = NULL;
const GPtrArray *connections;
+ NetProxy *proxy;
guint i;
g_resources_register (cc_network_get_resource ());
@@ -773,8 +770,7 @@ cc_network_panel_init (CcNetworkPanel *self)
/* add the virtual proxy device */
proxy = net_proxy_new ();
- gtk_widget_show (GTK_WIDGET (proxy));
- gtk_container_add (GTK_CONTAINER (self->box_proxy), GTK_WIDGET (proxy));
+ gtk_box_append (GTK_BOX (self->box_proxy), GTK_WIDGET (proxy));
/* Create and store a NMClient instance if it doesn't exist yet */
if (!cc_object_storage_has_object (CC_OBJECT_NMCLIENT)) {
@@ -815,9 +811,6 @@ cc_network_panel_init (CcNetworkPanel *self)
g_signal_connect_object (self->client, NM_CLIENT_CONNECTION_REMOVED,
G_CALLBACK (client_connection_removed_cb), self, G_CONNECT_SWAPPED);
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- g_signal_connect_after (toplevel, "map", G_CALLBACK (on_toplevel_map), self);
-
/* Cold-plug existing connections */
connections = nm_client_get_connections (self->client);
if (connections) {
diff --git a/panels/network/cc-network-panel.ui b/panels/network/cc-network-panel.ui
index 84735fdbf..f11044ad4 100644
--- a/panels/network/cc-network-panel.ui
+++ b/panels/network/cc-network-panel.ui
@@ -2,30 +2,20 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="CcNetworkPanel" parent="CcPanel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<child>
<object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hscrollbar_policy">never</property>
<child>
<object class="GtkViewport">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="shadow_type">none</property>
<child>
- <object class="HdyClamp">
- <property name="visible">True</property>
+ <object class="AdwClamp">
<property name="margin_top">32</property>
<property name="margin_bottom">32</property>
<property name="margin_start">12</property>
<property name="margin_end">12</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="spacing">12</property>
<property name="orientation">vertical</property>
@@ -34,33 +24,25 @@
<!-- Each GtkBox below will contain GtkStacks from the NetDevices -->
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="spacing">24</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="box_wired">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">24</property>
</object>
</child>
<child>
<object class="GtkBox" id="container_bluetooth">
- <property name="can_focus">False</property>
+ <property name="visible">False</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<!-- "Other Devices" header -->
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Other Devices</property>
@@ -72,36 +54,22 @@
</object>
</child>
<child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkBox" id="box_bluetooth">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- </object>
- </child>
+ <object class="GtkBox" id="box_bluetooth">
+ <property name="orientation">vertical</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<!-- VPN header -->
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">VPN</property>
@@ -112,57 +80,42 @@
</child>
<child>
<object class="GtkButton">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="relief">none</property>
+ <property name="icon_name">list-add-symbolic</property>
+ <style>
+ <class name="flat" />
+ </style>
<signal name="clicked" handler="create_connection_cb" object="CcNetworkPanel" swapped="no" />
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">list-add-symbolic</property>
- </object>
- </child>
</object>
</child>
</object>
</child>
+
<child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkBox" id="box_vpn">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
+ <object class="GtkBox" id="box_vpn">
+ <property name="orientation">vertical</property>
- <!-- "Not set up" row -->
+ <!-- "Not set up" row -->
+ <child>
+ <object class="GtkListBox" id="empty_listbox">
+ <property name="selection_mode">none</property>
+ <style>
+ <class name="content" />
+ </style>
<child>
- <object class="GtkListBox" id="empty_listbox">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="selection_mode">none</property>
- <child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="activatable">False</property>
- <property name="title" translatable="yes">Not set up</property>
- </object>
- </child>
+ <object class="AdwActionRow">
+ <property name="activatable">False</property>
+ <property name="title" translatable="yes">Not set up</property>
</object>
</child>
</object>
</child>
</object>
</child>
+
</object>
</child>
<child>
<object class="GtkBox" id="box_proxy">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
</object>
</child>
diff --git a/panels/network/cc-wifi-connection-list.c b/panels/network/cc-wifi-connection-list.c
index ff91892c2..c97128200 100644
--- a/panels/network/cc-wifi-connection-list.c
+++ b/panels/network/cc-wifi-connection-list.c
@@ -20,7 +20,9 @@
struct _CcWifiConnectionList
{
- GtkListBox parent_instance;
+ AdwBin parent_instance;
+
+ GtkListBox *listbox;
guint freeze_count;
gboolean updating;
@@ -59,7 +61,7 @@ static void on_device_ap_removed_cb (CcWifiConnectionList *self,
static void on_row_configured_cb (CcWifiConnectionList *self,
CcWifiConnectionRow *row);
-G_DEFINE_TYPE (CcWifiConnectionList, cc_wifi_connection_list, GTK_TYPE_LIST_BOX)
+G_DEFINE_TYPE (CcWifiConnectionList, cc_wifi_connection_list, ADW_TYPE_BIN)
enum
{
@@ -127,8 +129,7 @@ cc_wifi_connection_list_row_add (CcWifiConnectionList *self,
connection,
aps,
self->checkable);
- gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (res));
- gtk_widget_show (GTK_WIDGET (res));
+ gtk_list_box_append (self->listbox, GTK_WIDGET (res));
g_signal_connect_object (res, "configure", G_CALLBACK (on_row_configured_cb), self, G_CONNECT_SWAPPED);
@@ -153,7 +154,7 @@ clear_widget (CcWifiConnectionList *self)
while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &row))
{
g_hash_table_iter_remove (&iter);
- gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (row));
+ gtk_list_box_remove (self->listbox, GTK_WIDGET (row));
}
/* Remove all connection rows */
@@ -164,8 +165,7 @@ clear_widget (CcWifiConnectionList *self)
row = g_ptr_array_index (self->connections_row, i);
g_ptr_array_index (self->connections_row, i) = NULL;
- gtk_container_remove (GTK_CONTAINER (self),
- GTK_WIDGET (row));
+ gtk_list_box_remove (self->listbox, GTK_WIDGET (row));
}
/* Reset the internal state */
@@ -404,7 +404,7 @@ on_device_ap_removed_cb (CcWifiConnectionList *self,
if (self->hide_unavailable)
{
g_ptr_array_index (self->connections_row, i) = NULL;
- gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (row));
+ gtk_list_box_remove (self->listbox, GTK_WIDGET (row));
}
}
}
@@ -425,7 +425,7 @@ on_device_ap_removed_cb (CcWifiConnectionList *self,
if (cc_wifi_connection_row_remove_access_point (row, ap))
{
g_hash_table_remove (self->ssid_to_row, ssid);
- gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (row));
+ gtk_list_box_remove (self->listbox, GTK_WIDGET (row));
}
}
@@ -704,6 +704,11 @@ cc_wifi_connection_list_class_init (CcWifiConnectionListClass *klass)
static void
cc_wifi_connection_list_init (CcWifiConnectionList *self)
{
+ self->listbox = GTK_LIST_BOX (gtk_list_box_new ());
+ gtk_list_box_set_selection_mode (GTK_LIST_BOX (self->listbox), GTK_SELECTION_NONE);
+ gtk_widget_add_css_class (GTK_WIDGET (self->listbox), "content");
+ adw_bin_set_child (ADW_BIN (self), GTK_WIDGET (self->listbox));
+
self->hide_unavailable = TRUE;
self->show_aps = TRUE;
@@ -757,3 +762,11 @@ cc_wifi_connection_list_thaw (CcWifiConnectionList *self)
update_connections (self);
}
}
+
+GtkListBox *
+cc_wifi_connection_list_get_list_box (CcWifiConnectionList *self)
+{
+ g_return_val_if_fail (CC_IS_WIFI_CONNECTION_LIST (self), NULL);
+
+ return self->listbox;
+}
diff --git a/panels/network/cc-wifi-connection-list.h b/panels/network/cc-wifi-connection-list.h
index 67dc23d81..eeec65fd9 100644
--- a/panels/network/cc-wifi-connection-list.h
+++ b/panels/network/cc-wifi-connection-list.h
@@ -17,14 +17,14 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include <NetworkManager.h>
G_BEGIN_DECLS
#define CC_TYPE_WIFI_CONNECTION_LIST (cc_wifi_connection_list_get_type())
-G_DECLARE_FINAL_TYPE (CcWifiConnectionList, cc_wifi_connection_list, CC, WIFI_CONNECTION_LIST, GtkListBox)
+G_DECLARE_FINAL_TYPE (CcWifiConnectionList, cc_wifi_connection_list, CC, WIFI_CONNECTION_LIST, AdwBin)
CcWifiConnectionList *cc_wifi_connection_list_new (NMClient *client,
NMDeviceWifi *device,
@@ -36,4 +36,6 @@ CcWifiConnectionList *cc_wifi_connection_list_new (NMClient *client,
void cc_wifi_connection_list_freeze (CcWifiConnectionList *list);
void cc_wifi_connection_list_thaw (CcWifiConnectionList *list);
+GtkListBox *cc_wifi_connection_list_get_list_box (CcWifiConnectionList *self);
+
G_END_DECLS
diff --git a/panels/network/cc-wifi-connection-row.c b/panels/network/cc-wifi-connection-row.c
index d1ded0fc9..30011c1cc 100644
--- a/panels/network/cc-wifi-connection-row.c
+++ b/panels/network/cc-wifi-connection-row.c
@@ -21,7 +21,7 @@
struct _CcWifiConnectionRow
{
- GtkListBoxRow parent_instance;
+ AdwActionRow parent_instance;
gboolean constructed;
@@ -36,7 +36,6 @@ struct _CcWifiConnectionRow
GtkCheckButton *checkbutton;
GtkSpinner *connecting_spinner;
GtkImage *encrypted_icon;
- GtkLabel *name_label;
GtkImage *strength_icon;
};
@@ -62,7 +61,7 @@ typedef enum
NM_AP_SEC_OWE
} NMAccessPointSecurity;
-G_DEFINE_TYPE (CcWifiConnectionRow, cc_wifi_connection_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_TYPE (CcWifiConnectionRow, cc_wifi_connection_row, ADW_TYPE_ACTION_ROW)
static GParamSpec *props[PROP_LAST];
@@ -208,13 +207,13 @@ update_ui (CcWifiConnectionRow *self)
name, ssid_str);
}
- gtk_label_set_markup (self->name_label, title);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (self), title);
}
else
{
ssid = nm_access_point_get_ssid (best_ap);
title = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid));
- gtk_label_set_text (self->name_label, title);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (self), title);
}
if (active_connection)
@@ -321,20 +320,7 @@ cc_wifi_connection_row_constructed (GObject *object)
G_OBJECT_CLASS (cc_wifi_connection_row_parent_class)->constructed (object);
/* Reparent the label into the checkbox */
- if (self->checkable)
- {
- gtk_widget_set_visible (GTK_WIDGET (self->checkbutton), TRUE);
- g_object_ref (self->name_label);
- gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (GTK_WIDGET (self->name_label))),
- GTK_WIDGET (self->name_label));
- gtk_container_add (GTK_CONTAINER (self->checkbutton), GTK_WIDGET (self->name_label));
- gtk_widget_show (GTK_WIDGET (self->name_label));
- g_object_unref (self->name_label);
- }
- else
- {
- gtk_widget_set_visible (GTK_WIDGET (self->checkbutton), FALSE);
- }
+ gtk_widget_set_visible (GTK_WIDGET (self->checkbutton), self->checkable);
update_ui (CC_WIFI_CONNECTION_ROW (object));
}
@@ -456,7 +442,6 @@ cc_wifi_connection_row_class_init (CcWifiConnectionRowClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcWifiConnectionRow, checkbutton);
gtk_widget_class_bind_template_child (widget_class, CcWifiConnectionRow, connecting_spinner);
gtk_widget_class_bind_template_child (widget_class, CcWifiConnectionRow, encrypted_icon);
- gtk_widget_class_bind_template_child (widget_class, CcWifiConnectionRow, name_label);
gtk_widget_class_bind_template_child (widget_class, CcWifiConnectionRow, strength_icon);
gtk_widget_class_bind_template_callback (widget_class, configure_clicked_cb);
diff --git a/panels/network/cc-wifi-connection-row.h b/panels/network/cc-wifi-connection-row.h
index 4be230523..d632cbf20 100644
--- a/panels/network/cc-wifi-connection-row.h
+++ b/panels/network/cc-wifi-connection-row.h
@@ -17,7 +17,7 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include <NetworkManager.h>
G_BEGIN_DECLS
@@ -25,7 +25,7 @@ G_BEGIN_DECLS
typedef struct _CcWifiConnectionRow CcWifiConnectionRow;
#define CC_TYPE_WIFI_CONNECTION_ROW (cc_wifi_connection_row_get_type ())
-G_DECLARE_FINAL_TYPE (CcWifiConnectionRow, cc_wifi_connection_row, CC, WIFI_CONNECTION_ROW, GtkListBoxRow)
+G_DECLARE_FINAL_TYPE (CcWifiConnectionRow, cc_wifi_connection_row, CC, WIFI_CONNECTION_ROW, AdwActionRow)
CcWifiConnectionRow *cc_wifi_connection_row_new (NMDeviceWifi *device,
NMConnection *connection,
diff --git a/panels/network/cc-wifi-connection-row.ui b/panels/network/cc-wifi-connection-row.ui
index 39bb6db8b..6d4e618f8 100644
--- a/panels/network/cc-wifi-connection-row.ui
+++ b/panels/network/cc-wifi-connection-row.ui
@@ -2,68 +2,41 @@
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
- <template class="CcWifiConnectionRow" parent="GtkListBoxRow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
+ <template class="CcWifiConnectionRow" parent="AdwActionRow">
+ <property name="activatable">True</property>
+ <child type="prefix">
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="hexpand">True</property>
- <property name="spacing">6</property>
+ <property name="valign">center</property>
+ <property name="margin_end">6</property>
<child>
<object class="GtkCheckButton" id="checkbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
- <property name="draw_indicator">True</property>
- <child>
- <placeholder/>
- </child>
+ <property name="margin_end">6</property>
</object>
</child>
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="margin_right">6</property>
- <child>
- <object class="GtkImage" id="strength_icon">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">network-wireless-signal-excellent-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <child>
- <object class="GtkImage" id="encrypted_icon">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">end</property>
- </object>
- </child>
+ <object class="GtkImage" id="strength_icon">
+ <property name="icon_name">network-wireless-signal-excellent-symbolic</property>
+ <property name="icon_size">1</property>
</object>
</child>
<child>
- <object class="GtkLabel" id="name_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="hexpand">True</property>
- <property name="margin_top">12</property>
- <property name="margin_bottom">12</property>
- <property name="label" translatable="no">Connection/SSID</property>
- <property name="ellipsize">end</property>
+ <object class="GtkImage" id="encrypted_icon">
+ <property name="valign">end</property>
+ <property name="pixel-size">8</property>
</object>
</child>
+ </object>
+ </child>
+
+ <child type="suffix">
+ <object class="GtkBox">
+ <property name="valign">center</property>
+ <property name="margin_start">6</property>
+ <property name="spacing">6</property>
<child>
<object class="GtkLabel" id="active_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_end">6</property>
<property name="label" translatable="yes">Connected</property>
<style>
@@ -74,8 +47,6 @@
<child>
<object class="GtkSpinner" id="connecting_spinner">
<property name="name">connecting_spinner</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
@@ -83,31 +54,17 @@
<child>
<object class="GtkButton">
<property name="name">options_button</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
+ <property name="icon_name">emblem-system-symbolic</property>
<property name="halign">center</property>
<property name="valign">center</property>
<signal name="clicked" handler="configure_clicked_cb" object="CcWifiConnectionRow" swapped="yes"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">emblem-system-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="AtkObject::accessible-name" translatable="yes">Options…</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- </style>
+ <accessibility>
+ <property name="label" translatable="yes">Options…</property>
+ </accessibility>
</object>
</child>
</object>
</child>
+
</template>
</interface>
diff --git a/panels/network/cc-wifi-hotspot-dialog.c b/panels/network/cc-wifi-hotspot-dialog.c
index 57f6d52a4..0610e2458 100644
--- a/panels/network/cc-wifi-hotspot-dialog.c
+++ b/panels/network/cc-wifi-hotspot-dialog.c
@@ -29,7 +29,6 @@
#include <glib/gi18n.h>
#include <libmm-glib.h>
-#include "list-box-helper.h"
#include "cc-wifi-hotspot-dialog.h"
#include "cc-network-resources.h"
#include "ui-helpers.h"
@@ -40,7 +39,7 @@
struct _CcWifiHotspotDialog
{
- GtkMessageDialog parent_instance;
+ GtkDialog parent_instance;
GtkLabel *connection_label;
GtkEntry *name_entry;
@@ -56,7 +55,7 @@ struct _CcWifiHotspotDialog
gboolean wpa_supported; /* WPA/WPA2 supported */
};
-G_DEFINE_TYPE (CcWifiHotspotDialog, cc_wifi_hotspot_dialog, GTK_TYPE_MESSAGE_DIALOG)
+G_DEFINE_TYPE (CcWifiHotspotDialog, cc_wifi_hotspot_dialog, GTK_TYPE_DIALOG)
static gchar *
get_random_wpa_key (void)
@@ -173,7 +172,7 @@ get_secrets_cb (GObject *source_object,
key = nm_setting_wireless_security_get_wep_key (security_setting, 0);
if (key)
- gtk_entry_set_text (self->password_entry, key);
+ gtk_editable_set_text (GTK_EDITABLE (self->password_entry), key);
nm_connection_clear_secrets (self->connection);
}
@@ -187,8 +186,8 @@ wifi_hotspot_dialog_update_entries (CcWifiHotspotDialog *self)
g_assert (CC_IS_WIFI_HOTSPOT_DIALOG (self));
- gtk_entry_set_text (self->name_entry, "");
- gtk_entry_set_text (self->password_entry, "");
+ gtk_editable_set_text (GTK_EDITABLE (self->name_entry), "");
+ gtk_editable_set_text (GTK_EDITABLE (self->password_entry), "");
if (!self->connection)
return;
@@ -202,7 +201,7 @@ wifi_hotspot_dialog_update_entries (CcWifiHotspotDialog *self)
ssid_text = g_strdup (self->host_name);
if (ssid_text)
- gtk_entry_set_text (self->name_entry, ssid_text);
+ gtk_editable_set_text (GTK_EDITABLE (self->name_entry), ssid_text);
if (!NM_IS_REMOTE_CONNECTION (self->connection))
return;
@@ -242,8 +241,8 @@ hotspot_entry_changed_cb (CcWifiHotspotDialog *self)
g_assert (CC_IS_WIFI_HOTSPOT_DIALOG (self));
valid_ssid = valid_password = FALSE;
- ssid = gtk_entry_get_text (self->name_entry);
- password = gtk_entry_get_text (self->password_entry);
+ ssid = gtk_editable_get_text (GTK_EDITABLE (self->name_entry));
+ password = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
if (ssid && *ssid)
{
@@ -293,7 +292,7 @@ generate_password_clicked_cb (CcWifiHotspotDialog *self)
else
key = get_random_wep_key ();
- gtk_entry_set_text (self->password_entry, key);
+ gtk_editable_set_text (GTK_EDITABLE (self->password_entry), key);
}
static void
@@ -317,7 +316,7 @@ hotspot_update_wireless_settings (CcWifiHotspotDialog *self)
else
g_object_set (setting, "mode", "adhoc", NULL);
- ssid_text = gtk_entry_get_text (self->name_entry);
+ ssid_text = gtk_editable_get_text (GTK_EDITABLE (self->name_entry));
ssid = g_bytes_new (ssid_text, strlen (ssid_text));
g_object_set (setting, "ssid", ssid, NULL);
}
@@ -337,7 +336,7 @@ hotspot_update_wireless_security_settings (CcWifiHotspotDialog *self)
nm_setting_wireless_security_clear_protos (setting);
nm_setting_wireless_security_clear_pairwise (setting);
nm_setting_wireless_security_clear_groups (setting);
- value = gtk_entry_get_text (self->password_entry);
+ value = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
if (self->wpa_supported)
key_type = "psk";
@@ -412,7 +411,7 @@ cc_wifi_hotspot_dialog_show (GtkWidget *widget)
if (!self->connection)
if (self->host_name)
- gtk_entry_set_text (self->name_entry, self->host_name);
+ gtk_editable_set_text (GTK_EDITABLE (self->name_entry), self->host_name);
GTK_WIDGET_CLASS (cc_wifi_hotspot_dialog_parent_class)->show (widget);
}
@@ -480,14 +479,9 @@ cc_wifi_hotspot_dialog_class_init (CcWifiHotspotDialogClass *klass)
static void
cc_wifi_hotspot_dialog_init (CcWifiHotspotDialog *self)
{
- g_autofree gchar *title = NULL;
-
self->cancellable = g_cancellable_new ();
gtk_widget_init_template (GTK_WIDGET (self));
-
- title = g_strdup_printf ("<big><b>%s</b></big>", _("Turn On Wi-Fi Hotspot?"));
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), title);
}
CcWifiHotspotDialog *
@@ -496,8 +490,8 @@ cc_wifi_hotspot_dialog_new (GtkWindow *parent_window)
g_return_val_if_fail (GTK_IS_WINDOW (parent_window), NULL);
return g_object_new (CC_TYPE_WIFI_HOTSPOT_DIALOG,
+ "use-header-bar", TRUE,
"transient-for", parent_window,
- "message-type", GTK_MESSAGE_OTHER,
NULL);
}
diff --git a/panels/network/cc-wifi-hotspot-dialog.h b/panels/network/cc-wifi-hotspot-dialog.h
index 585d7f1d0..29a326dfa 100644
--- a/panels/network/cc-wifi-hotspot-dialog.h
+++ b/panels/network/cc-wifi-hotspot-dialog.h
@@ -30,7 +30,7 @@
G_BEGIN_DECLS
#define CC_TYPE_WIFI_HOTSPOT_DIALOG (cc_wifi_hotspot_dialog_get_type())
-G_DECLARE_FINAL_TYPE (CcWifiHotspotDialog, cc_wifi_hotspot_dialog, CC, WIFI_HOTSPOT_DIALOG, GtkMessageDialog)
+G_DECLARE_FINAL_TYPE (CcWifiHotspotDialog, cc_wifi_hotspot_dialog, CC, WIFI_HOTSPOT_DIALOG, GtkDialog)
CcWifiHotspotDialog *cc_wifi_hotspot_dialog_new (GtkWindow *parent_window);
void cc_wifi_hotspot_dialog_set_hostname (CcWifiHotspotDialog *self,
diff --git a/panels/network/cc-wifi-hotspot-dialog.ui b/panels/network/cc-wifi-hotspot-dialog.ui
index 619e051c1..6552650a1 100644
--- a/panels/network/cc-wifi-hotspot-dialog.ui
+++ b/panels/network/cc-wifi-hotspot-dialog.ui
@@ -1,19 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <template class="CcWifiHotspotDialog" parent="GtkMessageDialog">
+ <template class="CcWifiHotspotDialog" parent="GtkDialog">
+ <property name="title" translatable="yes">Turn On Wi-Fi Hotspot?</property>
<property name="modal">1</property>
<property name="destroy-with-parent">1</property>
- <property name="message-type">other</property>
- <signal name="delete-event" handler="gtk_widget_hide_on_delete"/>
+ <property name="hide-on-close">True</property>
- <child internal-child="message_area">
+ <child internal-child="headerbar">
+ <object class="GtkHeaderBar">
+ <property name="show-title-buttons">0</property>
+ </object>
+ </child>
+
+ <child internal-child="content_area">
<object class="GtkBox">
- <property name="visible">1</property>
- <property name="margin-top">0</property>
+ <property name="orientation">vertical</property>
+ <property name="margin-top">30</property>
+ <property name="margin-bottom">30</property>
+ <property name="margin-start">30</property>
+ <property name="margin-end">30</property>
+ <property name="spacing">20</property>
<child>
<object class="GtkLabel" id="label">
- <property name="visible">1</property>
<property name="wrap">1</property>
<property name="max-width-chars">50</property>
<property name="label" translatable="yes">Wi-Fi hotspot allows others to share your internet connection, by creating a Wi-Fi network that they can connect to. To do this, you must have an internet connection through a source other than Wi-Fi.</property>
@@ -23,7 +32,6 @@
<child>
<object class="GtkLabel" id="connection_label">
- <property name="visible">1</property>
<property name="margin-bottom">18</property>
<property name="wrap">1</property>
<property name="max-width-chars">40</property>
@@ -34,7 +42,6 @@
<child>
<object class="GtkGrid">
- <property name="visible">1</property>
<property name="row-spacing">6</property>
<property name="column-spacing">12</property>
@@ -43,24 +50,22 @@
<object class="GtkLabel">
<property name="label" translatable="yes">Network Name</property>
<property name="halign">end</property>
- <property name="visible">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="name_entry">
- <property name="visible">1</property>
<property name="hexpand">1</property>
<property name="max-length">64</property>
<signal name="changed" handler="hotspot_entry_changed_cb" swapped="yes" />
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">0</property>
- </packing>
</child>
<!-- Hotspot Password -->
@@ -68,34 +73,35 @@
<object class="GtkLabel">
<property name="label" translatable="yes">Password</property>
<property name="halign">end</property>
- <property name="visible">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
- <property name="visible">1</property>
<property name="max-length">64</property>
<property name="secondary-icon-name">view-refresh-symbolic</property>
<property name="secondary-icon-tooltip-text" translatable="yes">Generate Random Password</property>
<property name="placeholder-text" translatable="yes">Autogenerate Password</property>
<signal name="icon-press" handler="generate_password_clicked_cb" swapped="yes" />
<signal name="changed" handler="hotspot_entry_changed_cb" swapped="yes" />
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">1</property>
- </packing>
</child>
<!-- Error Label -->
<child>
<object class="GtkLabel" id="error_label">
<property name="halign">start</property>
- <property name="visible">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
<style>
<class name="dim-label" />
</style>
@@ -103,10 +109,6 @@
<attribute name="scale" value="0.83"/>
</attributes>
</object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">2</property>
- </packing>
</child>
</object>
@@ -117,15 +119,12 @@
<child type="action">
<object class="GtkButton" id="cancel_button">
- <property name="visible">1</property>
<property name="use-underline">1</property>
<property name="label" translatable="yes">_Cancel</property>
</object>
</child>
<child type="action">
<object class="GtkButton" id="ok_button">
- <property name="visible">1</property>
- <property name="can-default">1</property>
<property name="use-underline">1</property>
<property name="label" translatable="yes">_Turn On</property>
</object>
diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c
index 9ca6e6ee5..1501803a8 100644
--- a/panels/network/cc-wifi-panel.c
+++ b/panels/network/cc-wifi-panel.c
@@ -355,12 +355,17 @@ wifi_panel_update_qr_image_cb (CcWifiPanel *self)
str = get_qr_string_for_hotspot (self->client, hotspot);
if (cc_qr_code_set_text (self->qr_code, str))
{
+ g_autoptr(GdkPixbuf) pixbuf = NULL;
cairo_surface_t *surface;
gint scale;
scale = gtk_widget_get_scale_factor (GTK_WIDGET (self->wifi_qr_image));
surface = cc_qr_code_get_surface (self->qr_code, QR_IMAGE_SIZE, scale);
- gtk_image_set_from_surface (self->wifi_qr_image, surface);
+ pixbuf = gdk_pixbuf_get_from_surface (surface,
+ 0, 0,
+ QR_IMAGE_SIZE,
+ QR_IMAGE_SIZE);
+ gtk_image_set_from_pixbuf (self->wifi_qr_image, pixbuf);
}
}
@@ -426,10 +431,10 @@ remove_wifi_device (CcWifiPanel *self,
/* Destroy all stack pages related to this device */
child = gtk_stack_get_child_by_name (self->stack, id);
- gtk_widget_destroy (child);
+ gtk_stack_remove (self->stack, child);
child = gtk_stack_get_child_by_name (self->header_stack, id);
- gtk_widget_destroy (child);
+ gtk_stack_remove (self->header_stack, child);
/* Update the title widget */
update_devices_names (self);
@@ -565,7 +570,7 @@ update_devices_names (CcWifiPanel *self)
if (single_page_widget)
{
g_object_ref (single_page_widget);
- gtk_container_remove (GTK_CONTAINER (self->center_stack), single_page_widget);
+ gtk_stack_remove (self->center_stack, single_page_widget);
g_object_unref (single_page_widget);
}
@@ -840,7 +845,7 @@ on_stack_visible_child_changed_cb (GtkStack *stack,
self->spinner_binding = g_object_bind_property (net_device,
"scanning",
self->spinner,
- "active",
+ "spinning",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
break;
}
@@ -848,16 +853,31 @@ on_stack_visible_child_changed_cb (GtkStack *stack,
}
static void
+on_stop_hotspot_dialog_response_cb (GtkDialog *dialog,
+ gint response,
+ CcWifiPanel *self)
+{
+ if (response == GTK_RESPONSE_OK)
+ {
+ NetDeviceWifi *child;
+
+ child = NET_DEVICE_WIFI (gtk_stack_get_visible_child (self->stack));
+ net_device_wifi_turn_off_hotspot (child);
+ }
+
+ gtk_window_destroy (GTK_WINDOW (dialog));
+}
+
+static void
hotspot_stop_clicked_cb (CcWifiPanel *self)
{
GtkWidget *dialog;
- GtkWidget *window;
- int response;
+ GtkNative *native;
g_assert (CC_IS_WIFI_PANEL (self));
- window = gtk_widget_get_toplevel (GTK_WIDGET (self));
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ native = gtk_widget_get_native (GTK_WIDGET (self));
+ dialog = gtk_message_dialog_new (GTK_WINDOW (native),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_OTHER,
GTK_BUTTONS_NONE,
@@ -867,17 +887,9 @@ hotspot_stop_clicked_cb (CcWifiPanel *self)
_("_Stop Hotspot"), GTK_RESPONSE_OK,
NULL);
- response = gtk_dialog_run (GTK_DIALOG (dialog));
-
- if (response == GTK_RESPONSE_OK)
- {
- NetDeviceWifi *child;
-
- child = NET_DEVICE_WIFI (gtk_stack_get_visible_child (self->stack));
- net_device_wifi_turn_off_hotspot (child);
- }
+ g_signal_connect (dialog, "response", G_CALLBACK (on_stop_hotspot_dialog_response_cb), self);
+ gtk_window_present (GTK_WINDOW (dialog));
- gtk_widget_destroy (dialog);
}
/* Overrides */
diff --git a/panels/network/cc-wifi-panel.ui b/panels/network/cc-wifi-panel.ui
index 2ac7570f9..dfd12a8ac 100644
--- a/panels/network/cc-wifi-panel.ui
+++ b/panels/network/cc-wifi-panel.ui
@@ -2,17 +2,12 @@
<interface>
<requires lib="gtk+" version="3.20"/>
<template class="CcWifiPanel" parent="CcPanel">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
<child>
<object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
<property name="hscrollbar-policy">never</property>
<child>
- <object class="HdyClamp">
- <property name="visible">True</property>
+ <object class="AdwClamp">
<property name="margin_top">32</property>
<property name="margin_bottom">32</property>
<property name="margin_start">12</property>
@@ -20,14 +15,12 @@
<child>
<object class="GtkBox">
- <property name="visible">True</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<!-- Airplane Mode -->
<child>
<object class="GtkListBox" id="rfkill_widget">
- <property name="visible">True</property>
<property name="margin_bottom">32</property>
<property name="selection-mode">none</property>
<style>
@@ -35,7 +28,6 @@
</style>
<child>
<object class="CcListRow" id="rfkill_row">
- <property name="visible">True</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-top">6</property>
@@ -53,271 +45,233 @@
<child>
<object class="GtkStack" id="main_stack">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="homogeneous">False</property>
+ <property name="hhomogeneous">False</property>
+ <property name="vhomogeneous">False</property>
<property name="transition_type">crossfade</property>
<!-- "No Wi-Fi Adapter" page -->
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">network-wireless-no-route-symbolic</property>
- <property name="pixel_size">256</property>
- <property name="margin-bottom">18</property>
- <style>
- <class name="dim-label" />
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">No Wi-Fi Adapter Found</property>
- <attributes>
- <attribute name="weight" value="bold" />
- <attribute name="scale" value="1.2" />
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">Make sure you have a Wi-Fi adapter plugged and turned on</property>
- </object>
- </child>
- </object>
- <packing>
+ <object class="GtkStackPage">
<property name="name">no-wifi-devices</property>
- </packing>
- </child>
-
- <!-- "Airplane Mode" page -->
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">airplane-mode-symbolic</property>
- <property name="pixel_size">256</property>
- <property name="margin-bottom">18</property>
- <style>
- <class name="dim-label" />
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">Airplane Mode On</property>
- <attributes>
- <attribute name="weight" value="bold" />
- <attribute name="scale" value="1.2" />
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">Turn off to use Wi-Fi</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="name">airplane-mode</property>
- </packing>
- </child>
-
- <!-- Wi-Fi connections and devices -->
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="orientation">vertical</property>
-
- <child>
- <object class="GtkBox" id="hotspot_box">
- <property name="visible">True</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
<property name="orientation">vertical</property>
-
- <!-- Hotspot QR code -->
<child>
- <object class="GtkImage" id="wifi_qr_image">
- <property name="visible">True</property>
- <property name="halign">center</property>
- <property name="width-request">180</property>
- <property name="height-request">180</property>
+ <object class="GtkImage">
+ <property name="icon_name">network-wireless-no-route-symbolic</property>
+ <property name="pixel_size">256</property>
+ <property name="margin-bottom">18</property>
<style>
- <class name="frame"/>
+ <class name="dim-label" />
</style>
</object>
</child>
-
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="margin-top">12</property>
- <property name="label" translatable="yes">Wi-Fi Hotspot Active</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">No Wi-Fi Adapter Found</property>
<attributes>
<attribute name="weight" value="bold" />
- <attribute name="scale" value="1.8" />
+ <attribute name="scale" value="1.2" />
</attributes>
</object>
</child>
-
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Mobile devices can scan the QR code to connect.</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Make sure you have a Wi-Fi adapter plugged and turned on</property>
</object>
</child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <!-- "Airplane Mode" page -->
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">airplane-mode</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkButton">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="halign">center</property>
- <property name="margin-top">12</property>
- <property name="label" translatable="yes">Turn Off Hotspot…</property>
- <signal name="clicked" handler="hotspot_stop_clicked_cb" swapped="yes"/>
+ <object class="GtkImage">
+ <property name="icon_name">airplane-mode-symbolic</property>
+ <property name="pixel_size">256</property>
+ <property name="margin-bottom">18</property>
<style>
- <class name="destructive-action"/>
+ <class name="dim-label" />
</style>
</object>
</child>
-
+ <child>
+ <object class="GtkLabel">
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Airplane Mode On</property>
+ <attributes>
+ <attribute name="weight" value="bold" />
+ <attribute name="scale" value="1.2" />
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Turn off to use Wi-Fi</property>
+ </object>
+ </child>
</object>
- </child>
+ </property>
+ </object>
+ </child>
- <!-- Visible Networks label & spinner -->
- <child>
+ <!-- Wi-Fi connections and devices -->
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">wifi-connections</property>
+ <property name="child">
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="halign">start</property>
- <property name="spacing">6</property>
- <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+
<child>
- <object class="GtkLabel" id="list_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Visible Networks</property>
- <property name="xalign">0.0</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
+ <object class="GtkBox" id="hotspot_box">
+ <property name="orientation">vertical</property>
+
+ <!-- Hotspot QR code -->
+ <child>
+ <object class="GtkImage" id="wifi_qr_image">
+ <property name="halign">center</property>
+ <property name="width-request">180</property>
+ <property name="height-request">180</property>
+ <style>
+ <class name="frame"/>
+ </style>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel">
+ <property name="margin-top">12</property>
+ <property name="label" translatable="yes">Wi-Fi Hotspot Active</property>
+ <attributes>
+ <attribute name="weight" value="bold" />
+ <attribute name="scale" value="1.8" />
+ </attributes>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Mobile devices can scan the QR code to connect.</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton">
+ <property name="halign">center</property>
+ <property name="margin-top">12</property>
+ <property name="label" translatable="yes">Turn Off Hotspot…</property>
+ <signal name="clicked" handler="hotspot_stop_clicked_cb" swapped="yes"/>
+ <style>
+ <class name="destructive-action"/>
+ </style>
+ </object>
+ </child>
+
</object>
</child>
+
+ <!-- Visible Networks label & spinner -->
<child>
- <object class="GtkSpinner" id="spinner">
- <property name="visible">True</property>
+ <object class="GtkBox">
<property name="hexpand">True</property>
+ <property name="halign">start</property>
+ <property name="spacing">6</property>
+ <property name="margin_bottom">12</property>
+ <child>
+ <object class="GtkLabel" id="list_label">
+ <property name="label" translatable="yes">Visible Networks</property>
+ <property name="xalign">0.0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner">
+ <property name="hexpand">True</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <!-- Stack with a listbox for each Wi-Fi device -->
- <child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <property name="valign">start</property>
- <style>
- <class name="view" />
- </style>
+ <!-- Stack with a listbox for each Wi-Fi device -->
<child>
<object class="GtkStack" id="stack">
- <property name="visible">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="transition_type">crossfade</property>
<signal name="notify::visible-child-name" handler="on_stack_visible_child_changed_cb" object="CcWifiPanel" swapped="no" />
</object>
</child>
- </object>
- </child>
+ </object>
+ </property>
</object>
- <packing>
- <property name="name">wifi-connections</property>
- </packing>
</child>
<!-- "NetworkManager Not Running" page -->
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="orientation">vertical</property>
- <property name="margin">18</property>
- <property name="spacing">18</property>
- <child type="center">
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">face-sad-symbolic</property>
- <property name="pixel_size">128</property>
- <style>
- <class name="dim-label" />
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">NetworkManager needs to be running</property>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">Oops, something has gone wrong. Please contact your software vendor.</property>
- <attributes>
- <attribute name="scale" value="1.42" />
- </attributes>
+ <object class="GtkStackPage">
+ <property name="name">nm-not-running</property>
+ <property name="child">
+ <object class="GtkCenterBox">
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-start">18</property>
+ <property name="margin-end">18</property>
+ <child type="center">
+ <object class="GtkImage">
+ <property name="icon_name">face-sad-symbolic</property>
+ <property name="pixel_size">128</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkLabel">
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">NetworkManager needs to be running</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkLabel">
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Oops, something has gone wrong. Please contact your software vendor.</property>
+ <attributes>
+ <attribute name="scale" value="1.42" />
+ </attributes>
+ </object>
+ </child>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">nm-not-running</property>
- </packing>
</child>
+
</object>
</child>
@@ -333,26 +287,22 @@
<!-- End Stack -->
<object class="GtkStack" id="header_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="halign">end</property>
</object>
<!-- Center Widget -->
<object class="GtkStack" id="center_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="halign">center</property>
<property name="hhomogeneous">False</property>
<child>
- <object class="GtkStackSwitcher">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stack">stack</property>
- </object>
- <packing>
+ <object class="GtkStackPage">
<property name="name">many</property>
- </packing>
+ <property name="child">
+ <object class="GtkStackSwitcher">
+ <property name="stack">stack</property>
+ </object>
+ </property>
+ </object>
</child>
</object>
</interface>
diff --git a/panels/network/connection-editor/8021x-security-page.ui b/panels/network/connection-editor/8021x-security-page.ui
index cde5d85ee..5be96b357 100644
--- a/panels/network/connection-editor/8021x-security-page.ui
+++ b/panels/network/connection-editor/8021x-security-page.ui
@@ -2,8 +2,6 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="CEPage8021xSecurity" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_start">50</property>
<property name="margin_end">50</property>
<property name="margin_top">12</property>
@@ -14,49 +12,34 @@
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="security_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">802.1x _Security</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">enable_8021x_switch</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkSwitch" id="enable_8021x_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/connection-editor/ce-ip-address-entry.c b/panels/network/connection-editor/ce-ip-address-entry.c
index 7bbcd6edd..586ea5d14 100644
--- a/panels/network/connection-editor/ce-ip-address-entry.c
+++ b/panels/network/connection-editor/ce-ip-address-entry.c
@@ -83,7 +83,7 @@ ce_ip_address_entry_is_empty (CEIPAddressEntry *self)
g_return_val_if_fail (CE_IS_IP_ADDRESS_ENTRY (self), FALSE);
- text = gtk_entry_get_text (GTK_ENTRY (self));
+ text = gtk_editable_get_text (GTK_EDITABLE (self));
return text[0] == '\0';
}
@@ -94,6 +94,6 @@ ce_ip_address_entry_is_valid (CEIPAddressEntry *self)
g_return_val_if_fail (CE_IS_IP_ADDRESS_ENTRY (self), FALSE);
- text = gtk_entry_get_text (GTK_ENTRY (self));
+ text = gtk_editable_get_text (GTK_EDITABLE (self));
return text[0] == '\0' || nm_utils_ipaddr_valid (self->family, text);
}
diff --git a/panels/network/connection-editor/ce-netmask-entry.c b/panels/network/connection-editor/ce-netmask-entry.c
index 9df5547d2..2fccf0fa4 100644
--- a/panels/network/connection-editor/ce-netmask-entry.c
+++ b/panels/network/connection-editor/ce-netmask-entry.c
@@ -107,7 +107,7 @@ ce_netmask_entry_is_empty (CENetmaskEntry *self)
g_return_val_if_fail (CE_IS_NETMASK_ENTRY (self), FALSE);
- text = gtk_entry_get_text (GTK_ENTRY (self));
+ text = gtk_editable_get_text (GTK_EDITABLE (self));
return text[0] == '\0';
}
@@ -118,7 +118,7 @@ ce_netmask_entry_is_valid (CENetmaskEntry *self)
g_return_val_if_fail (CE_IS_NETMASK_ENTRY (self), FALSE);
- text = gtk_entry_get_text (GTK_ENTRY (self));
+ text = gtk_editable_get_text (GTK_EDITABLE (self));
return text[0] == '\0' || parse_netmask (text, NULL);
}
@@ -130,7 +130,7 @@ ce_netmask_entry_get_prefix (CENetmaskEntry *self)
g_return_val_if_fail (CE_IS_NETMASK_ENTRY (self), 0);
- text = gtk_entry_get_text (GTK_ENTRY (self));
+ text = gtk_editable_get_text (GTK_EDITABLE (self));
parse_netmask (text, &prefix);
return prefix;
diff --git a/panels/network/connection-editor/ce-page-8021x-security.c b/panels/network/connection-editor/ce-page-8021x-security.c
index 1e4f1464a..3a15d0711 100644
--- a/panels/network/connection-editor/ce-page-8021x-security.c
+++ b/panels/network/connection-editor/ce-page-8021x-security.c
@@ -66,12 +66,10 @@ security_item_changed_cb (CEPage8021xSecurity *self)
static void
finish_setup (CEPage8021xSecurity *self, gpointer unused, GError *error, gpointer user_data)
{
- GtkWidget *parent;
-
if (error)
return;
- self->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ self->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
self->security = ws_wpa_eap_new (self->connection);
if (!self->security) {
@@ -79,19 +77,18 @@ finish_setup (CEPage8021xSecurity *self, gpointer unused, GError *error, gpointe
return;
}
- g_signal_connect_object (WIRELESS_SECURITY (self->security), "changed", G_CALLBACK (security_item_changed_cb), self, G_CONNECT_SWAPPED);
- parent = gtk_widget_get_parent (GTK_WIDGET (self->security));
- if (parent)
- gtk_container_remove (GTK_CONTAINER (parent), GTK_WIDGET (self->security));
+ g_signal_connect_object (WIRELESS_SECURITY (self->security), "changed", G_CALLBACK (security_item_changed_cb), self, G_CONNECT_SWAPPED);
+ if (gtk_widget_get_parent (GTK_WIDGET (self->security)))
+ gtk_box_remove (self->box, GTK_WIDGET (self->security));
gtk_switch_set_active (self->enable_8021x_switch, self->initial_have_8021x);
g_signal_connect_object (self->enable_8021x_switch, "notify::active", G_CALLBACK (enable_toggled), self, G_CONNECT_SWAPPED);
gtk_widget_set_sensitive (GTK_WIDGET (self->security), self->initial_have_8021x);
- gtk_size_group_add_widget (self->group, GTK_WIDGET (self->security_label));
- wireless_security_add_to_size_group (WIRELESS_SECURITY (self->security), self->group);
+ gtk_size_group_add_widget (self->group, GTK_WIDGET (self->security_label));
+ wireless_security_add_to_size_group (WIRELESS_SECURITY (self->security), self->group);
- gtk_container_add (GTK_CONTAINER (self->box), GTK_WIDGET (self->security));
+ gtk_box_append (self->box, GTK_WIDGET (self->security));
}
diff --git a/panels/network/connection-editor/ce-page-details.c b/panels/network/connection-editor/ce-page-details.c
index 390851569..ee335b1b2 100644
--- a/panels/network/connection-editor/ce-page-details.c
+++ b/panels/network/connection-editor/ce-page-details.c
@@ -177,7 +177,7 @@ all_user_changed (CEPageDetails *self)
NMSettingConnection *sc;
sc = nm_connection_get_setting_connection (self->connection);
- all_users = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->all_user_check));
+ all_users = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->all_user_check));
g_object_set (sc, "permissions", NULL, NULL);
if (!all_users)
@@ -192,7 +192,7 @@ restrict_data_changed (CEPageDetails *self)
s_con = nm_connection_get_setting_connection (self->connection);
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->restrict_data_check)))
+ if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->restrict_data_check)))
metered = NM_METERED_YES;
else
metered = NM_METERED_NO;
@@ -220,8 +220,8 @@ update_restrict_data (CEPageDetails *self)
metered = nm_setting_connection_get_metered (s_con);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->restrict_data_check),
- metered == NM_METERED_YES || metered == NM_METERED_GUESS_YES);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->restrict_data_check),
+ metered == NM_METERED_YES || metered == NM_METERED_GUESS_YES);
gtk_widget_show (GTK_WIDGET (self->restrict_data_check));
g_signal_connect_object (self->restrict_data_check, "notify::active", G_CALLBACK (restrict_data_changed), self, G_CONNECT_SWAPPED);
@@ -456,8 +456,8 @@ connect_details_page (CEPageDetails *self)
}
/* All users check */
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->all_user_check),
- nm_setting_connection_get_num_permissions (sc) == 0);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->all_user_check),
+ nm_setting_connection_get_num_permissions (sc) == 0);
g_signal_connect_object (self->all_user_check, "toggled", G_CALLBACK (all_user_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->all_user_check, "toggled", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
diff --git a/panels/network/connection-editor/ce-page-ethernet.c b/panels/network/connection-editor/ce-page-ethernet.c
index 98fe46079..79c1b7d7b 100644
--- a/panels/network/connection-editor/ce-page-ethernet.c
+++ b/panels/network/connection-editor/ce-page-ethernet.c
@@ -72,8 +72,8 @@ mtu_output_cb (CEPageEthernet *self)
else
buf = g_strdup_printf ("%d", val);
- if (strcmp (buf, gtk_entry_get_text (GTK_ENTRY (self->mtu_spin))))
- gtk_entry_set_text (GTK_ENTRY (self->mtu_spin), buf);
+ if (strcmp (buf, gtk_editable_get_text (GTK_EDITABLE (self->mtu_spin))))
+ gtk_editable_set_text (GTK_EDITABLE (self->mtu_spin), buf);
}
static void
@@ -86,7 +86,7 @@ connect_ethernet_page (CEPageEthernet *self)
const gchar *cloned_mac;
name = nm_setting_connection_get_id (self->setting_connection);
- gtk_entry_set_text (self->name_entry, name);
+ gtk_editable_set_text (GTK_EDITABLE (self->name_entry), name);
/* Device MAC address */
mac_list = ce_page_get_mac_list (self->client, NM_TYPE_DEVICE_ETHERNET,
@@ -119,9 +119,9 @@ ui_to_setting (CEPageEthernet *self)
const gchar *text;
GtkWidget *entry;
- entry = gtk_bin_get_child (GTK_BIN (self->mac_combo));
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (self->mac_combo));
if (entry) {
- text = gtk_entry_get_text (GTK_ENTRY (entry));
+ text = gtk_editable_get_text (GTK_EDITABLE (entry));
device_mac = ce_page_trim_address (text);
}
@@ -134,7 +134,7 @@ ui_to_setting (CEPageEthernet *self)
NULL);
g_object_set (self->setting_connection,
- NM_SETTING_CONNECTION_ID, gtk_entry_get_text (self->name_entry),
+ NM_SETTING_CONNECTION_ID, gtk_editable_get_text (GTK_EDITABLE (self->name_entry)),
NULL);
}
@@ -153,9 +153,9 @@ ce_page_ethernet_validate (CEPage *page,
GtkWidget *entry;
gboolean ret = TRUE;
- entry = gtk_bin_get_child (GTK_BIN (self->mac_combo));
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (self->mac_combo));
if (entry) {
- if (!ce_page_address_is_valid (gtk_entry_get_text (GTK_ENTRY (entry)))) {
+ if (!ce_page_address_is_valid (gtk_editable_get_text (GTK_EDITABLE (entry)))) {
widget_set_error (entry);
ret = FALSE;
} else {
@@ -164,10 +164,10 @@ ce_page_ethernet_validate (CEPage *page,
}
if (!ce_page_cloned_mac_combo_valid (self->cloned_mac_combo)) {
- widget_set_error (gtk_bin_get_child (GTK_BIN (self->cloned_mac_combo)));
+ widget_set_error (gtk_combo_box_get_child (GTK_COMBO_BOX (self->cloned_mac_combo)));
ret = FALSE;
} else {
- widget_unset_error (gtk_bin_get_child (GTK_BIN (self->cloned_mac_combo)));
+ widget_unset_error (gtk_combo_box_get_child (GTK_COMBO_BOX (self->cloned_mac_combo)));
}
if (!ret)
diff --git a/panels/network/connection-editor/ce-page-ip4.c b/panels/network/connection-editor/ce-page-ip4.c
index 140dedd75..36e586932 100644
--- a/panels/network/connection-editor/ce-page-ip4.c
+++ b/panels/network/connection-editor/ce-page-ip4.c
@@ -27,7 +27,6 @@
#include <glib/gi18n.h>
#include <NetworkManager.h>
-#include "list-box-helper.h"
#include "ce-ip-address-entry.h"
#include "ce-netmask-entry.h"
#include "ce-page.h"
@@ -39,24 +38,24 @@ static void ensure_empty_routes_row (CEPageIP4 *self);
struct _CEPageIP4
{
- GtkScrolledWindow parent;
+ AdwBin parent;
GtkBox *address_box;
GtkSizeGroup *address_sizegroup;
GtkSwitch *auto_dns_switch;
GtkSwitch *auto_routes_switch;
- GtkRadioButton *automatic_radio;
+ GtkCheckButton *automatic_radio;
GtkBox *content_box;
- GtkRadioButton *disabled_radio;
+ GtkCheckButton *disabled_radio;
GtkEntry *dns_entry;
- GtkRadioButton *local_radio;
+ GtkCheckButton *local_radio;
GtkGrid *main_box;
- GtkRadioButton *manual_radio;
+ GtkCheckButton *manual_radio;
GtkCheckButton *never_default_check;
GtkBox *routes_box;
GtkSizeGroup *routes_metric_sizegroup;
GtkSizeGroup *routes_sizegroup;
- GtkRadioButton *shared_radio;
+ GtkCheckButton *shared_radio;
NMSettingIPConfig *setting;
@@ -66,7 +65,7 @@ struct _CEPageIP4
static void ce_page_iface_init (CEPageInterface *);
-G_DEFINE_TYPE_WITH_CODE (CEPageIP4, ce_page_ip4, GTK_TYPE_SCROLLED_WINDOW,
+G_DEFINE_TYPE_WITH_CODE (CEPageIP4, ce_page_ip4, ADW_TYPE_BIN,
G_IMPLEMENT_INTERFACE (ce_page_get_type (), ce_page_iface_init))
enum {
@@ -89,15 +88,15 @@ method_changed (CEPageIP4 *self)
gboolean dns_enabled;
gboolean routes_enabled;
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->disabled_radio)) ||
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->shared_radio))) {
+ if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->disabled_radio)) ||
+ gtk_check_button_get_active (GTK_CHECK_BUTTON (self->shared_radio))) {
addr_enabled = FALSE;
dns_enabled = FALSE;
routes_enabled = FALSE;
} else {
- addr_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->manual_radio));
- dns_enabled = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->local_radio));
- routes_enabled = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->local_radio));
+ addr_enabled = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->manual_radio));
+ dns_enabled = !gtk_check_button_get_active (GTK_CHECK_BUTTON (self->local_radio));
+ routes_enabled = !gtk_check_button_get_active (GTK_CHECK_BUTTON (self->local_radio));
}
gtk_widget_set_visible (GTK_WIDGET (self->address_box), addr_enabled);
@@ -111,23 +110,24 @@ method_changed (CEPageIP4 *self)
static void
update_row_sensitivity (CEPageIP4 *self, GtkWidget *list)
{
- g_autoptr(GList) children = NULL;
+ GtkWidget *child;
gint rows = 0, i = 0;
- children = gtk_container_get_children (GTK_CONTAINER (list));
- for (GList *l = children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (GTK_WIDGET (list));
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
GtkWidget *button;
- button = GTK_WIDGET (g_object_get_data (G_OBJECT (row), "delete-button"));
+ button = GTK_WIDGET (g_object_get_data (G_OBJECT (child), "delete-button"));
if (button != NULL)
rows++;
}
- for (GList *l = children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (GTK_WIDGET (list));
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
GtkWidget *button;
- button = GTK_WIDGET (g_object_get_data (G_OBJECT (row), "delete-button"));
+ button = GTK_WIDGET (g_object_get_data (G_OBJECT (child), "delete-button"));
if (button != NULL)
gtk_widget_set_sensitive (button, rows > 1 && ++i < rows);
}
@@ -136,15 +136,15 @@ update_row_sensitivity (CEPageIP4 *self, GtkWidget *list)
static void
update_row_gateway_sensitivity (CEPageIP4 *self)
{
- g_autoptr(GList) children = NULL;
+ GtkWidget *child;
gint rows = 0;
- children = gtk_container_get_children (GTK_CONTAINER (self->address_list));
- for (GList *l = children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (self->address_list);
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
GtkWidget *entry;
- entry = GTK_WIDGET (g_object_get_data (G_OBJECT (row), "gateway"));
+ entry = GTK_WIDGET (g_object_get_data (G_OBJECT (child), "gateway"));
gtk_widget_set_sensitive (entry, (rows == 0));
@@ -163,7 +163,7 @@ remove_row (CEPageIP4 *self, GtkButton *button)
row = gtk_widget_get_parent (row_box);
list = gtk_widget_get_parent (row);
- gtk_container_remove (GTK_CONTAINER (list), row);
+ gtk_list_box_remove (GTK_LIST_BOX (list), row);
ce_page_changed (CE_PAGE (self));
@@ -175,19 +175,20 @@ remove_row (CEPageIP4 *self, GtkButton *button)
static gboolean
validate_row (GtkWidget *row)
{
+ GtkWidget *child;
GtkWidget *box;
- g_autoptr(GList) children = NULL;
gboolean valid;
valid = FALSE;
- box = gtk_bin_get_child (GTK_BIN (row));
- children = gtk_container_get_children (GTK_CONTAINER (box));
+ box = gtk_list_box_row_get_child (GTK_LIST_BOX_ROW (row));
- for (GList *l = children; l != NULL; l = l->next) {
- if (!GTK_IS_ENTRY (l->data))
+ for (child = gtk_widget_get_first_child (box);
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
+ if (!GTK_IS_ENTRY (child))
continue;
- valid = valid || gtk_entry_get_text_length (l->data) > 0;
+ valid = valid || gtk_entry_get_text_length (GTK_ENTRY (child)) > 0;
}
return valid;
@@ -203,55 +204,53 @@ add_address_row (CEPageIP4 *self,
GtkWidget *row_box;
GtkWidget *widget;
GtkWidget *delete_button;
- GtkWidget *image;
row = gtk_list_box_row_new ();
+ gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
row_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_style_context_add_class (gtk_widget_get_style_context (row_box), "linked");
+ gtk_widget_add_css_class (row_box, "linked");
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_address_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "address", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), address);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), address);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = GTK_WIDGET (ce_netmask_entry_new ());
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_address_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "netmask", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), network);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), network);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_address_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "gateway", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), gateway ? gateway : "");
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), gateway ? gateway : "");
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
- delete_button = gtk_button_new ();
+ delete_button = gtk_button_new_from_icon_name ("edit-delete-symbolic");
gtk_widget_set_sensitive (delete_button, FALSE);
- gtk_style_context_add_class (gtk_widget_get_style_context (delete_button), "image-button");
g_signal_connect_object (delete_button, "clicked", G_CALLBACK (remove_row), self, G_CONNECT_SWAPPED);
- image = gtk_image_new_from_icon_name ("edit-delete-symbolic", GTK_ICON_SIZE_MENU);
- atk_object_set_name (gtk_widget_get_accessible (delete_button), _("Delete Address"));
- gtk_button_set_image (GTK_BUTTON (delete_button), image);
- gtk_container_add (GTK_CONTAINER (row_box), delete_button);
+ gtk_accessible_update_property (GTK_ACCESSIBLE (delete_button),
+ GTK_ACCESSIBLE_PROPERTY_LABEL, _("Delete Address"),
+ -1);
+ gtk_box_append (GTK_BOX (row_box), delete_button);
g_object_set_data (G_OBJECT (row), "delete-button", delete_button);
gtk_size_group_add_widget (self->address_sizegroup, delete_button);
- gtk_container_add (GTK_CONTAINER (row), row_box);
- gtk_widget_show_all (row);
- gtk_container_add (GTK_CONTAINER (self->address_list), row);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), row_box);
+ gtk_list_box_append (GTK_LIST_BOX (self->address_list), row);
update_row_gateway_sensitivity (self);
update_row_sensitivity (self, self->address_list);
@@ -260,14 +259,10 @@ add_address_row (CEPageIP4 *self,
static void
ensure_empty_address_row (CEPageIP4 *self)
{
- g_autoptr(GList) children = NULL;
- GList *l;
-
- children = gtk_container_get_children (GTK_CONTAINER (self->address_list));
- l = g_list_last (children);
+ GtkWidget *child = gtk_widget_get_last_child (self->address_list);
/* Add the last, stub row if needed*/
- if (!l || validate_row (l->data))
+ if (!child || validate_row (child))
add_address_row (self, "", "", "");
}
@@ -279,8 +274,7 @@ add_address_box (CEPageIP4 *self)
self->address_list = list = gtk_list_box_new ();
gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL);
- gtk_container_add (GTK_CONTAINER (self->address_box), list);
+ gtk_box_append (self->address_box, list);
for (i = 0; i < nm_setting_ip_config_get_num_addresses (self->setting); i++) {
NMIPAddress *addr;
@@ -301,8 +295,6 @@ add_address_box (CEPageIP4 *self)
}
if (nm_setting_ip_config_get_num_addresses (self->setting) == 0)
ensure_empty_address_row (self);
-
- gtk_widget_show_all (GTK_WIDGET (self->address_box));
}
static void
@@ -327,7 +319,7 @@ add_dns_section (CEPageIP4 *self)
g_string_append (string, address);
}
- gtk_entry_set_text (self->dns_entry, string->str);
+ gtk_editable_set_text (GTK_EDITABLE (self->dns_entry), string->str);
g_signal_connect_object (self->dns_entry, "notify::text", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
@@ -345,39 +337,39 @@ add_route_row (CEPageIP4 *self,
GtkWidget *row_box;
GtkWidget *widget;
GtkWidget *delete_button;
- GtkWidget *image;
row = gtk_list_box_row_new ();
+ gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
row_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_style_context_add_class (gtk_widget_get_style_context (row_box), "linked");
+ gtk_widget_add_css_class (row_box, "linked");
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "address", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), address);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), address);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = GTK_WIDGET (ce_netmask_entry_new ());
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "netmask", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), netmask);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), netmask);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "gateway", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), gateway ? gateway : "");
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), gateway ? gateway : "");
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = gtk_entry_new ();
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
@@ -385,30 +377,29 @@ add_route_row (CEPageIP4 *self,
g_object_set_data (G_OBJECT (row), "metric", widget);
if (metric >= 0) {
g_autofree gchar *s = g_strdup_printf ("%d", metric);
- gtk_entry_set_text (GTK_ENTRY (widget), s);
+ gtk_editable_set_text (GTK_EDITABLE (widget), s);
}
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 5);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 5);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
gtk_size_group_add_widget (self->routes_metric_sizegroup, widget);
- delete_button = gtk_button_new ();
- gtk_style_context_add_class (gtk_widget_get_style_context (delete_button), "image-button");
+ delete_button = gtk_button_new_from_icon_name ("edit-delete-symbolic");
+ gtk_widget_set_sensitive (delete_button, FALSE);
g_signal_connect_object (delete_button, "clicked", G_CALLBACK (remove_row), self, G_CONNECT_SWAPPED);
- image = gtk_image_new_from_icon_name ("edit-delete-symbolic", GTK_ICON_SIZE_MENU);
- atk_object_set_name (gtk_widget_get_accessible (delete_button), _("Delete Route"));
- gtk_button_set_image (GTK_BUTTON (delete_button), image);
+ gtk_accessible_update_property (GTK_ACCESSIBLE (delete_button),
+ GTK_ACCESSIBLE_PROPERTY_LABEL, _("Delete Route"),
+ -1);
gtk_widget_set_halign (delete_button, GTK_ALIGN_CENTER);
gtk_widget_set_valign (delete_button, GTK_ALIGN_CENTER);
- gtk_container_add (GTK_CONTAINER (row_box), delete_button);
+ gtk_box_append (GTK_BOX (row_box), delete_button);
g_object_set_data (G_OBJECT (row), "delete-button", delete_button);
gtk_size_group_add_widget (self->routes_sizegroup, delete_button);
- gtk_container_add (GTK_CONTAINER (row), row_box);
- gtk_widget_show_all (row);
- gtk_container_add (GTK_CONTAINER (self->routes_list), row);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), row_box);
+ gtk_list_box_append (GTK_LIST_BOX (self->routes_list), row);
update_row_sensitivity (self, self->routes_list);
}
@@ -416,14 +407,10 @@ add_route_row (CEPageIP4 *self,
static void
ensure_empty_routes_row (CEPageIP4 *self)
{
- g_autoptr(GList) children = NULL;
- GList *l;
-
- children = gtk_container_get_children (GTK_CONTAINER (self->routes_list));
- l = g_list_last (children);
+ GtkWidget *child = gtk_widget_get_last_child (self->routes_list);
/* Add the last, stub row if needed*/
- if (!l || validate_row (l->data))
+ if (!child || validate_row (child))
add_route_row (self, "", "", "", -1);
}
@@ -435,8 +422,7 @@ add_routes_box (CEPageIP4 *self)
self->routes_list = list = gtk_list_box_new ();
gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL);
- gtk_container_add (GTK_CONTAINER (self->routes_box), list);
+ gtk_box_append (GTK_BOX (self->routes_box), list);
gtk_switch_set_active (self->auto_routes_switch, !nm_setting_ip_config_get_ignore_auto_routes (self->setting));
g_signal_connect_object (self->auto_routes_switch, "notify::active", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
@@ -460,8 +446,6 @@ add_routes_box (CEPageIP4 *self)
}
if (nm_setting_ip_config_get_num_routes (self->setting) == 0)
ensure_empty_routes_row (self);
-
- gtk_widget_show_all (GTK_WIDGET (self->routes_box));
}
static void
@@ -470,9 +454,6 @@ connect_ip4_page (CEPageIP4 *self)
const gchar *str_method;
guint method;
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->main_box),
- gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self)));
-
add_address_box (self);
add_dns_section (self);
add_routes_box (self);
@@ -499,8 +480,8 @@ connect_ip4_page (CEPageIP4 *self)
method = IP4_METHOD_DISABLED;
}
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->never_default_check),
- nm_setting_ip_config_get_never_default (self->setting));
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->never_default_check),
+ nm_setting_ip_config_get_never_default (self->setting));
g_signal_connect_object (self->never_default_check, "toggled", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->automatic_radio, "toggled", G_CALLBACK (method_changed), self, G_CONNECT_SWAPPED);
@@ -510,19 +491,19 @@ connect_ip4_page (CEPageIP4 *self)
switch (method) {
case IP4_METHOD_AUTO:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->automatic_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->automatic_radio), TRUE);
break;
case IP4_METHOD_LINK_LOCAL:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->local_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->local_radio), TRUE);
break;
case IP4_METHOD_MANUAL:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->manual_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->manual_radio), TRUE);
break;
case IP4_METHOD_SHARED:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->shared_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->shared_radio), TRUE);
break;
case IP4_METHOD_DISABLED:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->disabled_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->disabled_radio), TRUE);
break;
default:
break;
@@ -541,31 +522,33 @@ ui_to_setting (CEPageIP4 *self)
GPtrArray *addresses = NULL;
GPtrArray *dns_servers = NULL;
GPtrArray *routes = NULL;
+ GtkWidget *child;
GStrv dns_addresses = NULL;
- g_autoptr(GList) address_children = NULL;
- g_autoptr(GList) routes_children = NULL;
gboolean ret = TRUE;
const char *default_gateway = NULL;
+ gboolean add_addresses = FALSE;
+ gboolean add_routes = FALSE;
gchar *dns_text = NULL;
guint i;
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->disabled_radio)))
+ if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->disabled_radio)))
method = NM_SETTING_IP4_CONFIG_METHOD_DISABLED;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->automatic_radio)))
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->automatic_radio)))
method = NM_SETTING_IP4_CONFIG_METHOD_AUTO;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->local_radio)))
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->local_radio)))
method = NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->manual_radio)))
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->manual_radio)))
method = NM_SETTING_IP4_CONFIG_METHOD_MANUAL;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->shared_radio)))
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (self->shared_radio)))
method = NM_SETTING_IP4_CONFIG_METHOD_SHARED;
addresses = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_address_unref);
- if (g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL))
- address_children = gtk_container_get_children (GTK_CONTAINER (self->address_list));
+ add_addresses = g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL);
- for (GList *l = address_children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (self->address_list);
+ add_addresses && child;
+ child = gtk_widget_get_next_sibling (child)) {
+ GtkWidget *row = child;
CEIPAddressEntry *address_entry;
CENetmaskEntry *netmask_entry;
CEIPAddressEntry *gateway_entry;
@@ -594,18 +577,18 @@ ui_to_setting (CEPageIP4 *self)
} else {
if (!ce_ip_address_entry_is_empty (gateway_entry)) {
g_assert (default_gateway == NULL);
- default_gateway = gtk_entry_get_text (GTK_ENTRY (gateway_entry));
+ default_gateway = gtk_editable_get_text (GTK_EDITABLE (gateway_entry));
}
}
if (!ret)
continue;
- addr = nm_ip_address_new (AF_INET, gtk_entry_get_text (GTK_ENTRY (address_entry)), ce_netmask_entry_get_prefix (netmask_entry), NULL);
+ addr = nm_ip_address_new (AF_INET, gtk_editable_get_text (GTK_EDITABLE (address_entry)), ce_netmask_entry_get_prefix (netmask_entry), NULL);
if (addr)
g_ptr_array_add (addresses, addr);
- if (!l || !l->next)
+ if (!gtk_widget_get_next_sibling (row))
ensure_empty_address_row (self);
}
@@ -615,7 +598,7 @@ ui_to_setting (CEPageIP4 *self)
}
dns_servers = g_ptr_array_new_with_free_func (g_free);
- dns_text = g_strstrip (g_strdup (gtk_entry_get_text (GTK_ENTRY (self->dns_entry))));
+ dns_text = g_strstrip (g_strdup (gtk_editable_get_text (GTK_EDITABLE (self->dns_entry))));
if (g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO) ||
g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL))
dns_addresses = g_strsplit_set (dns_text, ", ", -1);
@@ -650,12 +633,13 @@ ui_to_setting (CEPageIP4 *self)
}
routes = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_route_unref);
- if (g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO) ||
- g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL))
- routes_children = gtk_container_get_children (GTK_CONTAINER (self->routes_list));
+ add_routes = g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO) ||
+ g_str_equal (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL);
- for (GList *l = routes_children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (self->routes_list);
+ add_routes && child;
+ child = gtk_widget_get_next_sibling (child)) {
+ GtkWidget *row = child;
CEIPAddressEntry *address_entry;
CENetmaskEntry *netmask_entry;
CEIPAddressEntry *gateway_entry;
@@ -669,7 +653,7 @@ ui_to_setting (CEPageIP4 *self)
netmask_entry = CE_NETMASK_ENTRY (g_object_get_data (G_OBJECT (row), "netmask"));
gateway_entry = CE_IP_ADDRESS_ENTRY (g_object_get_data (G_OBJECT (row), "gateway"));
- text_metric = gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (row), "metric")));
+ text_metric = gtk_editable_get_text (GTK_EDITABLE (g_object_get_data (G_OBJECT (row), "metric")));
if (ce_ip_address_entry_is_empty (address_entry) && ce_netmask_entry_is_empty (netmask_entry) && ce_ip_address_entry_is_empty (gateway_entry) && !*text_metric) {
/* ignore empty rows */
@@ -702,11 +686,15 @@ ui_to_setting (CEPageIP4 *self)
if (!ret)
continue;
- route = nm_ip_route_new (AF_INET, gtk_entry_get_text (GTK_ENTRY (address_entry)), ce_netmask_entry_get_prefix (netmask_entry), gtk_entry_get_text (GTK_ENTRY (gateway_entry)), metric, NULL);
+ route = nm_ip_route_new (AF_INET,
+ gtk_editable_get_text (GTK_EDITABLE (address_entry)),
+ ce_netmask_entry_get_prefix (netmask_entry),
+ gtk_editable_get_text (GTK_EDITABLE (gateway_entry)),
+ metric, NULL);
if (route)
g_ptr_array_add (routes, route);
- if (!l || !l->next)
+ if (!gtk_widget_get_next_sibling (row))
ensure_empty_routes_row (self);
}
@@ -720,7 +708,7 @@ ui_to_setting (CEPageIP4 *self)
ignore_auto_dns = !gtk_switch_get_active (self->auto_dns_switch);
ignore_auto_routes = !gtk_switch_get_active (self->auto_routes_switch);
- never_default = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->never_default_check));
+ never_default = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->never_default_check));
g_object_set (self->setting,
NM_SETTING_IP_CONFIG_METHOD, method,
diff --git a/panels/network/connection-editor/ce-page-ip4.h b/panels/network/connection-editor/ce-page-ip4.h
index b76905d3b..3e6545f89 100644
--- a/panels/network/connection-editor/ce-page-ip4.h
+++ b/panels/network/connection-editor/ce-page-ip4.h
@@ -21,12 +21,12 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include <NetworkManager.h>
G_BEGIN_DECLS
-G_DECLARE_FINAL_TYPE (CEPageIP4, ce_page_ip4, CE, PAGE_IP4, GtkScrolledWindow)
+G_DECLARE_FINAL_TYPE (CEPageIP4, ce_page_ip4, CE, PAGE_IP4, AdwBin)
CEPageIP4 *ce_page_ip4_new (NMConnection *connection,
NMClient *client);
diff --git a/panels/network/connection-editor/ce-page-ip6.c b/panels/network/connection-editor/ce-page-ip6.c
index 06e1842b5..d75eef3cb 100644
--- a/panels/network/connection-editor/ce-page-ip6.c
+++ b/panels/network/connection-editor/ce-page-ip6.c
@@ -27,7 +27,6 @@
#include <glib/gi18n.h>
#include <NetworkManager.h>
-#include "list-box-helper.h"
#include "ce-ip-address-entry.h"
#include "ce-page.h"
#include "ce-page-ip6.h"
@@ -39,25 +38,25 @@ static void ensure_empty_routes_row (CEPageIP6 *self);
struct _CEPageIP6
{
- GtkScrolledWindow parent;
+ AdwBin parent;
GtkBox *address_box;
GtkSizeGroup *address_sizegroup;
GtkSwitch *auto_dns_switch;
GtkSwitch *auto_routes_switch;
- GtkRadioButton *automatic_radio;
+ GtkCheckButton *automatic_radio;
GtkBox *content_box;
- GtkRadioButton *dhcp_radio;
- GtkRadioButton *disabled_radio;
+ GtkCheckButton *dhcp_radio;
+ GtkCheckButton *disabled_radio;
GtkEntry *dns_entry;
- GtkRadioButton *local_radio;
+ GtkCheckButton *local_radio;
GtkGrid *main_box;
- GtkRadioButton *manual_radio;
+ GtkCheckButton *manual_radio;
GtkCheckButton *never_default_check;
GtkBox *routes_box;
GtkSizeGroup *routes_metric_sizegroup;
GtkSizeGroup *routes_sizegroup;
- GtkRadioButton *shared_radio;
+ GtkCheckButton *shared_radio;
NMSettingIPConfig *setting;
@@ -67,7 +66,7 @@ struct _CEPageIP6
static void ce_page_iface_init (CEPageInterface *);
-G_DEFINE_TYPE_WITH_CODE (CEPageIP6, ce_page_ip6, GTK_TYPE_SCROLLED_WINDOW,
+G_DEFINE_TYPE_WITH_CODE (CEPageIP6, ce_page_ip6, ADW_TYPE_BIN,
G_IMPLEMENT_INTERFACE (ce_page_get_type (), ce_page_iface_init))
enum {
@@ -91,15 +90,15 @@ method_changed (CEPageIP6 *self)
gboolean dns_enabled;
gboolean routes_enabled;
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->disabled_radio)) ||
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->shared_radio))) {
+ if (gtk_check_button_get_active (self->disabled_radio) ||
+ gtk_check_button_get_active (self->shared_radio)) {
addr_enabled = FALSE;
dns_enabled = FALSE;
routes_enabled = FALSE;
} else {
- addr_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->manual_radio));
- dns_enabled = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->local_radio));
- routes_enabled = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->local_radio));
+ addr_enabled = gtk_check_button_get_active (self->manual_radio);
+ dns_enabled = !gtk_check_button_get_active (self->local_radio);
+ routes_enabled = !gtk_check_button_get_active (self->local_radio);
}
gtk_widget_set_visible (GTK_WIDGET (self->address_box), addr_enabled);
@@ -113,23 +112,24 @@ method_changed (CEPageIP6 *self)
static void
update_row_sensitivity (CEPageIP6 *self, GtkWidget *list)
{
- g_autoptr(GList) children = NULL;
+ GtkWidget *child;
gint rows = 0, i = 0;
- children = gtk_container_get_children (GTK_CONTAINER (list));
- for (GList *l = children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (GTK_WIDGET (list));
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
GtkWidget *button;
- button = GTK_WIDGET (g_object_get_data (G_OBJECT (row), "delete-button"));
+ button = GTK_WIDGET (g_object_get_data (G_OBJECT (child), "delete-button"));
if (button != NULL)
rows++;
}
- for (GList *l = children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (GTK_WIDGET (list));
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
GtkWidget *button;
- button = GTK_WIDGET (g_object_get_data (G_OBJECT (row), "delete-button"));
+ button = GTK_WIDGET (g_object_get_data (G_OBJECT (child), "delete-button"));
if (button != NULL)
gtk_widget_set_sensitive (button, rows > 1 && ++i < rows);
}
@@ -146,7 +146,7 @@ remove_row (CEPageIP6 *self, GtkButton *button)
row = gtk_widget_get_parent (row_box);
list = gtk_widget_get_parent (row);
- gtk_container_remove (GTK_CONTAINER (list), row);
+ gtk_list_box_remove (GTK_LIST_BOX (list), row);
ce_page_changed (CE_PAGE (self));
@@ -156,19 +156,20 @@ remove_row (CEPageIP6 *self, GtkButton *button)
static gboolean
validate_row (GtkWidget *row)
{
+ GtkWidget *child;
GtkWidget *box;
- g_autoptr(GList) children = NULL;
gboolean valid;
valid = FALSE;
- box = gtk_bin_get_child (GTK_BIN (row));
- children = gtk_container_get_children (GTK_CONTAINER (box));
+ box = gtk_list_box_row_get_child (GTK_LIST_BOX_ROW (row));
- for (GList *l = children; l != NULL; l = l->next) {
- if (!GTK_IS_ENTRY (l->data))
+ for (child = gtk_widget_get_first_child (box);
+ child;
+ child = gtk_widget_get_next_sibling (child)) {
+ if (!GTK_IS_ENTRY (child))
continue;
- valid = valid || gtk_entry_get_text_length (l->data) > 0;
+ valid = valid || gtk_entry_get_text_length (GTK_ENTRY (child)) > 0;
}
return valid;
@@ -184,55 +185,53 @@ add_address_row (CEPageIP6 *self,
GtkWidget *row_box;
GtkWidget *widget;
GtkWidget *delete_button;
- GtkWidget *image;
row = gtk_list_box_row_new ();
+ gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
row_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_style_context_add_class (gtk_widget_get_style_context (row_box), "linked");
+ gtk_widget_add_css_class (row_box, "linked");
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET6));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_address_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "address", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), address);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), address);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = gtk_entry_new ();
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_address_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "prefix", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), network);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), network);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET6));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_address_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "gateway", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), gateway ? gateway : "");
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), gateway ? gateway : "");
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
- delete_button = gtk_button_new ();
+ delete_button = gtk_button_new_from_icon_name ("edit-delete-symbolic");
gtk_widget_set_sensitive (delete_button, FALSE);
- gtk_style_context_add_class (gtk_widget_get_style_context (delete_button), "image-button");
g_signal_connect_object (delete_button, "clicked", G_CALLBACK (remove_row), self, G_CONNECT_SWAPPED);
- image = gtk_image_new_from_icon_name ("edit-delete-symbolic", GTK_ICON_SIZE_MENU);
- atk_object_set_name (gtk_widget_get_accessible (delete_button), _("Delete Address"));
- gtk_button_set_image (GTK_BUTTON (delete_button), image);
- gtk_container_add (GTK_CONTAINER (row_box), delete_button);
+ gtk_accessible_update_property (GTK_ACCESSIBLE (delete_button),
+ GTK_ACCESSIBLE_PROPERTY_LABEL, _("Delete Address"),
+ -1);
+ gtk_box_append (GTK_BOX (row_box), delete_button);
g_object_set_data (G_OBJECT (row), "delete-button", delete_button);
gtk_size_group_add_widget (self->address_sizegroup, delete_button);
- gtk_container_add (GTK_CONTAINER (row), row_box);
- gtk_widget_show_all (row);
- gtk_container_add (GTK_CONTAINER (self->address_list), row);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), row_box);
+ gtk_list_box_append (GTK_LIST_BOX (self->address_list), row);
update_row_sensitivity (self, self->address_list);
}
@@ -240,14 +239,10 @@ add_address_row (CEPageIP6 *self,
static void
ensure_empty_address_row (CEPageIP6 *self)
{
- g_autoptr(GList) children = NULL;
- GList *l;
-
- children = gtk_container_get_children (GTK_CONTAINER (self->address_list));
- l = g_list_last (children);
+ GtkWidget *child = gtk_widget_get_last_child (self->address_list);
/* Add the last, stub row if needed*/
- if (!l || validate_row (l->data))
+ if (!child || validate_row (child))
add_address_row (self, "", "", "");
}
@@ -259,8 +254,7 @@ add_address_box (CEPageIP6 *self)
self->address_list = list = gtk_list_box_new ();
gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL);
- gtk_container_add (GTK_CONTAINER (self->address_box), list);
+ gtk_box_append (self->address_box, list);
for (i = 0; i < nm_setting_ip_config_get_num_addresses (self->setting); i++) {
NMIPAddress *addr;
@@ -273,8 +267,6 @@ add_address_box (CEPageIP6 *self)
}
if (nm_setting_ip_config_get_num_addresses (self->setting) == 0)
ensure_empty_address_row (self);
-
- gtk_widget_show_all (GTK_WIDGET (self->address_box));
}
static void
@@ -300,7 +292,7 @@ add_dns_section (CEPageIP6 *self)
}
- gtk_entry_set_text (self->dns_entry, string->str);
+ gtk_editable_set_text (GTK_EDITABLE (self->dns_entry), string->str);
g_signal_connect_object (self->dns_entry, "notify::text", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
@@ -318,67 +310,65 @@ add_route_row (CEPageIP6 *self,
GtkWidget *row_box;
GtkWidget *widget;
GtkWidget *delete_button;
- GtkWidget *image;
row = gtk_list_box_row_new ();
+ gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
row_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_style_context_add_class (gtk_widget_get_style_context (row_box), "linked");
+ gtk_widget_add_css_class (row_box, "linked");
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET6));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "address", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), address);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), address);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = gtk_entry_new ();
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "prefix", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), prefix ? prefix : "");
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), prefix ? prefix : "");
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = GTK_WIDGET (ce_ip_address_entry_new (AF_INET6));
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "gateway", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), gateway);
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 16);
+ gtk_editable_set_text (GTK_EDITABLE (widget), gateway);
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 16);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
widget = gtk_entry_new ();
g_signal_connect_object (widget, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (widget, "activate", G_CALLBACK (ensure_empty_routes_row), self, G_CONNECT_SWAPPED);
g_object_set_data (G_OBJECT (row), "metric", widget);
- gtk_entry_set_text (GTK_ENTRY (widget), metric ? metric : "");
- gtk_entry_set_width_chars (GTK_ENTRY (widget), 5);
+ gtk_editable_set_text (GTK_EDITABLE (widget), metric ? metric : "");
+ gtk_editable_set_width_chars (GTK_EDITABLE (widget), 5);
gtk_widget_set_hexpand (widget, TRUE);
- gtk_container_add (GTK_CONTAINER (row_box), widget);
+ gtk_box_append (GTK_BOX (row_box), widget);
gtk_size_group_add_widget (self->routes_metric_sizegroup, widget);
- delete_button = gtk_button_new ();
- gtk_style_context_add_class (gtk_widget_get_style_context (delete_button), "image-button");
+ delete_button = gtk_button_new_from_icon_name ("edit-delete-symbolic");
g_signal_connect_object (delete_button, "clicked", G_CALLBACK (remove_row), self, G_CONNECT_SWAPPED);
- image = gtk_image_new_from_icon_name ("edit-delete-symbolic", GTK_ICON_SIZE_MENU);
- atk_object_set_name (gtk_widget_get_accessible (delete_button), _("Delete Route"));
- gtk_button_set_image (GTK_BUTTON (delete_button), image);
+ gtk_accessible_update_property (GTK_ACCESSIBLE (delete_button),
+ GTK_ACCESSIBLE_PROPERTY_LABEL, _("Delete Route"),
+ -1);
gtk_widget_set_halign (delete_button, GTK_ALIGN_CENTER);
gtk_widget_set_valign (delete_button, GTK_ALIGN_CENTER);
- gtk_container_add (GTK_CONTAINER (row_box), delete_button);
+ gtk_box_append (GTK_BOX (row_box), delete_button);
g_object_set_data (G_OBJECT (row), "delete-button", delete_button);
gtk_size_group_add_widget (self->routes_sizegroup, delete_button);
- gtk_container_add (GTK_CONTAINER (row), row_box);
- gtk_widget_show_all (row);
- gtk_container_add (GTK_CONTAINER (self->routes_list), row);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), row_box);
+ gtk_list_box_append (GTK_LIST_BOX (self->routes_list), row);
update_row_sensitivity (self, self->routes_list);
}
@@ -386,17 +376,10 @@ add_route_row (CEPageIP6 *self,
static void
ensure_empty_routes_row (CEPageIP6 *self)
{
- g_autoptr(GList) children = NULL;
- GList *l;
-
- children = gtk_container_get_children (GTK_CONTAINER (self->routes_list));
- l = g_list_last (children);
-
- while (l && l->next)
- l = l->next;
+ GtkWidget *child = gtk_widget_get_last_child (self->routes_list);
/* Add the last, stub row if needed*/
- if (!l || validate_row (l->data))
+ if (!child || validate_row (child))
add_route_row (self, "", NULL, "", NULL);
}
@@ -414,8 +397,7 @@ add_routes_box (CEPageIP6 *self)
self->routes_list = list = gtk_list_box_new ();
gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL);
- gtk_container_add (GTK_CONTAINER (self->routes_box), list);
+ gtk_box_append (self->routes_box, list);
gtk_switch_set_active (self->auto_routes_switch, !nm_setting_ip_config_get_ignore_auto_routes (self->setting));
g_signal_connect_object (self->auto_routes_switch, "notify::active", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
@@ -434,8 +416,6 @@ add_routes_box (CEPageIP6 *self)
}
if (nm_setting_ip_config_get_num_routes (self->setting) == 0)
add_empty_route_row (self);
-
- gtk_widget_show_all (GTK_WIDGET (self->routes_box));
}
static void
@@ -444,9 +424,6 @@ connect_ip6_page (CEPageIP6 *self)
const gchar *str_method;
guint method;
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->main_box),
- gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self)));
-
add_address_box (self);
add_dns_section (self);
add_routes_box (self);
@@ -476,8 +453,8 @@ connect_ip6_page (CEPageIP6 *self)
method = IP6_METHOD_DISABLED;
}
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->never_default_check),
- nm_setting_ip_config_get_never_default (self->setting));
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->never_default_check),
+ nm_setting_ip_config_get_never_default (self->setting));
g_signal_connect_object (self->never_default_check, "toggled", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->automatic_radio, "toggled", G_CALLBACK (method_changed), self, G_CONNECT_SWAPPED);
@@ -488,22 +465,22 @@ connect_ip6_page (CEPageIP6 *self)
switch (method) {
case IP6_METHOD_AUTO:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->automatic_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->automatic_radio), TRUE);
break;
case IP6_METHOD_DHCP:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->dhcp_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->dhcp_radio), TRUE);
break;
case IP6_METHOD_LINK_LOCAL:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->local_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->local_radio), TRUE);
break;
case IP6_METHOD_MANUAL:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->manual_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->manual_radio), TRUE);
break;
case IP6_METHOD_SHARED:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->shared_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->shared_radio), TRUE);
break;
case IP6_METHOD_DISABLED:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->disabled_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->disabled_radio), TRUE);
break;
default:
break;
@@ -515,41 +492,44 @@ connect_ip6_page (CEPageIP6 *self)
static gboolean
ui_to_setting (CEPageIP6 *self)
{
+ GtkWidget *child;
const gchar *method;
gboolean ignore_auto_dns;
gboolean ignore_auto_routes;
gboolean never_default;
- g_autoptr(GList) address_children = NULL;
- g_autoptr(GList) routes_children = NULL;
+ gboolean add_addresses = FALSE;
+ gboolean add_routes = FALSE;
gboolean ret = TRUE;
GStrv dns_addresses = NULL;
gchar *dns_text = NULL;
guint i;
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->disabled_radio)))
+ if (gtk_check_button_get_active (self->disabled_radio))
method = NM_SETTING_IP6_CONFIG_METHOD_DISABLED;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->manual_radio)))
+ else if (gtk_check_button_get_active (self->manual_radio))
method = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->local_radio)))
+ else if (gtk_check_button_get_active (self->local_radio))
method = NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->dhcp_radio)))
+ else if (gtk_check_button_get_active (self->dhcp_radio))
method = NM_SETTING_IP6_CONFIG_METHOD_DHCP;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->automatic_radio)))
+ else if (gtk_check_button_get_active (self->automatic_radio))
method = NM_SETTING_IP6_CONFIG_METHOD_AUTO;
- else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->shared_radio)))
+ else if (gtk_check_button_get_active (self->shared_radio))
method = NM_SETTING_IP6_CONFIG_METHOD_SHARED;
nm_setting_ip_config_clear_addresses (self->setting);
if (g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) {
- address_children = gtk_container_get_children (GTK_CONTAINER (self->address_list));
+ add_addresses = TRUE;
} else {
g_object_set (G_OBJECT (self->setting),
NM_SETTING_IP_CONFIG_GATEWAY, NULL,
NULL);
}
- for (GList *l = address_children; l; l = l->next) {
- GtkWidget *row = l->data;
+ for (child = gtk_widget_get_first_child (self->address_list);
+ add_addresses && child;
+ child = gtk_widget_get_next_sibling (child)) {
+ GtkWidget *row = child;
CEIPAddressEntry *address_entry;
CEIPAddressEntry *gateway_entry;
const gchar *text_prefix;
@@ -561,7 +541,7 @@ ui_to_setting (CEPageIP6 *self)
if (!address_entry)
continue;
- text_prefix = gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (row), "prefix")));
+ text_prefix = gtk_editable_get_text (GTK_EDITABLE (g_object_get_data (G_OBJECT (row), "prefix")));
gateway_entry = CE_IP_ADDRESS_ENTRY (g_object_get_data (G_OBJECT (row), "gateway"));
if (ce_ip_address_entry_is_empty (address_entry) && !*text_prefix && ce_ip_address_entry_is_empty (gateway_entry)) {
@@ -587,19 +567,19 @@ ui_to_setting (CEPageIP6 *self)
if (!ret)
continue;
- addr = nm_ip_address_new (AF_INET6, gtk_entry_get_text (GTK_ENTRY (address_entry)), prefix, NULL);
+ addr = nm_ip_address_new (AF_INET6, gtk_editable_get_text (GTK_EDITABLE (address_entry)), prefix, NULL);
if (!ce_ip_address_entry_is_empty (gateway_entry))
g_object_set (G_OBJECT (self->setting),
- NM_SETTING_IP_CONFIG_GATEWAY, gtk_entry_get_text (GTK_ENTRY (gateway_entry)),
+ NM_SETTING_IP_CONFIG_GATEWAY, gtk_editable_get_text (GTK_EDITABLE (gateway_entry)),
NULL);
nm_setting_ip_config_add_address (self->setting, addr);
- if (!l || !l->next)
+ if (!gtk_widget_get_next_sibling (row))
ensure_empty_address_row (self);
}
nm_setting_ip_config_clear_dns (self->setting);
- dns_text = g_strstrip (g_strdup (gtk_entry_get_text (GTK_ENTRY (self->dns_entry))));
+ dns_text = g_strstrip (g_strdup (gtk_editable_get_text (GTK_EDITABLE (self->dns_entry))));
if (g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO) ||
g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP) ||
@@ -629,13 +609,14 @@ ui_to_setting (CEPageIP6 *self)
}
nm_setting_ip_config_clear_routes (self->setting);
- if (g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO) ||
- g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP) ||
- g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL))
- routes_children = gtk_container_get_children (GTK_CONTAINER (self->routes_list));
-
- for (GList *l = routes_children; l; l = l->next) {
- GtkWidget *row = l->data;
+ add_routes = g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO) ||
+ g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP) ||
+ g_str_equal (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL);
+
+ for (child = gtk_widget_get_first_child (self->routes_list);
+ add_routes && child;
+ child = gtk_widget_get_next_sibling (child)) {
+ GtkWidget *row = child;
CEIPAddressEntry *address_entry;
CEIPAddressEntry *gateway_entry;
const gchar *text_prefix;
@@ -649,9 +630,9 @@ ui_to_setting (CEPageIP6 *self)
if (!address_entry)
continue;
- text_prefix = gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (row), "prefix")));
+ text_prefix = gtk_editable_get_text (GTK_EDITABLE (g_object_get_data (G_OBJECT (row), "prefix")));
gateway_entry = CE_IP_ADDRESS_ENTRY (g_object_get_data (G_OBJECT (row), "gateway"));
- text_metric = gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (row), "metric")));
+ text_metric = gtk_editable_get_text (GTK_EDITABLE (g_object_get_data (G_OBJECT (row), "metric")));
if (ce_ip_address_entry_is_empty (address_entry) && !*text_prefix && ce_ip_address_entry_is_empty (gateway_entry) && !*text_metric) {
/* ignore empty rows */
@@ -691,11 +672,16 @@ ui_to_setting (CEPageIP6 *self)
if (!ret)
continue;
- route = nm_ip_route_new (AF_INET6, gtk_entry_get_text (GTK_ENTRY (address_entry)), prefix, gtk_entry_get_text (GTK_ENTRY (gateway_entry)), metric, NULL);
+ route = nm_ip_route_new (AF_INET6,
+ gtk_editable_get_text (GTK_EDITABLE (address_entry)),
+ prefix,
+ gtk_editable_get_text (GTK_EDITABLE (gateway_entry)),
+ metric,
+ NULL);
nm_setting_ip_config_add_route (self->setting, route);
nm_ip_route_unref (route);
- if (!l || !l->next)
+ if (!gtk_widget_get_next_sibling (row))
ensure_empty_routes_row (self);
}
@@ -704,7 +690,7 @@ ui_to_setting (CEPageIP6 *self)
ignore_auto_dns = !gtk_switch_get_active (self->auto_dns_switch);
ignore_auto_routes = !gtk_switch_get_active (self->auto_routes_switch);
- never_default = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->never_default_check));
+ never_default = gtk_check_button_get_active (self->never_default_check);
g_object_set (self->setting,
NM_SETTING_IP_CONFIG_METHOD, method,
diff --git a/panels/network/connection-editor/ce-page-ip6.h b/panels/network/connection-editor/ce-page-ip6.h
index 718a62cbb..c2c7d1be1 100644
--- a/panels/network/connection-editor/ce-page-ip6.h
+++ b/panels/network/connection-editor/ce-page-ip6.h
@@ -21,12 +21,12 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
#include <NetworkManager.h>
G_BEGIN_DECLS
-G_DECLARE_FINAL_TYPE (CEPageIP6, ce_page_ip6, CE, PAGE_IP6, GtkScrolledWindow)
+G_DECLARE_FINAL_TYPE (CEPageIP6, ce_page_ip6, CE, PAGE_IP6, AdwBin)
CEPageIP6 *ce_page_ip6_new (NMConnection *connection,
NMClient *client);
diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c
index f640cbe13..a63b9394a 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -157,28 +157,23 @@ wsec_size_group_clear (GtkSizeGroup *group)
static void
security_combo_changed (CEPageSecurity *self)
{
- GList *l, *children;
g_autoptr(WirelessSecurity) sec = NULL;
+ GtkWidget *child;
wsec_size_group_clear (self->group);
- children = gtk_container_get_children (GTK_CONTAINER (self->box));
- for (l = children; l; l = l->next) {
- gtk_container_remove (GTK_CONTAINER (self->box), GTK_WIDGET (l->data));
- }
+ while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->box))) != NULL)
+ gtk_box_remove (self->box, child);
sec = security_combo_get_active (self);
if (sec) {
- GtkWidget *parent;
-
- parent = gtk_widget_get_parent (GTK_WIDGET (sec));
- if (parent)
- gtk_container_remove (GTK_CONTAINER (parent), GTK_WIDGET (sec));
+ if (gtk_widget_get_parent (GTK_WIDGET (sec)))
+ gtk_box_remove (self->box, GTK_WIDGET (sec));
gtk_size_group_add_widget (self->group, GTK_WIDGET (self->security_label));
wireless_security_add_to_size_group (sec, self->group);
- gtk_container_add (GTK_CONTAINER (self->box), g_object_ref (GTK_WIDGET (sec)));
+ gtk_box_append (self->box, g_object_ref (GTK_WIDGET (sec)));
}
ce_page_changed (CE_PAGE (self));
diff --git a/panels/network/connection-editor/ce-page-vpn.c b/panels/network/connection-editor/ce-page-vpn.c
index 9ad0a26f2..36afde53d 100644
--- a/panels/network/connection-editor/ce-page-vpn.c
+++ b/panels/network/connection-editor/ce-page-vpn.c
@@ -63,14 +63,7 @@ G_DEFINE_TYPE_WITH_CODE (CEPageVpn, ce_page_vpn, GTK_TYPE_BOX,
static void
vpn_gnome3ify_editor (GtkWidget *widget)
{
- if (GTK_IS_CONTAINER (widget)) {
- GList *children, *iter;
-
- children = gtk_container_get_children (GTK_CONTAINER (widget));
- for (iter = children; iter; iter = iter->next)
- vpn_gnome3ify_editor (iter->data);
- g_list_free (children);
- } else if (GTK_IS_LABEL (widget)) {
+ if (GTK_IS_LABEL (widget)) {
const char *text;
gfloat xalign;
g_autofree gchar *newtext = NULL;
@@ -87,6 +80,13 @@ vpn_gnome3ify_editor (GtkWidget *widget)
newtext = g_strndup (text, len - 1);
gtk_label_set_text (GTK_LABEL (widget), newtext);
gtk_label_set_xalign (GTK_LABEL (widget), 1.0);
+ } else if (GTK_IS_WIDGET (widget)) {
+ GtkWidget *child;
+
+ for (child = gtk_widget_get_first_child (widget);
+ child;
+ child = gtk_widget_get_next_sibling (child))
+ vpn_gnome3ify_editor (child);
}
}
@@ -109,10 +109,8 @@ load_vpn_plugin (CEPageVpn *self)
}
vpn_gnome3ify_editor (ui_widget);
- gtk_widget_destroy (GTK_WIDGET (self->failure_label));
-
- gtk_box_pack_start (GTK_BOX (self), ui_widget, TRUE, TRUE, 0);
- gtk_widget_show_all (ui_widget);
+ gtk_box_remove (GTK_BOX (self), GTK_WIDGET (self->failure_label));
+ gtk_box_append (GTK_BOX (self), ui_widget);
g_signal_connect_object (self->editor, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
}
@@ -123,7 +121,7 @@ connect_vpn_page (CEPageVpn *self)
const gchar *name;
name = nm_setting_connection_get_id (self->setting_connection);
- gtk_entry_set_text (self->name_entry, name);
+ gtk_editable_set_text (GTK_EDITABLE (self->name_entry), name);
g_signal_connect_object (self->name_entry, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
}
@@ -158,7 +156,7 @@ ce_page_vpn_validate (CEPage *page,
CEPageVpn *self = CE_PAGE_VPN (page);
g_object_set (self->setting_connection,
- NM_SETTING_CONNECTION_ID, gtk_entry_get_text (self->name_entry),
+ NM_SETTING_CONNECTION_ID, gtk_editable_get_text (GTK_EDITABLE (self->name_entry)),
NULL);
if (!nm_setting_verify (NM_SETTING (self->setting_connection), NULL, error))
diff --git a/panels/network/connection-editor/ce-page-wifi.c b/panels/network/connection-editor/ce-page-wifi.c
index 7246170b7..5a662920e 100644
--- a/panels/network/connection-editor/ce-page-wifi.c
+++ b/panels/network/connection-editor/ce-page-wifi.c
@@ -65,7 +65,7 @@ connect_wifi_page (CEPageWifi *self)
utf8_ssid = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid));
else
utf8_ssid = g_strdup ("");
- gtk_entry_set_text (self->ssid_entry, utf8_ssid);
+ gtk_editable_set_text (GTK_EDITABLE (self->ssid_entry), utf8_ssid);
g_signal_connect_object (self->ssid_entry, "changed", G_CALLBACK (ce_page_changed), self, G_CONNECT_SWAPPED);
@@ -101,18 +101,18 @@ ui_to_setting (CEPageWifi *self)
g_autofree gchar *device_mac = NULL;
g_autofree gchar *cloned_mac = NULL;
- utf8_ssid = gtk_entry_get_text (self->ssid_entry);
+ utf8_ssid = gtk_editable_get_text (GTK_EDITABLE (self->ssid_entry));
if (!utf8_ssid || !*utf8_ssid)
ssid = NULL;
else {
ssid = g_bytes_new_static (utf8_ssid, strlen (utf8_ssid));
}
- entry = gtk_bin_get_child (GTK_BIN (self->bssid_combo));
- bssid = gtk_entry_get_text (GTK_ENTRY (entry));
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (self->bssid_combo));
+ bssid = gtk_editable_get_text (GTK_EDITABLE (entry));
if (*bssid == '\0')
bssid = NULL;
- entry = gtk_bin_get_child (GTK_BIN (self->mac_combo));
- device_mac = ce_page_trim_address (gtk_entry_get_text (GTK_ENTRY (entry)));
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (self->mac_combo));
+ device_mac = ce_page_trim_address (gtk_editable_get_text (GTK_EDITABLE (entry)));
cloned_mac = ce_page_cloned_mac_get (self->cloned_mac_combo);
g_object_set (self->setting,
@@ -138,16 +138,16 @@ ce_page_wifi_class_validate (CEPage *parent,
GtkWidget *entry;
gboolean ret = TRUE;
- entry = gtk_bin_get_child (GTK_BIN (self->bssid_combo));
- if (!ce_page_address_is_valid (gtk_entry_get_text (GTK_ENTRY (entry)))) {
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (self->bssid_combo));
+ if (!ce_page_address_is_valid (gtk_editable_get_text (GTK_EDITABLE (entry)))) {
widget_set_error (entry);
ret = FALSE;
} else {
widget_unset_error (entry);
}
- entry = gtk_bin_get_child (GTK_BIN (self->mac_combo));
- if (!ce_page_address_is_valid (gtk_entry_get_text (GTK_ENTRY (entry)))) {
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (self->mac_combo));
+ if (!ce_page_address_is_valid (gtk_editable_get_text (GTK_EDITABLE (entry)))) {
widget_set_error (entry);
ret = FALSE;
} else {
@@ -155,10 +155,10 @@ ce_page_wifi_class_validate (CEPage *parent,
}
if (!ce_page_cloned_mac_combo_valid (self->cloned_mac_combo)) {
- widget_set_error (gtk_bin_get_child (GTK_BIN (self->cloned_mac_combo)));
+ widget_set_error (gtk_combo_box_get_child (GTK_COMBO_BOX (self->cloned_mac_combo)));
ret = FALSE;
} else {
- widget_unset_error (gtk_bin_get_child (GTK_BIN (self->cloned_mac_combo)));
+ widget_unset_error (gtk_combo_box_get_child (GTK_COMBO_BOX (self->cloned_mac_combo)));
}
if (!ret)
diff --git a/panels/network/connection-editor/ce-page.c b/panels/network/connection-editor/ce-page.c
index fb5d3993f..b6f07796f 100644
--- a/panels/network/connection-editor/ce-page.c
+++ b/panels/network/connection-editor/ce-page.c
@@ -207,9 +207,9 @@ ce_page_setup_mac_combo (GtkComboBoxText *combo,
gtk_combo_box_text_prepend_text (combo, current_mac);
}
- entry = gtk_bin_get_child (GTK_BIN (combo));
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (combo));
if (entry)
- gtk_entry_set_text (GTK_ENTRY (entry), active_mac ? active_mac : current_mac);
+ gtk_editable_set_text (GTK_EDITABLE (entry), active_mac ? active_mac : current_mac);
}
}
@@ -253,9 +253,9 @@ ce_page_setup_cloned_mac_combo (GtkComboBoxText *combo, const char *current)
if (active != -1) {
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), active);
} else if (current && current[0]) {
- entry = gtk_bin_get_child (GTK_BIN (combo));
+ entry = gtk_combo_box_get_child (GTK_COMBO_BOX (combo));
g_assert (entry);
- gtk_entry_set_text (GTK_ENTRY (entry), current);
+ gtk_editable_set_text (GTK_EDITABLE (entry), current);
}
}
diff --git a/panels/network/connection-editor/connection-editor.ui b/panels/network/connection-editor/connection-editor.ui
index 6a83f134e..98105ce78 100644
--- a/panels/network/connection-editor/connection-editor.ui
+++ b/panels/network/connection-editor/connection-editor.ui
@@ -2,22 +2,16 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="NetConnectionEditor" parent="GtkDialog">
- <property name="can_focus">False</property>
- <property name="border_width">0</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default_width">500</property>
<property name="default_height">300</property>
- <property name="type_hint">dialog</property>
<!-- This doesn't seem to work for a template, so it is also hardcoded. -->
<property name="use_header_bar">1</property>
- <signal name="delete-event" handler="delete_event_cb" swapped="yes"/>
+ <signal name="close-request" handler="close_request_cb" swapped="yes"/>
<child type="action">
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">_Cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="cancel_clicked_cb" object="NetConnectionEditor" swapped="yes"/>
</object>
@@ -25,83 +19,49 @@
<child type="action">
<object class="GtkButton" id="apply_button">
<property name="label" translatable="yes">_Apply</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">True</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="apply_clicked_cb" object="NetConnectionEditor" swapped="yes"/>
</object>
</child>
- <child internal-child="vbox">
+ <child>
<object class="GtkBox">
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">0</property>
- <property name="border_width">0</property>
<child>
<object class="GtkStack" id="toplevel_stack">
- <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<child>
<object class="GtkSpinner" id="spinner">
- <property name="visible">True</property>
- <property name="active">True</property>
+ <property name="spinning">True</property>
</object>
</child>
<child>
<object class="GtkNotebook" id="notebook">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="show_border">False</property>
</object>
</child>
<child>
<object class="GtkBox" id="add_connection_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="vexpand">True</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
+ <property name="hexpand">True</property>
<property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkFrame" id="add_connection_frame">
- <property name="width_request">300</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">in</property>
+ <object class="AdwBin" id="add_connection_frame">
+ <property name="hexpand">True</property>
<property name="vexpand">True</property>
+ <property name="width_request">300</property>
<property name="valign">start</property>
- <child>
- <placeholder/>
- </child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="position">0</property>
- </packing>
</child>
</object>
- <packing>
- <property name="position">1</property>
- </packing>
</child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</child>
diff --git a/panels/network/connection-editor/details-page.ui b/panels/network/connection-editor/details-page.ui
index 7dfabbe6d..109ee0a2e 100644
--- a/panels/network/connection-editor/details-page.ui
+++ b/panels/network/connection-editor/details-page.ui
@@ -2,8 +2,6 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="CEPageDetails" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_start">24</property>
<property name="margin_end">24</property>
<property name="margin_top">24</property>
@@ -12,350 +10,310 @@
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="strength_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Signal Strength</property>
<property name="mnemonic_widget">strength_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="strength_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label">Weak</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="speed_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Link speed</property>
<property name="mnemonic_widget">speed_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="speed_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">1Mb/sec</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="security_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Security</property>
<property name="mnemonic_widget">security_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv4_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">IPv4 Address</property>
<property name="mnemonic_widget">ipv4_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv6_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">IPv6 Address</property>
<property name="mnemonic_widget">ipv6_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="mac_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Hardware Address</property>
<property name="mnemonic_widget">mac_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="freq_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Supported Frequencies</property>
<property name="mnemonic_widget">freq_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">6</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">6</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="route_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Default Route</property>
<property name="mnemonic_widget">route_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">7</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">7</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns4_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">DNS</property>
<property name="mnemonic_widget">dns4_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">8</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">8</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns6_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">DNS</property>
<property name="mnemonic_widget">dns6_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">9</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">9</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="last_used_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Last Used</property>
<property name="mnemonic_widget">last_used_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">10</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">10</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="security_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">WPA</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv4_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">127.0.0.1</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv6_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">::1</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="mac_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">AA:BB:CC:DD:55:66:77:88</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="freq_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">2.4 GHz / 5 GHz</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">6</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">6</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="route_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">127.0.0.1</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">7</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">7</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns4_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="label">127.0.0.1</property>
@@ -364,18 +322,16 @@
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">8</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">8</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns6_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="label">::1</property>
@@ -384,85 +340,74 @@
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">9</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">9</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="last_used_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label">today</property>
<property name="selectable">True</property>
<property name="hexpand">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">10</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">10</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="auto_connect_check">
<property name="label" translatable="yes">Connect _automatically</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="valign">end</property>
<property name="use_underline">True</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
<property name="margin_top">12</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">11</property>
+ <property name="column-span">2</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">11</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="all_user_check">
<property name="label" translatable="yes">Make available to _other users</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">12</property>
+ <property name="column-span">2</property>
+ <property name="row-span">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">12</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<!-- "Restrict Data Usage" section -->
<child>
<object class="GtkCheckButton" id="restrict_data_check">
- <property name="can_focus">True</property>
<property name="margin_bottom">12</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">13</property>
+ <property name="column-span">2</property>
+ <property name="row-span">1</property>
+ </layout>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Metered connection: has data limits or can incur charges</property>
<property name="hexpand">True</property>
@@ -472,8 +417,6 @@
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Software updates and other large downloads will not be started automatically.</property>
<property name="wrap">True</property>
@@ -490,33 +433,25 @@
</child>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">13</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkButton" id="forget_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="use_underline">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="halign">end</property>
<property name="valign">end</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">14</property>
+ <property name="column-span">2</property>
+ <property name="row-span">1</property>
+ </layout>
<style>
<class name="destructive-action" />
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">14</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/connection-editor/ethernet-page.ui b/panels/network/connection-editor/ethernet-page.ui
index 4f7331b31..ad4f2cbb3 100644
--- a/panels/network/connection-editor/ethernet-page.ui
+++ b/panels/network/connection-editor/ethernet-page.ui
@@ -7,8 +7,6 @@
<property name="page_increment">10</property>
</object>
<template class="CEPageEthernet" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_start">50</property>
<property name="margin_end">50</property>
<property name="margin_top">12</property>
@@ -19,159 +17,105 @@
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Name</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">name_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="name_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="invisible_char">●</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_MAC Address</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">mac_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBoxText" id="mac_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="has_entry">True</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBoxText" id="cloned_mac_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="has_entry">True</property>
<property name="hexpand">True</property>
<property name="active_id">0</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
<child internal-child="entry">
<object class="GtkEntry">
- <property name="can_focus">True</property>
</object>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">M_TU</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">mtu_spin</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="valign">center</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Cloned Address</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">cloned_mac_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="mtu_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">bytes</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkSpinButton" id="mtu_spin">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
<property name="adjustment">mtu_adjustment</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
</child>
</template>
</interface>
diff --git a/panels/network/connection-editor/ip4-page.ui b/panels/network/connection-editor/ip4-page.ui
index 714036b55..ce7934d9d 100644
--- a/panels/network/connection-editor/ip4-page.ui
+++ b/panels/network/connection-editor/ip4-page.ui
@@ -1,420 +1,313 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
- <template class="CEPageIP4" parent="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
+ <template class="CEPageIP4" parent="AdwBin">
<child>
- <object class="GtkViewport">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar_policy">never</property>
<child>
- <object class="GtkGrid" id="main_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_start">24</property>
- <property name="margin_end">24</property>
- <property name="margin_top">24</property>
- <property name="margin_bottom">24</property>
- <property name="orientation">vertical</property>
- <property name="row-spacing">6</property>
- <property name="column-spacing">6</property>
+ <object class="GtkViewport">
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">IPv_4 Method</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">disabled_radio</property>
- <property name="xalign">0.0</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="top-attach">0</property>
- <property name="left-attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="automatic_radio">
- <property name="label" translatable="yes">Automatic (DHCP)</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="top-attach">0</property>
- <property name="left-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="local_radio">
- <property name="label" translatable="yes">Link-Local Only</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">0</property>
- <property name="left-attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="manual_radio">
- <property name="label" translatable="yes">Manual</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">1</property>
- <property name="left-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="disabled_radio">
- <property name="label" translatable="yes">Disable</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">1</property>
- <property name="left-attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="shared_radio">
- <property name="label" translatable="yes">Shared to other computers</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">2</property>
- <property name="left-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="content_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkGrid" id="main_box">
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
<property name="orientation">vertical</property>
- <property name="spacing">6</property>
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">IPv_4 Method</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">disabled_radio</property>
+ <property name="xalign">0.0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="automatic_radio">
+ <property name="label" translatable="yes">Automatic (DHCP)</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="local_radio">
+ <property name="label" translatable="yes">Link-Local Only</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="manual_radio">
+ <property name="label" translatable="yes">Manual</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="disabled_radio">
+ <property name="label" translatable="yes">Disable</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="shared_radio">
+ <property name="label" translatable="yes">Shared to other computers</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
<child>
- <object class="GtkBox" id="address_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ <property name="column-span">3</property>
+ </layout>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Addresses</property>
- <property name="margin_top">24</property>
- <property name="margin_bottom">8</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">horizontal</property>
+ <object class="GtkBox" id="address_box">
+ <property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Address</property>
- <style>
- <class name="dim-label" />
- </style>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Addresses</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">8</property>
<attributes>
- <attribute name="scale" value="0.8"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Address</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Netmask</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Gateway</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+
+ <!-- This invisible box is used to add some width in the
+ end of the header row, assuming the space used by the
+ delete button in the rows -->
+ <child>
+ <object class="GtkBox" id="address_stub_box">
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="margin_top">24</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="dns4_label">
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Netmask</property>
- <style>
- <class name="dim-label" />
- </style>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">DNS</property>
<attributes>
- <attribute name="scale" value="0.8"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Gateway</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Automatic</property>
</object>
</child>
-
- <!-- This invisible box is used to add some width in the
- end of the header row, assuming the space used by the
- delete button in the rows -->
<child>
- <object class="GtkBox" id="address_stub_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkSwitch" id="auto_dns_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <accessibility>
+ <property name="label" translatable="yes">Automatic DNS</property>
+ </accessibility>
</object>
</child>
</object>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_top">24</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="dns4_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">DNS</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Automatic</property>
- </object>
- </child>
<child>
- <object class="GtkSwitch" id="auto_dns_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Automatic DNS</property>
- </object>
- </child>
+ <object class="GtkEntry" id="dns_entry">
</object>
</child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="dns_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Separate IP addresses with commas</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_top">24</property>
- <property name="spacing">6</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Routes</property>
+ <property name="label" translatable="yes">Separate IP addresses with commas</property>
+ <style>
+ <class name="dim-label" />
+ </style>
<attributes>
- <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="0.8"/>
</attributes>
</object>
</child>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Automatic</property>
- </object>
- </child>
- <child>
- <object class="GtkSwitch" id="auto_routes_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Automatic Routes</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="routes_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">horizontal</property>
- <child>
- <object class="GtkLabel" id="routes_address_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Address</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
- </object>
- </child>
+ <property name="margin_top">24</property>
+ <property name="spacing">6</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="xalign">0</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Netmask</property>
- <style>
- <class name="dim-label" />
- </style>
+ <property name="label" translatable="yes">Routes</property>
<attributes>
- <attribute name="scale" value="0.8"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Gateway</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Automatic</property>
</object>
</child>
<child>
- <object class="GtkLabel" id="routes_metric_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" comments="Translators: Please see https://en.wikipedia.org/wiki/Metrics_(networking)">Metric</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
+ <object class="GtkSwitch" id="auto_routes_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <accessibility>
+ <property name="label" translatable="yes">Automatic Routes</property>
+ </accessibility>
</object>
</child>
-
- <!-- This invisible box is used to add some width in the
- end of the header row, assuming the space used by the
- delete button in the rows -->
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="routes_box">
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkBox" id="routes_stub_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="routes_address_label">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Address</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Netmask</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Gateway</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="routes_metric_label">
+ <property name="label" translatable="yes" comments="Translators: Please see https://en.wikipedia.org/wiki/Metrics_(networking)">Metric</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+
+ <!-- This invisible box is used to add some width in the
+ end of the header row, assuming the space used by the
+ delete button in the rows -->
+ <child>
+ <object class="GtkBox" id="routes_stub_box">
+ </object>
+ </child>
</object>
</child>
</object>
</child>
+ <child>
+ <object class="GtkCheckButton" id="never_default_check">
+ <property name="label" translatable="yes">Use this connection _only for resources on its network</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="never_default_check">
- <property name="label" translatable="yes">Use this connection _only for resources on its network</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">7</property>
- </packing>
</child>
</object>
- <packing>
- <property name="top-attach">3</property>
- <property name="left-attach">0</property>
- <property name="width">3</property>
- </packing>
</child>
</object>
</child>
diff --git a/panels/network/connection-editor/ip6-page.ui b/panels/network/connection-editor/ip6-page.ui
index 06044c468..c6ec8f525 100644
--- a/panels/network/connection-editor/ip6-page.ui
+++ b/panels/network/connection-editor/ip6-page.ui
@@ -1,434 +1,322 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
- <template class="CEPageIP6" parent="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
+ <template class="CEPageIP6" parent="AdwBin">column
<child>
- <object class="GtkViewport">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkScrolledWindow">
+ <property name="hscrollbar_policy">never</property>
<child>
- <object class="GtkGrid" id="main_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_start">24</property>
- <property name="margin_end">24</property>
- <property name="margin_top">24</property>
- <property name="margin_bottom">24</property>
- <property name="orientation">vertical</property>
- <property name="row-spacing">6</property>
- <property name="column-spacing">6</property>
+ <object class="GtkViewport">
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">IPv_6 Method</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">disabled_radio</property>
- <property name="xalign">0.0</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="top-attach">0</property>
- <property name="left-attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="automatic_radio">
- <property name="label" translatable="yes">Automatic</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="top-attach">0</property>
- <property name="left-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="dhcp_radio">
- <property name="label" translatable="yes">Automatic, DHCP only</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">0</property>
- <property name="left-attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="local_radio">
- <property name="label" translatable="yes">Link-Local Only</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">1</property>
- <property name="left-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="manual_radio">
- <property name="label" translatable="yes">Manual</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">1</property>
- <property name="left-attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="disabled_radio">
- <property name="label" translatable="yes">Disable</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">2</property>
- <property name="left-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="shared_radio">
- <property name="label" translatable="yes">Shared to other computers</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_radio</property>
- </object>
- <packing>
- <property name="top-attach">2</property>
- <property name="left-attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="content_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkGrid" id="main_box">
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
<property name="orientation">vertical</property>
- <property name="spacing">6</property>
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">6</property>
<child>
- <object class="GtkBox" id="address_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">IPv_6 Method</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">disabled_radio</property>
+ <property name="xalign">0.0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="automatic_radio">
+ <property name="label" translatable="yes">Automatic</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="dhcp_radio">
+ <property name="label" translatable="yes">Automatic, DHCP only</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="local_radio">
+ <property name="label" translatable="yes">Link-Local Only</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="manual_radio">
+ <property name="label" translatable="yes">Manual</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="disabled_radio">
+ <property name="label" translatable="yes">Disable</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="shared_radio">
+ <property name="label" translatable="yes">Shared to other computers</property>
+ <property name="group">automatic_radio</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ <property name="column-span">3</property>
+ </layout>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Addresses</property>
- <property name="margin_top">24</property>
- <property name="margin_bottom">8</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">horizontal</property>
+ <object class="GtkBox" id="address_box">
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="address_address_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Address</property>
- <style>
- <class name="dim-label" />
- </style>
+ <object class="GtkLabel">
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Addresses</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">8</property>
<attributes>
- <attribute name="scale" value="0.8"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="address_address_label">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Address</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Prefix</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Gateway</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+
+ <!-- This invisible box is used to add some width in the
+ end of the header row, assuming the space used by the
+ delete button in the rows -->
+ <child>
+ <object class="GtkBox" id="address_stub_box">
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="margin_top">24</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="dns6_label">
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Prefix</property>
- <style>
- <class name="dim-label" />
- </style>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">DNS</property>
<attributes>
- <attribute name="scale" value="0.8"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Gateway</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Automatic</property>
</object>
</child>
-
- <!-- This invisible box is used to add some width in the
- end of the header row, assuming the space used by the
- delete button in the rows -->
<child>
- <object class="GtkBox" id="address_stub_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkSwitch" id="auto_dns_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <accessibility>
+ <property name="label" translatable="yes">Automatic DNS</property>
+ </accessibility>
</object>
</child>
</object>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_top">24</property>
- <property name="spacing">6</property>
<child>
- <object class="GtkLabel" id="dns6_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">DNS</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Automatic</property>
- </object>
- </child>
- <child>
- <object class="GtkSwitch" id="auto_dns_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Automatic DNS</property>
- </object>
- </child>
- </object>
+ <object class="GtkEntry" id="dns_entry" />
</child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="dns_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Separate IP addresses with commas</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_top">24</property>
- <property name="spacing">6</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Routes</property>
+ <property name="label" translatable="yes">Separate IP addresses with commas</property>
+ <style>
+ <class name="dim-label" />
+ </style>
<attributes>
- <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="0.8"/>
</attributes>
</object>
</child>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Automatic</property>
- </object>
- </child>
- <child>
- <object class="GtkSwitch" id="auto_routes_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Automatic Routes</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="routes_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">horizontal</property>
- <child>
- <object class="GtkLabel" id="routes_address_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Address</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
- </object>
- </child>
+ <property name="margin_top">24</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkLabel" id="routes_prefix_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkLabel">
+ <property name="xalign">0</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Prefix</property>
- <style>
- <class name="dim-label" />
- </style>
+ <property name="label" translatable="yes">Routes</property>
<attributes>
- <attribute name="scale" value="0.8"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">Gateway</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Automatic</property>
</object>
</child>
<child>
- <object class="GtkLabel" id="routes_metric_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" comments="Translators: Please see https://en.wikipedia.org/wiki/Metrics_(networking)">Metric</property>
- <style>
- <class name="dim-label" />
- </style>
- <attributes>
- <attribute name="scale" value="0.8"/>
- </attributes>
+ <object class="GtkSwitch" id="auto_routes_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <accessibility>
+ <property name="label" translatable="yes">Automatic Routes</property>
+ </accessibility>
</object>
</child>
-
- <!-- This invisible box is used to add some width in the
- end of the header row, assuming the space used by the
- delete button in the rows -->
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="routes_box">
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkBox" id="routes_stub_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="routes_address_label">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Address</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="routes_prefix_label">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Prefix</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Gateway</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="routes_metric_label">
+ <property name="label" translatable="yes" comments="Translators: Please see https://en.wikipedia.org/wiki/Metrics_(networking)">Metric</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
+ </object>
+ </child>
+
+ <!-- This invisible box is used to add some width in the
+ end of the header row, assuming the space used by the
+ delete button in the rows -->
+ <child>
+ <object class="GtkBox" id="routes_stub_box">
+ </object>
+ </child>
</object>
</child>
</object>
</child>
+ <child>
+ <object class="GtkCheckButton" id="never_default_check">
+ <property name="label" translatable="yes">Use this connection _only for resources on its network</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="never_default_check">
- <property name="label" translatable="yes">Use this connection _only for resources on its network</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">7</property>
- </packing>
</child>
</object>
- <packing>
- <property name="top-attach">3</property>
- <property name="left-attach">0</property>
- <property name="width">3</property>
- </packing>
</child>
</object>
</child>
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
index 505b8ee25..4b7fadc25 100644
--- a/panels/network/connection-editor/net-connection-editor.c
+++ b/panels/network/connection-editor/net-connection-editor.c
@@ -26,7 +26,6 @@
#include <NetworkManager.h>
-#include "list-box-helper.h"
#include "net-connection-editor.h"
#include "net-connection-editor-resources.h"
#include "ce-page.h"
@@ -53,7 +52,7 @@ struct _NetConnectionEditor
GtkDialog parent;
GtkBox *add_connection_box;
- GtkFrame *add_connection_frame;
+ AdwBin *add_connection_frame;
GtkButton *apply_button;
GtkButton *cancel_button;
GtkNotebook *notebook;
@@ -87,7 +86,7 @@ cancel_editing (NetConnectionEditor *self)
}
static void
-delete_event_cb (NetConnectionEditor *self)
+close_request_cb (NetConnectionEditor *self)
{
cancel_editing (self);
}
@@ -226,8 +225,8 @@ net_connection_editor_class_init (NetConnectionEditorClass *class)
gtk_widget_class_bind_template_child (widget_class, NetConnectionEditor, notebook);
gtk_widget_class_bind_template_child (widget_class, NetConnectionEditor, toplevel_stack);
- gtk_widget_class_bind_template_callback (widget_class, delete_event_cb);
gtk_widget_class_bind_template_callback (widget_class, cancel_clicked_cb);
+ gtk_widget_class_bind_template_callback (widget_class, close_request_cb);
gtk_widget_class_bind_template_callback (widget_class, apply_clicked_cb);
}
@@ -255,9 +254,7 @@ net_connection_editor_error_dialog (NetConnectionEditor *self,
"%s", secondary_text);
}
- g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_destroy), NULL);
- g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_window_present (GTK_WINDOW (dialog));
}
static void
@@ -323,7 +320,7 @@ update_sensitivity (NetConnectionEditor *self)
{
NMSettingConnection *sc;
gboolean sensitive;
- GList *pages;
+ gint i;
if (!editor_is_initialized (self))
return;
@@ -336,10 +333,9 @@ update_sensitivity (NetConnectionEditor *self)
sensitive = self->can_modify;
}
- pages = gtk_container_get_children (GTK_CONTAINER (self->notebook));
- for (GList *l = pages; l; l = l->next) {
- CEPage *page = l->data;
- gtk_widget_set_sensitive (GTK_WIDGET (page), sensitive);
+ for (i = 0; i < gtk_notebook_get_n_pages (self->notebook); i++) {
+ GtkWidget *page = gtk_notebook_get_nth_page (self->notebook, i);
+ gtk_widget_set_sensitive (page, sensitive);
}
}
@@ -347,15 +343,14 @@ static void
validate (NetConnectionEditor *self)
{
gboolean valid = FALSE;
- GList *pages;
+ gint i;
if (!editor_is_initialized (self))
goto done;
valid = TRUE;
- pages = gtk_container_get_children (GTK_CONTAINER (self->notebook));
- for (GList *l = pages; l; l = l->next) {
- CEPage *page = l->data;
+ for (i = 0; i < gtk_notebook_get_n_pages (self->notebook); i++) {
+ CEPage *page = CE_PAGE (gtk_notebook_get_nth_page (self->notebook, i));
g_autoptr(GError) error = NULL;
if (!ce_page_validate (page, self->connection, &error)) {
@@ -406,18 +401,16 @@ page_initialized (NetConnectionEditor *self, GError *error, CEPage *page)
{
GtkWidget *label;
gint position;
- GList *children, *l;
gint i;
position = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (page), "position"));
g_object_set_data (G_OBJECT (page), "position", GINT_TO_POINTER (position));
- children = gtk_container_get_children (GTK_CONTAINER (self->notebook));
- for (l = children, i = 0; l; l = l->next, i++) {
- gint pos = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (l->data), "position"));
+ for (i = 0; i < gtk_notebook_get_n_pages (self->notebook); i++) {
+ GtkWidget *page = gtk_notebook_get_nth_page (self->notebook, i);
+ gint pos = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (page), "position"));
if (pos > position)
break;
}
- g_list_free (children);
label = gtk_label_new (ce_page_get_title (page));
@@ -608,11 +601,7 @@ complete_vpn_connection (NetConnectionEditor *self, NMConnection *connection)
static void
finish_add_connection (NetConnectionEditor *self, NMConnection *connection)
{
- GtkBin *frame;
-
- frame = GTK_BIN (self->add_connection_frame);
- gtk_widget_destroy (gtk_bin_get_child (frame));
-
+ adw_bin_set_child (self->add_connection_frame, NULL);
gtk_stack_set_visible_child (self->toplevel_stack, GTK_WIDGET (self->notebook));
gtk_widget_show (GTK_WIDGET (self->apply_button));
@@ -664,18 +653,16 @@ static void
select_vpn_type (NetConnectionEditor *self, GtkListBox *list)
{
GSList *vpn_plugins, *iter;
- GList *l;
- GList *children;
GtkWidget *row, *row_box;
GtkWidget *name_label, *desc_label;
+ GtkWidget *child;
/* Get the available VPN types */
vpn_plugins = vpn_get_plugins ();
/* Remove the previous menu contents */
- children = gtk_container_get_children (GTK_CONTAINER (list));
- for (l = children; l != NULL; l = l->next)
- gtk_widget_destroy (l->data);
+ while ((child = gtk_widget_get_first_child (GTK_WIDGET (list))) != NULL)
+ gtk_list_box_remove (list, child);
/* Add the VPN types */
for (iter = vpn_plugins; iter; iter = iter->next) {
@@ -684,7 +671,6 @@ select_vpn_type (NetConnectionEditor *self, GtkListBox *list)
g_autofree gchar *desc = NULL;
g_autofree gchar *desc_markup = NULL;
g_autofree gchar *service_name = NULL;
- GtkStyleContext *context;
g_object_get (plugin,
NM_VPN_EDITOR_PLUGIN_NAME, &name,
@@ -703,20 +689,18 @@ select_vpn_type (NetConnectionEditor *self, GtkListBox *list)
name_label = gtk_label_new (name);
gtk_widget_set_halign (name_label, GTK_ALIGN_START);
- gtk_box_pack_start (GTK_BOX (row_box), name_label, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (row_box), name_label);
desc_label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (desc_label), desc_markup);
- gtk_label_set_line_wrap (GTK_LABEL (desc_label), TRUE);
+ gtk_label_set_wrap (GTK_LABEL (desc_label), TRUE);
gtk_widget_set_halign (desc_label, GTK_ALIGN_START);
- context = gtk_widget_get_style_context (desc_label);
- gtk_style_context_add_class (context, "dim-label");
- gtk_box_pack_start (GTK_BOX (row_box), desc_label, FALSE, TRUE, 0);
+ gtk_widget_add_css_class (desc_label, "dim-label");
+ gtk_box_append (GTK_BOX (row_box), desc_label);
- gtk_container_add (GTK_CONTAINER (row), row_box);
- gtk_widget_show_all (row);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), row_box);
g_object_set_data_full (G_OBJECT (row), "service_name", g_steal_pointer (&service_name), g_free);
- gtk_container_add (GTK_CONTAINER (list), row);
+ gtk_list_box_append (list, row);
}
/* Import */
@@ -730,12 +714,11 @@ select_vpn_type (NetConnectionEditor *self, GtkListBox *list)
name_label = gtk_label_new (_("Import from file…"));
gtk_widget_set_halign (name_label, GTK_ALIGN_START);
- gtk_box_pack_start (GTK_BOX (row_box), name_label, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (row_box), name_label);
- gtk_container_add (GTK_CONTAINER (row), row_box);
- gtk_widget_show_all (row);
+ gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), row_box);
g_object_set_data (G_OBJECT (row), "service_name", "import");
- gtk_container_add (GTK_CONTAINER (list), row);
+ gtk_list_box_append (list, row);
g_signal_connect_object (list, "row-activated",
G_CALLBACK (vpn_type_activated), self, G_CONNECT_SWAPPED);
@@ -744,19 +727,14 @@ select_vpn_type (NetConnectionEditor *self, GtkListBox *list)
static void
net_connection_editor_add_connection (NetConnectionEditor *self)
{
- GtkContainer *frame;
GtkListBox *list;
- frame = GTK_CONTAINER (self->add_connection_frame);
-
list = GTK_LIST_BOX (gtk_list_box_new ());
gtk_list_box_set_selection_mode (list, GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (list, cc_list_box_update_header_func, NULL, NULL);
select_vpn_type (self, list);
- gtk_widget_show_all (GTK_WIDGET (list));
- gtk_container_add (frame, GTK_WIDGET (list));
+ adw_bin_set_child (self->add_connection_frame, GTK_WIDGET (list));
gtk_stack_set_visible_child (self->toplevel_stack, GTK_WIDGET (self->add_connection_box));
gtk_widget_hide (GTK_WIDGET (self->apply_button));
diff --git a/panels/network/connection-editor/security-page.ui b/panels/network/connection-editor/security-page.ui
index f35c2502d..9a1c0debe 100644
--- a/panels/network/connection-editor/security-page.ui
+++ b/panels/network/connection-editor/security-page.ui
@@ -2,8 +2,6 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="CEPageSecurity" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_start">50</property>
<property name="margin_end">50</property>
<property name="margin_top">12</property>
@@ -14,48 +12,34 @@
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="security_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">S_ecurity</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">security_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="security_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/connection-editor/vpn-helpers.c b/panels/network/connection-editor/vpn-helpers.c
index 8ef486bb9..81ff4a2b8 100644
--- a/panels/network/connection-editor/vpn-helpers.c
+++ b/panels/network/connection-editor/vpn-helpers.c
@@ -97,6 +97,56 @@ vpn_get_plugins (void)
return plugins;
}
+
+typedef struct {
+ GMainLoop *mainloop;
+ gint response;
+} RunData;
+
+static void
+on_dialog_close_request_cb (GtkDialog *dialog,
+ gint response,
+ RunData *data)
+{
+ data->response = GTK_RESPONSE_CLOSE;
+ g_main_loop_quit (data->mainloop);
+}
+
+static void
+on_dialog_response_cb (GtkDialog *dialog,
+ gint response,
+ RunData *data)
+{
+ data->response = response;
+ g_main_loop_quit (data->mainloop);
+}
+
+static int
+run_dialog (GtkDialog *dialog)
+{
+ g_autoptr(GMainLoop) mainloop = NULL;
+ RunData run_data;
+ gulong response_id;
+ gulong close_id;
+
+ mainloop = g_main_loop_new (NULL, FALSE);
+ run_data = (RunData) {
+ .response = GTK_RESPONSE_CLOSE,
+ .mainloop = mainloop,
+ };
+
+ close_id = g_signal_connect (dialog, "close-request", G_CALLBACK (on_dialog_close_request_cb), &run_data);
+ response_id = g_signal_connect_swapped (dialog, "response", G_CALLBACK (on_dialog_response_cb), &run_data);
+
+ gtk_window_present (GTK_WINDOW (dialog));
+ g_main_loop_run (mainloop);
+
+ g_clear_signal_handler (&close_id, dialog);
+ g_clear_signal_handler (&response_id, dialog);
+
+ return run_data.response;
+}
+
typedef struct {
VpnImportCallback callback;
gpointer user_data;
@@ -106,6 +156,7 @@ static void
import_vpn_from_file_cb (GtkWidget *dialog, gint response, gpointer user_data)
{
g_autofree gchar *filename = NULL;
+ g_autoptr(GFile) file = NULL;
ActionInfo *info = (ActionInfo *) user_data;
NMConnection *connection = NULL;
g_autoptr(GError) error = NULL;
@@ -114,12 +165,13 @@ import_vpn_from_file_cb (GtkWidget *dialog, gint response, gpointer user_data)
if (response != GTK_RESPONSE_ACCEPT)
goto out;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
- if (!filename) {
+ file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
+ if (!file) {
g_warning ("%s: didn't get a filename back from the chooser!", __func__);
goto out;
}
+ filename = g_file_get_path (file);
for (iter = vpn_get_plugins (); !connection && iter; iter = iter->next) {
NMVpnEditorPlugin *plugin;
@@ -140,35 +192,33 @@ import_vpn_from_file_cb (GtkWidget *dialog, gint response, gpointer user_data)
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (err_dialog),
_("The file “%s” could not be read or does not contain recognized VPN connection information\n\nError: %s."),
bname, error ? error->message : "unknown error");
- g_signal_connect (err_dialog, "delete-event", G_CALLBACK (gtk_widget_destroy), NULL);
- g_signal_connect (err_dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_dialog_run (GTK_DIALOG (err_dialog));
+ run_dialog (GTK_DIALOG (err_dialog));
}
out:
- gtk_widget_hide (dialog);
- gtk_widget_destroy (dialog);
+ gtk_window_destroy (GTK_WINDOW (dialog));
info->callback (connection, info->user_data);
g_free (info);
}
-static void
+static gboolean
destroy_import_chooser (GtkWidget *dialog, gpointer user_data)
{
ActionInfo *info = (ActionInfo *) user_data;
- gtk_widget_destroy (dialog);
info->callback (NULL, info->user_data);
g_free (info);
+
+ return FALSE;
}
void
vpn_import (GtkWindow *parent, VpnImportCallback callback, gpointer user_data)
{
+ g_autoptr(GFile) home_folder = NULL;
GtkWidget *dialog;
ActionInfo *info;
- const char *home_folder;
dialog = gtk_file_chooser_dialog_new (_("Select file to import"),
parent,
@@ -177,16 +227,15 @@ vpn_import (GtkWindow *parent, VpnImportCallback callback, gpointer user_data)
_("_Open"), GTK_RESPONSE_ACCEPT,
NULL);
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- home_folder = g_get_home_dir ();
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), home_folder);
+ home_folder = g_file_new_for_path (g_get_home_dir ());
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), home_folder, NULL);
info = g_malloc0 (sizeof (ActionInfo));
info->callback = callback;
info->user_data = user_data;
- g_signal_connect (G_OBJECT (dialog), "close", G_CALLBACK (destroy_import_chooser), info);
+ g_signal_connect (G_OBJECT (dialog), "close-request", G_CALLBACK (destroy_import_chooser), info);
g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (import_vpn_from_file_cb), info);
- gtk_widget_show_all (dialog);
gtk_window_present (GTK_WINDOW (dialog));
}
@@ -194,6 +243,7 @@ static void
export_vpn_to_file_cb (GtkWidget *dialog, gint response, gpointer user_data)
{
g_autoptr(NMConnection) connection = NM_CONNECTION (user_data);
+ g_autoptr(GFile) file = NULL;
char *filename = NULL;
g_autoptr(GError) error = NULL;
NMVpnEditorPlugin *plugin;
@@ -206,12 +256,13 @@ export_vpn_to_file_cb (GtkWidget *dialog, gint response, gpointer user_data)
if (response != GTK_RESPONSE_ACCEPT)
goto out;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
- if (!filename) {
+ file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
+ if (!file) {
g_set_error (&error, G_IO_ERROR, G_IO_ERROR_FAILED, "no filename");
goto done;
}
+ filename = g_file_get_path (file);
if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
int replace_response;
GtkWidget *replace_dialog;
@@ -227,8 +278,8 @@ export_vpn_to_file_cb (GtkWidget *dialog, gint response, gpointer user_data)
gtk_dialog_add_buttons (GTK_DIALOG (replace_dialog), _("_Replace"), GTK_RESPONSE_OK, NULL);
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (replace_dialog),
_("Do you want to replace %s with the VPN connection you are saving?"), bname);
- replace_response = gtk_dialog_run (GTK_DIALOG (replace_dialog));
- gtk_widget_destroy (replace_dialog);
+ replace_response = run_dialog (GTK_DIALOG (replace_dialog));
+ gtk_window_destroy (GTK_WINDOW (replace_dialog));
if (replace_response != GTK_RESPONSE_OK)
goto out;
}
@@ -265,25 +316,21 @@ done:
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (err_dialog),
_("The VPN connection “%s” could not be exported to %s.\n\nError: %s."),
id ? id : "(unknown)", bname, error ? error->message : "unknown error");
- g_signal_connect (err_dialog, "delete-event", G_CALLBACK (gtk_widget_destroy), NULL);
- g_signal_connect (err_dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_widget_show_all (err_dialog);
- gtk_window_present (GTK_WINDOW (err_dialog));
+ run_dialog (GTK_DIALOG (err_dialog));
}
out:
- gtk_widget_hide (dialog);
- gtk_widget_destroy (dialog);
+ gtk_window_destroy (GTK_WINDOW (dialog));
}
void
vpn_export (NMConnection *connection)
{
+ g_autoptr(GFile) home_folder = NULL;
GtkWidget *dialog;
NMVpnEditorPlugin *plugin;
NMSettingVpn *s_vpn = NULL;
const char *service_type;
- const char *home_folder;
s_vpn = nm_connection_get_setting_vpn (connection);
service_type = s_vpn ? nm_setting_vpn_get_service_type (s_vpn) : NULL;
@@ -299,8 +346,8 @@ vpn_export (NMConnection *connection)
_("_Cancel"), GTK_RESPONSE_CANCEL,
_("_Save"), GTK_RESPONSE_ACCEPT,
NULL);
- home_folder = g_get_home_dir ();
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), home_folder);
+ home_folder = g_file_new_for_path (g_get_home_dir ());
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), home_folder, NULL);
plugin = vpn_get_plugin_by_service (service_type);
if (plugin) {
@@ -311,8 +358,6 @@ vpn_export (NMConnection *connection)
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), suggested);
}
- g_signal_connect (G_OBJECT (dialog), "close", G_CALLBACK (gtk_widget_destroy), NULL);
g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (export_vpn_to_file_cb), g_object_ref (connection));
- gtk_widget_show_all (dialog);
gtk_window_present (GTK_WINDOW (dialog));
}
diff --git a/panels/network/connection-editor/vpn-page.ui b/panels/network/connection-editor/vpn-page.ui
index 682e7a707..98f801ba7 100644
--- a/panels/network/connection-editor/vpn-page.ui
+++ b/panels/network/connection-editor/vpn-page.ui
@@ -2,8 +2,6 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="CEPageVpn" parent="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_start">50</property>
<property name="margin_end">50</property>
<property name="margin_top">12</property>
@@ -12,59 +10,32 @@
<property name="spacing">10</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Name</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">name_entry</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="name_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
<property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="failure_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">(Error: unable to load VPN connection editor)</property>
<attributes>
<attribute name="style" value="italic"/>
</attributes>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/connection-editor/wifi-page.ui b/panels/network/connection-editor/wifi-page.ui
index e15678040..6662b8f0c 100644
--- a/panels/network/connection-editor/wifi-page.ui
+++ b/panels/network/connection-editor/wifi-page.ui
@@ -2,8 +2,6 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="CEPageWifi" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_start">50</property>
<property name="margin_end">50</property>
<property name="margin_top">12</property>
@@ -14,131 +12,98 @@
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_SSID</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">ssid_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_BSSID</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">bssid_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="ssid_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_MAC Address</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">mac_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBoxText" id="cloned_mac_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="has_entry">True</property>
<property name="hexpand">True</property>
<property name="active_id">0</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
<child internal-child="entry">
<object class="GtkEntry">
- <property name="can_focus">True</property>
</object>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">_Cloned Address</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">cloned_mac_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBoxText" id="bssid_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="has_entry">True</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBoxText" id="mac_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="has_entry">True</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/net-device-ethernet.c b/panels/network/net-device-ethernet.c
index a4c3a7275..81e4687d9 100644
--- a/panels/network/net-device-ethernet.c
+++ b/panels/network/net-device-ethernet.c
@@ -23,12 +23,11 @@
#include <glib-object.h>
#include <glib/gi18n.h>
-#include <handy.h>
+#include <adwaita.h>
#include <NetworkManager.h>
#include "panel-common.h"
-#include "list-box-helper.h"
#include "connection-editor/net-connection-editor.h"
#include "connection-editor/ce-page.h"
@@ -40,8 +39,8 @@ struct _NetDeviceEthernet
GtkListBox *connection_list;
GtkButton *details_button;
- GtkFrame *details_frame;
- HdyActionRow *details_row;
+ GtkListBox *details_listbox;
+ AdwActionRow *details_row;
GtkLabel *device_label;
GtkSwitch *device_off_switch;
GtkScrolledWindow *scrolled_window;
@@ -221,7 +220,7 @@ device_ethernet_refresh_ui (NetDeviceEthernet *self)
}
}
status = panel_device_status_to_localized_string (self->device, speed_text);
- hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (self->details_row), status);
+ adw_preferences_row_set_title (ADW_PREFERENCES_ROW (self->details_row), status);
populate_ui (self);
}
@@ -243,7 +242,7 @@ show_details (NetDeviceEthernet *self, GtkButton *button, const gchar *title)
connection = NM_CONNECTION (g_object_get_data (G_OBJECT (row), "connection"));
editor = net_connection_editor_new (connection, self->device, NULL, self->client);
- gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
+ gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (self))));
if (title)
net_connection_editor_set_title (editor, title);
g_signal_connect_object (editor, "done", G_CALLBACK (editor_done), self, G_CONNECT_SWAPPED);
@@ -276,7 +275,6 @@ add_row (NetDeviceEthernet *self, NMConnection *connection)
GtkWidget *details;
NMActiveConnection *aconn;
gboolean active;
- GtkWidget *image;
active = FALSE;
@@ -290,25 +288,25 @@ add_row (NetDeviceEthernet *self, NMConnection *connection)
row = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_pack_start (GTK_BOX (row), box, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (row), box);
widget = gtk_label_new (nm_connection_get_id (connection));
gtk_widget_set_margin_start (widget, 12);
gtk_widget_set_margin_end (widget, 12);
gtk_widget_set_margin_top (widget, 8);
gtk_widget_set_margin_bottom (widget, 8);
- gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (box), widget);
if (active) {
- widget = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU);
+ widget = gtk_image_new_from_icon_name ("object-select-symbolic");
gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (box), widget);
details = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (details), 10);
gtk_grid_set_column_spacing (GTK_GRID (details), 10);
- gtk_box_pack_start (GTK_BOX (row), details, FALSE, TRUE, 0);
+ gtk_box_append (GTK_BOX (row), details);
add_details (details, self->device, connection);
}
@@ -316,31 +314,26 @@ add_row (NetDeviceEthernet *self, NMConnection *connection)
/* filler */
widget = gtk_label_new ("");
gtk_widget_set_hexpand (widget, TRUE);
- gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0);
+ gtk_box_append (GTK_BOX (box), widget);
- image = gtk_image_new_from_icon_name ("emblem-system-symbolic", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image);
- widget = gtk_button_new ();
- gtk_style_context_add_class (gtk_widget_get_style_context (widget), "image-button");
+ widget = gtk_button_new_from_icon_name ("emblem-system-symbolic");
gtk_widget_set_margin_start (widget, 12);
gtk_widget_set_margin_end (widget, 12);
gtk_widget_set_margin_top (widget, 8);
gtk_widget_set_margin_bottom (widget, 8);
- gtk_widget_show (widget);
- gtk_container_add (GTK_CONTAINER (widget), image);
gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- atk_object_set_name (gtk_widget_get_accessible (widget), _("Options…"));
- gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
+ gtk_accessible_update_property (GTK_ACCESSIBLE (widget),
+ GTK_ACCESSIBLE_PROPERTY_LABEL, _("Options…"),
+ -1);
+ gtk_box_append (GTK_BOX (box), widget);
g_object_set_data (G_OBJECT (widget), "edit", widget);
g_object_set_data (G_OBJECT (widget), "row", row);
g_signal_connect_object (widget, "clicked", G_CALLBACK (show_details_for_row), self, G_CONNECT_SWAPPED);
- gtk_widget_show_all (row);
-
g_object_set_data (G_OBJECT (row), "connection", connection);
- gtk_container_add (GTK_CONTAINER (self->connection_list), row);
+ gtk_list_box_append (self->connection_list, row);
}
static void
@@ -353,16 +346,13 @@ connection_removed (NetDeviceEthernet *self, NMRemoteConnection *connection)
static void
populate_ui (NetDeviceEthernet *self)
{
- GList *children, *c;
GSList *connections, *l;
NMConnection *connection;
+ GtkWidget *child;
gint n_connections;
- children = gtk_container_get_children (GTK_CONTAINER (self->connection_list));
- for (c = children; c; c = c->next) {
- gtk_container_remove (GTK_CONTAINER (self->connection_list), c->data);
- }
- g_list_free (children);
+ while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->connection_list))) != NULL)
+ gtk_list_box_remove (self->connection_list, child);
connections = net_device_get_valid_connections (self->client, self->device);
for (l = connections; l; l = l->next) {
@@ -374,7 +364,7 @@ populate_ui (NetDeviceEthernet *self)
n_connections = g_slist_length (connections);
if (n_connections > 1) {
- gtk_widget_hide (GTK_WIDGET (self->details_frame));
+ gtk_widget_hide (GTK_WIDGET (self->details_listbox));
for (l = connections; l; l = l->next) {
NMConnection *connection = l->data;
add_row (self, connection);
@@ -383,13 +373,13 @@ populate_ui (NetDeviceEthernet *self)
} else if (n_connections == 1) {
connection = connections->data;
gtk_widget_hide (GTK_WIDGET (self->scrolled_window));
- gtk_widget_show_all (GTK_WIDGET (self->details_frame));
+ gtk_widget_show (GTK_WIDGET (self->details_listbox));
g_object_set_data (G_OBJECT (self->details_button), "row", self->details_button);
g_object_set_data (G_OBJECT (self->details_button), "connection", connection);
} else {
gtk_widget_hide (GTK_WIDGET (self->scrolled_window));
- gtk_widget_hide (GTK_WIDGET (self->details_frame));
+ gtk_widget_hide (GTK_WIDGET (self->details_listbox));
}
g_slist_free (connections);
@@ -430,7 +420,7 @@ add_profile_button_clicked_cb (NetDeviceEthernet *self)
nm_connection_add_setting (connection, nm_setting_wired_new ());
editor = net_connection_editor_new (connection, self->device, NULL, self->client);
- gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
+ gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (self))));
g_signal_connect_object (editor, "done", G_CALLBACK (editor_done), self, G_CONNECT_SWAPPED);
gtk_window_present (GTK_WINDOW (editor));
}
@@ -460,12 +450,14 @@ static void
connection_list_row_activated_cb (NetDeviceEthernet *self, GtkListBoxRow *row)
{
NMConnection *connection;
+ GtkWidget *child;
if (!NM_IS_DEVICE_ETHERNET (self->device) ||
!nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (self->device)))
return;
- connection = NM_CONNECTION (g_object_get_data (G_OBJECT (gtk_bin_get_child (GTK_BIN (row))), "connection"));
+ child = gtk_list_box_row_get_child (GTK_LIST_BOX_ROW (row));
+ connection = NM_CONNECTION (g_object_get_data (G_OBJECT (child), "connection"));
nm_client_activate_connection_async (self->client,
connection,
@@ -497,7 +489,7 @@ net_device_ethernet_class_init (NetDeviceEthernetClass *klass)
gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, connection_list);
gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, details_button);
- gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, details_frame);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, details_listbox);
gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, details_row);
gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, device_label);
gtk_widget_class_bind_template_child (widget_class, NetDeviceEthernet, device_off_switch);
@@ -515,8 +507,6 @@ net_device_ethernet_init (NetDeviceEthernet *self)
gtk_widget_init_template (GTK_WIDGET (self));
self->connections = g_hash_table_new (NULL, NULL);
-
- gtk_list_box_set_header_func (self->connection_list, cc_list_box_update_header_func, NULL, NULL);
}
NetDeviceEthernet *
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index 886180ebc..5dc677d91 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -107,7 +107,6 @@ network_combo_changed_cb (NetDeviceMobile *self)
GtkTreeIter iter;
GtkTreeModel *model;
NMConnection *connection;
- GtkWidget *toplevel;
if (self->updating_device)
return;
@@ -122,8 +121,8 @@ network_combo_changed_cb (NetDeviceMobile *self)
COLUMN_ID, &object_path,
-1);
if (g_strcmp0 (object_path, NULL) == 0) {
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- cc_network_panel_connect_to_3g_network (toplevel, self->client, self->device);
+ GtkNative *native = gtk_widget_get_native (GTK_WIDGET (self));
+ cc_network_panel_connect_to_3g_network (GTK_WIDGET (native), self->client, self->device);
return;
}
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 69fe2e122..216e462b0 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -30,7 +30,6 @@
#include <polkit/polkit.h>
#include "cc-wifi-hotspot-dialog.h"
-#include "list-box-helper.h"
#include "hostname-helper.h"
#include "network-dialogs.h"
#include "panel-common.h"
@@ -51,17 +50,19 @@ static void show_hotspot_ui (NetDeviceWifi *self);
struct _NetDeviceWifi
{
- GtkStack parent;
+ AdwBin parent;
GtkBox *center_box;
GtkButton *connect_hidden_button;
GtkSwitch *device_off_switch;
GtkBox *header_box;
+ GtkPopover *header_button_popover;
GtkBox *hotspot_box;
CcListRow *hotspot_name_row;
CcListRow *hotspot_security_row;
CcListRow *hotspot_password_row;
GtkBox *listbox_box;
+ GtkStack *stack;
GtkButton *start_hotspot_button;
GtkLabel *status_label;
GtkLabel *title_label;
@@ -89,7 +90,7 @@ enum {
PROP_LAST,
};
-G_DEFINE_TYPE (NetDeviceWifi, net_device_wifi, GTK_TYPE_STACK)
+G_DEFINE_TYPE (NetDeviceWifi, net_device_wifi, ADW_TYPE_BIN)
static void
disable_scan_timeout (NetDeviceWifi *self)
@@ -385,10 +386,9 @@ device_off_switch_changed_cb (NetDeviceWifi *self)
static void
connect_hidden_button_clicked_cb (NetDeviceWifi *self)
{
- GtkWidget *toplevel;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- cc_network_panel_connect_to_hidden_network (toplevel, self->client);
+ GtkNative *native = gtk_widget_get_native (GTK_WIDGET (self));
+ cc_network_panel_connect_to_hidden_network (GTK_WIDGET (native), self->client);
+ gtk_popover_popdown (self->header_button_popover);
}
static void
@@ -582,7 +582,7 @@ static void
show_hotspot_ui (NetDeviceWifi *self)
{
/* show hotspot tab */
- gtk_stack_set_visible_child (GTK_STACK (self), GTK_WIDGET (self->hotspot_box));
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->hotspot_box));
}
static void
@@ -676,29 +676,10 @@ overwrite_ssid_cb (GObject *source_object,
}
static void
-start_hotspot_button_clicked_cb (NetDeviceWifi *self)
+on_wifi_hotspot_dialog_respnse_cb (GtkDialog *dialog,
+ gint response,
+ NetDeviceWifi *self)
{
- g_autofree gchar *active_ssid = NULL;
- GtkWidget *window;
- NMConnection *c;
- g_autofree gchar *hostname = NULL;
- g_autofree gchar *ssid = NULL;
- gint response;
-
- window = gtk_widget_get_toplevel (GTK_WIDGET (self));
-
- if (!self->hotspot_dialog)
- self->hotspot_dialog = cc_wifi_hotspot_dialog_new (GTK_WINDOW (window));
- cc_wifi_hotspot_dialog_set_device (self->hotspot_dialog, NM_DEVICE_WIFI (self->device));
- hostname = get_hostname ();
- ssid = pretty_hostname_to_ssid (hostname);
- cc_wifi_hotspot_dialog_set_hostname (self->hotspot_dialog, ssid);
- c = net_device_wifi_get_hotspot_connection (self);
- if (c)
- cc_wifi_hotspot_dialog_set_connection (self->hotspot_dialog, c);
-
- response = gtk_dialog_run (GTK_DIALOG (self->hotspot_dialog));
-
if (response == GTK_RESPONSE_APPLY) {
NMConnection *connection;
@@ -723,6 +704,31 @@ start_hotspot_button_clicked_cb (NetDeviceWifi *self)
}
static void
+start_hotspot_button_clicked_cb (NetDeviceWifi *self)
+{
+ GtkNative *native;
+ NMConnection *c;
+ g_autofree gchar *hostname = NULL;
+ g_autofree gchar *ssid = NULL;
+
+ native = gtk_widget_get_native (GTK_WIDGET (self));
+
+ if (!self->hotspot_dialog)
+ self->hotspot_dialog = cc_wifi_hotspot_dialog_new (GTK_WINDOW (native));
+ cc_wifi_hotspot_dialog_set_device (self->hotspot_dialog, NM_DEVICE_WIFI (self->device));
+ hostname = get_hostname ();
+ ssid = pretty_hostname_to_ssid (hostname);
+ cc_wifi_hotspot_dialog_set_hostname (self->hotspot_dialog, ssid);
+ c = net_device_wifi_get_hotspot_connection (self);
+ if (c)
+ cc_wifi_hotspot_dialog_set_connection (self->hotspot_dialog, c);
+
+ g_signal_connect (self->hotspot_dialog, "response", G_CALLBACK (on_wifi_hotspot_dialog_respnse_cb), self);
+ gtk_window_present (GTK_WINDOW (self->hotspot_dialog));
+ gtk_popover_popdown (self->header_button_popover);
+}
+
+static void
stop_shared_connection (NetDeviceWifi *self)
{
const GPtrArray *connections;
@@ -754,7 +760,7 @@ stop_shared_connection (NetDeviceWifi *self)
static void
show_wifi_list (NetDeviceWifi *self)
{
- gtk_stack_set_visible_child (GTK_STACK (self), GTK_WIDGET (self->listbox_box));
+ gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->listbox_box));
}
static void
@@ -819,7 +825,7 @@ really_forget (GtkDialog *dialog, gint response, gpointer data)
NMRemoteConnection *connection;
NetDeviceWifi *self;
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
if (response != GTK_RESPONSE_OK)
return;
@@ -838,11 +844,11 @@ really_forget (GtkDialog *dialog, gint response, gpointer data)
static void
forget_selected (GtkButton *forget, CcWifiConnectionList *list)
{
- GtkWidget *window;
+ GtkNative *native;
GtkWidget *dialog;
- window = gtk_widget_get_toplevel (GTK_WIDGET (forget));
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ native = gtk_widget_get_native (GTK_WIDGET (forget));
+ dialog = gtk_message_dialog_new (GTK_WINDOW (native),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_OTHER,
GTK_BUTTONS_NONE,
@@ -973,7 +979,7 @@ show_details_for_row (NetDeviceWifi *self, CcWifiConnectionRow *row, CcWifiConne
ap = cc_wifi_connection_row_best_access_point (row);
editor = net_connection_editor_new (connection, self->device, ap, self->client);
- gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (row))));
+ gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (row))));
gtk_window_present (GTK_WINDOW (editor));
}
@@ -1018,63 +1024,53 @@ on_connection_list_row_activated_cb (NetDeviceWifi *self,
static void
history_button_clicked_cb (NetDeviceWifi *self)
{
+ GtkListBox *listbox;
GtkWidget *dialog;
- GtkWidget *window;
+ GtkNative *native;
GtkWidget *forget;
GtkWidget *header;
GtkWidget *swin;
GtkWidget *content_area;
GtkWidget *separator;
GtkWidget *list;
- GList *list_rows;
+ GtkWidget *child;
dialog = g_object_new (GTK_TYPE_DIALOG, "use-header-bar", 1, NULL);
- window = gtk_widget_get_toplevel (GTK_WIDGET (self));
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
+ native = gtk_widget_get_native (GTK_WIDGET (self));
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (native));
gtk_window_set_title (GTK_WINDOW (dialog), _("Known Wi-Fi Networks"));
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
/* Dialog's header */
header = gtk_header_bar_new ();
- gtk_widget_show (header);
- gtk_header_bar_set_title (GTK_HEADER_BAR (header), _("Known Wi-Fi Networks"));
- gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header), TRUE);
+ gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
gtk_window_set_titlebar (GTK_WINDOW (dialog), header);
- g_signal_connect (dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
-
- g_signal_connect (dialog, "delete-event",
- G_CALLBACK (gtk_widget_destroy), NULL);
+ g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
- gtk_container_set_border_width (GTK_CONTAINER (content_area), 0);
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (content_area), GTK_ORIENTATION_VERTICAL);
- swin = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_show (swin);
+ swin = gtk_scrolled_window_new ();
gtk_widget_set_vexpand (swin, TRUE);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin), GTK_SHADOW_NONE);
- gtk_container_add (GTK_CONTAINER (content_area), swin);
+ gtk_box_append (GTK_BOX (content_area), swin);
list = GTK_WIDGET (cc_wifi_connection_list_new (self->client,
NM_DEVICE_WIFI (self->device),
FALSE, FALSE, TRUE));
- gtk_widget_show (list);
- gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE);
- gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL);
- gtk_list_box_set_sort_func (GTK_LIST_BOX (list), (GtkListBoxSortFunc)history_sort, NULL, NULL);
- gtk_container_add (GTK_CONTAINER (swin), list);
+ listbox = cc_wifi_connection_list_get_list_box (CC_WIFI_CONNECTION_LIST (list));
+ gtk_list_box_set_selection_mode (listbox, GTK_SELECTION_NONE);
+ gtk_list_box_set_sort_func (listbox, (GtkListBoxSortFunc)history_sort, NULL, NULL);
+ gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (swin), list);
/* Horizontal separator */
separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_widget_show (separator);
- gtk_container_add (GTK_CONTAINER (content_area), separator);
+ gtk_box_append (GTK_BOX (content_area), separator);
/* translators: This is the label for the "Forget wireless network" functionality */
forget = gtk_button_new_with_mnemonic (C_("Wi-Fi Network", "_Forget"));
- gtk_widget_show (forget);
gtk_widget_set_halign (forget, GTK_ALIGN_START);
gtk_widget_set_margin_top (forget, 6);
gtk_widget_set_margin_bottom (forget, 6);
@@ -1084,7 +1080,7 @@ history_button_clicked_cb (NetDeviceWifi *self)
g_signal_connect (forget, "clicked",
G_CALLBACK (forget_selected), list);
- gtk_container_add (GTK_CONTAINER (content_area), forget);
+ gtk_box_append (GTK_BOX (content_area), forget);
g_object_set_data (G_OBJECT (list), "forget", forget);
g_object_set_data (G_OBJECT (list), "net", self);
@@ -1097,7 +1093,7 @@ history_button_clicked_cb (NetDeviceWifi *self)
G_CALLBACK (on_connection_list_row_removed_cb),
self,
G_CONNECT_SWAPPED);
- g_signal_connect_object (list, "row-activated",
+ g_signal_connect_object (listbox, "row-activated",
G_CALLBACK (on_connection_list_row_activated_cb),
self,
G_CONNECT_SWAPPED);
@@ -1106,16 +1102,17 @@ history_button_clicked_cb (NetDeviceWifi *self)
self,
G_CONNECT_SWAPPED);
- list_rows = gtk_container_get_children (GTK_CONTAINER (list));
- while (list_rows)
+ for (child = gtk_widget_get_first_child (GTK_WIDGET (listbox));
+ child;
+ child = gtk_widget_get_next_sibling (child))
{
on_connection_list_row_added_cb (self,
- CC_WIFI_CONNECTION_ROW (list_rows->data),
+ CC_WIFI_CONNECTION_ROW (child),
CC_WIFI_CONNECTION_LIST (list));
- list_rows = g_list_delete_link (list_rows, list_rows);
}
gtk_window_present (GTK_WINDOW (dialog));
+ gtk_popover_popdown (self->header_button_popover);
}
static void
@@ -1175,11 +1172,13 @@ net_device_wifi_class_init (NetDeviceWifiClass *klass)
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, connect_hidden_button);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, device_off_switch);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, header_box);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, header_button_popover);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, hotspot_box);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, hotspot_name_row);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, hotspot_security_row);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, hotspot_password_row);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, listbox_box);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, stack);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, start_hotspot_button);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, status_label);
gtk_widget_class_bind_template_child (widget_class, NetDeviceWifi, title_label);
@@ -1228,6 +1227,7 @@ NetDeviceWifi *
net_device_wifi_new (CcPanel *panel, NMClient *client, NMDevice *device)
{
NetDeviceWifi *self;
+ GtkListBox *listbox;
GtkWidget *list;
self = g_object_new (net_device_wifi_get_type (), NULL);
@@ -1241,13 +1241,12 @@ net_device_wifi_new (CcPanel *panel, NMClient *client, NMDevice *device)
g_signal_connect_object (device, "state-changed", G_CALLBACK (nm_device_wifi_refresh_ui), self, G_CONNECT_SWAPPED);
list = GTK_WIDGET (cc_wifi_connection_list_new (client, NM_DEVICE_WIFI (device), TRUE, TRUE, FALSE));
- gtk_widget_show (list);
- gtk_container_add (GTK_CONTAINER (self->listbox_box), list);
+ gtk_box_append (self->listbox_box, list);
- gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL);
- gtk_list_box_set_sort_func (GTK_LIST_BOX (list), (GtkListBoxSortFunc)ap_sort, self, NULL);
+ listbox = cc_wifi_connection_list_get_list_box (CC_WIFI_CONNECTION_LIST (list));
+ gtk_list_box_set_sort_func (listbox, (GtkListBoxSortFunc)ap_sort, self, NULL);
- g_signal_connect_object (list, "row-activated",
+ g_signal_connect_object (listbox, "row-activated",
G_CALLBACK (ap_activated), self, G_CONNECT_SWAPPED);
g_signal_connect_object (list, "configure",
G_CALLBACK (show_details_for_row), self, G_CONNECT_SWAPPED);
diff --git a/panels/network/net-device-wifi.h b/panels/network/net-device-wifi.h
index 22866be68..1d4ae7dfa 100644
--- a/panels/network/net-device-wifi.h
+++ b/panels/network/net-device-wifi.h
@@ -21,13 +21,12 @@
#pragma once
-#include <gtk/gtk.h>
#include <shell/cc-panel.h>
#include <NetworkManager.h>
G_BEGIN_DECLS
-G_DECLARE_FINAL_TYPE (NetDeviceWifi, net_device_wifi, NET, DEVICE_WIFI, GtkStack)
+G_DECLARE_FINAL_TYPE (NetDeviceWifi, net_device_wifi, NET, DEVICE_WIFI, AdwBin)
NetDeviceWifi *net_device_wifi_new (CcPanel *panel,
NMClient *client,
diff --git a/panels/network/net-proxy.c b/panels/network/net-proxy.c
index 8182adc4b..fc6c7448c 100644
--- a/panels/network/net-proxy.c
+++ b/panels/network/net-proxy.c
@@ -36,12 +36,12 @@ typedef enum
struct _NetProxy
{
- GtkFrame parent;
+ AdwBin parent;
- GtkRadioButton *automatic_radio;
+ GtkCheckButton *automatic_radio;
GtkDialog *dialog;
- GtkRadioButton *manual_radio;
- GtkRadioButton *none_radio;
+ GtkCheckButton *manual_radio;
+ GtkCheckButton *none_radio;
GtkEntry *proxy_ftp_entry;
GtkEntry *proxy_http_entry;
GtkEntry *proxy_https_entry;
@@ -59,7 +59,7 @@ struct _NetProxy
GSettings *settings;
};
-G_DEFINE_TYPE (NetProxy, net_proxy, GTK_TYPE_FRAME)
+G_DEFINE_TYPE (NetProxy, net_proxy, ADW_TYPE_BIN)
static const gchar *
panel_get_string_for_value (ProxyMode mode)
@@ -155,11 +155,11 @@ panel_proxy_mode_setup_widgets (NetProxy *self, ProxyMode value)
}
static void
-panel_proxy_mode_radio_changed_cb (NetProxy *self, GtkRadioButton *radio)
+panel_proxy_mode_radio_changed_cb (NetProxy *self, GtkCheckButton *radio)
{
ProxyMode value;
- if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio)))
+ if (!gtk_check_button_get_active (GTK_CHECK_BUTTON (radio)))
return;
/* get selected radio */
@@ -185,7 +185,7 @@ panel_proxy_mode_radio_changed_cb (NetProxy *self, GtkRadioButton *radio)
static void
show_dialog_cb (NetProxy *self)
{
- gtk_window_set_transient_for (GTK_WINDOW (self->dialog), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
+ gtk_window_set_transient_for (GTK_WINDOW (self->dialog), GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (self))));
gtk_window_present (GTK_WINDOW (self->dialog));
}
@@ -350,26 +350,19 @@ net_proxy_init (NetProxy *self)
/* setup the radio before connecting to the :toggled signal */
switch (value) {
case MODE_DISABLED:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->none_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->none_radio), TRUE);
break;
case MODE_MANUAL:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->manual_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->manual_radio), TRUE);
break;
case MODE_AUTOMATIC:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->automatic_radio), TRUE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->automatic_radio), TRUE);
break;
default:
g_assert_not_reached ();
}
panel_proxy_mode_setup_widgets (self, value);
panel_update_status_label (self, value);
-
- /* prevent the dialog from being destroyed */
- g_signal_connect_object (self->dialog,
- "delete-event",
- G_CALLBACK (gtk_widget_hide_on_delete),
- self->dialog,
- G_CONNECT_SWAPPED);
}
NetProxy *
diff --git a/panels/network/net-proxy.h b/panels/network/net-proxy.h
index d0e019a33..5469c251d 100644
--- a/panels/network/net-proxy.h
+++ b/panels/network/net-proxy.h
@@ -21,11 +21,11 @@
#pragma once
-#include <gtk/gtk.h>
+#include <adwaita.h>
G_BEGIN_DECLS
-G_DECLARE_FINAL_TYPE (NetProxy, net_proxy, NET, PROXY, GtkFrame)
+G_DECLARE_FINAL_TYPE (NetProxy, net_proxy, NET, PROXY, AdwBin)
NetProxy *net_proxy_new (void);
diff --git a/panels/network/net-vpn.c b/panels/network/net-vpn.c
index 44400662b..3e2c84745 100644
--- a/panels/network/net-vpn.c
+++ b/panels/network/net-vpn.c
@@ -154,7 +154,7 @@ edit_connection (NetVpn *self)
g_autofree gchar *title = NULL;
editor = net_connection_editor_new (self->connection, NULL, NULL, self->client);
- gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
+ gtk_window_set_transient_for (GTK_WINDOW (editor), GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (self))));
title = g_strdup_printf (_("%s VPN"), nm_connection_get_id (self->connection));
net_connection_editor_set_title (editor, title);
diff --git a/panels/network/network-bluetooth.ui b/panels/network/network-bluetooth.ui
index e068af397..14ec590fc 100644
--- a/panels/network/network-bluetooth.ui
+++ b/panels/network/network-bluetooth.ui
@@ -2,28 +2,20 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="NetDeviceBluetooth" parent="GtkBox">
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkSeparator" id="separator">
- <property name="can_focus">False</property>
<property name="orientation">horizontal</property>
</object>
</child>
<child>
<object class="GtkListBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="margin_start">12</property>
@@ -31,8 +23,6 @@
<property name="spacing">12</property>
<child>
<object class="GtkLabel" id="device_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Wired</property>
@@ -41,22 +31,15 @@
</child>
<child>
<object class="GtkSwitch" id="device_off_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="valign">center</property>
<signal name="notify::active" handler="device_off_switch_changed_cb" object="NetDeviceBluetooth" swapped="yes"/>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Turn device off</property>
- </object>
- </child>
+ <accessibility>
+ <property name="label" translatable="yes">Turn device off</property>
+ </accessibility>
</object>
</child>
<child>
<object class="GtkButton" id="options_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="valign">center</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="options_button_clicked_cb" object="NetDeviceBluetooth" swapped="yes"/>
@@ -65,17 +48,13 @@
</style>
<child>
<object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="icon_name">emblem-system-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Options…</property>
- </object>
- </child>
+ <accessibility>
+ <property name="label" translatable="yes">Options…</property>
+ </accessibility>
</object>
</child>
</object>
diff --git a/panels/network/network-dialogs.c b/panels/network/network-dialogs.c
index 41ceec5e5..83df99a72 100644
--- a/panels/network/network-dialogs.c
+++ b/panels/network/network-dialogs.c
@@ -167,7 +167,7 @@ wireless_dialog_response_cb (GtkDialog *foo,
done:
gtk_widget_hide (GTK_WIDGET (dialog));
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_window_destroy (GTK_WINDOW (dialog));
}
static void
@@ -179,7 +179,7 @@ show_wireless_dialog (GtkWidget *toplevel,
g_debug ("About to parent and show a network dialog");
- g_assert (gtk_widget_is_toplevel (toplevel));
+ g_assert (GTK_IS_NATIVE (toplevel));
g_object_set (G_OBJECT (dialog),
"modal", TRUE,
"transient-for", toplevel,
diff --git a/panels/network/network-ethernet.ui b/panels/network/network-ethernet.ui
index 392282872..0864c981b 100644
--- a/panels/network/network-ethernet.ui
+++ b/panels/network/network-ethernet.ui
@@ -2,17 +2,12 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="NetDeviceEthernet" parent="GtkBox">
- <property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="device_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Wired</property>
@@ -24,18 +19,11 @@
</child>
<child>
<object class="GtkButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="relief">none</property>
+ <property name="icon_name">list-add-symbolic</property>
<signal name="clicked" handler="add_profile_button_clicked_cb" object="NetDeviceEthernet" swapped="yes"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="icon_name">list-add-symbolic</property>
- </object>
- </child>
+ <style>
+ <class name="flat" />
+ </style>
</object>
</child>
</object>
@@ -43,21 +31,15 @@
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkScrolledWindow" id="scrolled_window">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
- <property name="shadow_type">in</property>
<child>
<object class="GtkListBox" id="connection_list">
- <property name="visible">True</property>
<property name="selection-mode">none</property>
<signal name="row-activated" handler="connection_list_row_activated_cb" object="NetDeviceEthernet" swapped="yes"/>
</object>
@@ -67,54 +49,33 @@
<!-- Single profile row -->
<child>
- <object class="GtkFrame" id="details_frame">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">True</property>
+ <object class="GtkListBox" id="details_listbox">
+ <property name="selection_mode">none</property>
+ <style>
+ <class name="content" />
+ </style>
<child>
- <object class="GtkListBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="selection_mode">none</property>
+ <object class="AdwActionRow" id="details_row">
+ <property name="selectable">False</property>
+ <property name="title">Cable unplugged</property>
<child>
- <object class="HdyActionRow" id="details_row">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="selectable">False</property>
- <property name="title">Cable unplugged</property>
- <child>
- <object class="GtkSwitch" id="device_off_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <signal name="notify::active" handler="device_off_switch_changed_cb" object="NetDeviceEthernet" swapped="yes"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="details_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <signal name="clicked" handler="details_button_clicked_cb" object="NetDeviceEthernet" swapped="yes"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon-name">emblem-system-symbolic</property>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Options…</property>
- </object>
- </child>
- </object>
- </child>
+ <object class="GtkSwitch" id="device_off_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <signal name="notify::active" handler="device_off_switch_changed_cb" object="NetDeviceEthernet" swapped="yes"/>
</object>
</child>
+ <child>
+ <object class="GtkButton" id="details_button">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="icon-name">emblem-system-symbolic</property>
+ <signal name="clicked" handler="details_button_clicked_cb" object="NetDeviceEthernet" swapped="yes"/>
+ <accessibility>
+ <property name="label" translatable="yes">Options…</property>
+ </accessibility>
+ </object>
+ </child>
</object>
</child>
</object>
diff --git a/panels/network/network-mobile.ui b/panels/network/network-mobile.ui
index 6f8340b74..aa9a161b1 100644
--- a/panels/network/network-mobile.ui
+++ b/panels/network/network-mobile.ui
@@ -10,300 +10,242 @@
</columns>
</object>
<template class="NetDeviceMobile" parent="GtkBox">
- <property name="can_focus">False</property>
- <property name="border_width">12</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="row_spacing">10</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="imei_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">IMEI</property>
<property name="mnemonic_widget">imei_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="provider_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Provider</property>
<property name="mnemonic_widget">provider_label</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="imei_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">1234567890</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="provider_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">SuperTel Supremo </property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv4_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">127.0.0.1</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv6_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">5</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="route_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">6</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">6</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns4_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">7</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">7</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns6_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="max-width-chars">50</property>
<property name="ellipsize">end</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">8</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">8</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkAlignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv4_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">IP Address</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ipv6_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">IPv6 Address</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="route_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Default Route</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">6</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">6</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns4_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">DNS</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">7</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">7</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="dns6_heading_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">DNS</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">8</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">8</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="network_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Network</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
<style>
<class name="dim-label"/>
</style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="network_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="model">mobile_connections_list_store</property>
<property name="entry_text_column">1</property>
<signal name="changed" handler="network_combo_changed_cb" object="NetDeviceMobile" swapped="yes"/>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -311,22 +253,17 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
</child>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="spacing">6</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ <property name="column-span">3</property>
+ </layout>
<child>
<object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="xalign">1</property>
@@ -334,24 +271,15 @@
<property name="icon_name">network-cellular-connected</property>
<property name="icon-size">6</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="spacing">3</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="device_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">Mobile Broadband</property>
<property name="ellipsize">end</property>
@@ -360,105 +288,39 @@
<attribute name="scale" value="1.2"/>
</attributes>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="status_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">Not connected</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">True</property>
- <property name="position">1</property>
- </packing>
</child>
<child>
<object class="GtkSwitch" id="device_off_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<signal name="notify::active" handler="device_off_switch_changed_cb" object="NetDeviceMobile" swapped="yes"/>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
</child>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">3</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <placeholder/>
</child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
- <object class="GtkAlignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="yalign">1</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <property name="top_padding">12</property>
- <child>
- <object class="GtkButton" id="options_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="options_button_clicked_cb" object="NetDeviceMobile" swapped="yes"/>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">emblem-system-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Options…</property>
- </object>
- </child>
- </object>
- </child>
+ <object class="GtkButton" id="options_button">
+ <property name="halign">end</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="margin-top">12</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ <signal name="clicked" handler="options_button_clicked_cb" object="NetDeviceMobile" swapped="yes"/>
+ <accessibility>
+ <property name="label" translatable="yes">Options…</property>
+ </accessibility>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/network-proxy.ui b/panels/network/network-proxy.ui
index dcc88d5f5..ba7f43389 100644
--- a/panels/network/network-proxy.ui
+++ b/panels/network/network-proxy.ui
@@ -17,23 +17,18 @@
<property name="upper">65535</property>
<property name="step_increment">1</property>
</object>
- <template class="NetProxy" parent="GtkFrame">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <template class="NetProxy" parent="AdwBin">
<child>
<object class="GtkListBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="selection_mode">none</property>
+ <style>
+ <class name="content" />
+ </style>
<child>
<object class="GtkListBoxRow">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="spacing">12</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
@@ -41,8 +36,6 @@
<property name="margin_end">12</property>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Network Proxy</property>
<property name="ellipsize">end</property>
@@ -54,8 +47,6 @@
</child>
<child>
<object class="GtkLabel" id="status_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<style>
@@ -65,13 +56,9 @@
</child>
<child>
<object class="GtkButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<signal name="clicked" handler="show_dialog_cb" object="NetProxy" swapped="yes"/>
<child>
<object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="icon_name">emblem-system-symbolic</property>
</object>
</child>
@@ -86,403 +73,327 @@
</template>
<object class="GtkDialog" id="dialog">
<property name="use_header_bar">1</property>
- <property name="can_focus">False</property>
- <property name="border_width">18</property>
<property name="default_height">350</property>
<property name="modal">True</property>
- <property name="type_hint">dialog</property>
- <property name="window_position">center</property>
<property name="destroy_with_parent">True</property>
+ <property name="hide-on-close">True</property>
<property name="title" translatable="yes">Network Proxy</property>
- <child internal-child="vbox">
+ <child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">0</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-start">18</property>
+ <property name="margin-end">18</property>
+ <property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
- <object class="GtkRadioButton" id="automatic_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <object class="GtkCheckButton" id="automatic_radio">
<property name="label" translatable="yes">Automatic</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
<property name="group">none_radio</property>
<signal name="toggled" handler="panel_proxy_mode_radio_changed_cb" object="NetProxy" swapped="yes"/>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="manual_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <object class="GtkCheckButton" id="manual_radio">
<property name="label" translatable="yes">Manual</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
<property name="group">none_radio</property>
<signal name="toggled" handler="panel_proxy_mode_radio_changed_cb" object="NetProxy" swapped="yes"/>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="none_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <object class="GtkCheckButton" id="none_radio">
<property name="label" translatable="yes">Disabled</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
<signal name="toggled" handler="panel_proxy_mode_radio_changed_cb" object="NetProxy" swapped="yes"/>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="transition_type">crossfade</property>
<!-- Disabled (empty box) -->
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
+ <object class="GtkStackPage">
<property name="name">disabled</property>
- </packing>
+ <property name="child">
+ <object class="GtkBox" />
+ </property>
+ </object>
</child>
<!-- Manual -->
<child>
- <object class="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">start</property>
- <property name="border_width">12</property>
- <property name="row_spacing">10</property>
- <property name="column_spacing">6</property>
- <child>
- <object class="GtkAlignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
+ <object class="GtkStackPage">
+ <property name="name">manual</property>
+ <property name="child">
+ <object class="GtkGrid">
<property name="valign">start</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_HTTP Proxy</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">proxy_http_entry</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">H_TTPS Proxy</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">proxy_https_entry</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_FTP Proxy</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">proxy_ftp_entry</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Socks Host</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">proxy_socks_entry</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">6</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Ignore Hosts</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">proxy_ignore_entry</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">7</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="proxy_http_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="xalign">1</property>
- <property name="invisible_char_set">True</property>
- <property name="adjustment">proxy_port_http_adjustment</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">HTTP proxy port</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="row_spacing">10</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_HTTP Proxy</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxy_http_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <style>
+ <class name="dim-label"/>
+ </style>
</object>
</child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="proxy_https_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="proxy_ftp_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="proxy_socks_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">6</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="proxy_ignore_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">7</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="xalign">1</property>
- <property name="invisible_char_set">True</property>
- <property name="adjustment">proxy_port_https_adjustment</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">HTTPS proxy port</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">H_TTPS Proxy</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxy_https_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <style>
+ <class name="dim-label"/>
+ </style>
</object>
</child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="xalign">1</property>
- <property name="invisible_char_set">True</property>
- <property name="adjustment">proxy_port_ftp_adjustment</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">FTP proxy port</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_FTP Proxy</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxy_ftp_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <style>
+ <class name="dim-label"/>
+ </style>
</object>
</child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="xalign">1</property>
- <property name="invisible_char_set">True</property>
- <property name="adjustment">proxy_port_socks_adjustment</property>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Socks proxy port</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Socks Host</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxy_socks_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">6</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Ignore Hosts</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxy_ignore_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">7</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="proxy_http_entry">
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="xalign">1</property>
+ <property name="adjustment">proxy_port_http_adjustment</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">3</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <accessibility>
+ <property name="label" translatable="yes">HTTP proxy port</property>
+ </accessibility>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="proxy_https_entry">
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="proxy_ftp_entry">
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="proxy_socks_entry">
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">6</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="proxy_ignore_entry">
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">7</property>
+ <property name="column-span">2</property>
+ <property name="row-span">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="xalign">1</property>
+ <property name="adjustment">proxy_port_https_adjustment</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">4</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <accessibility>
+ <property name="label" translatable="yes">HTTPS proxy port</property>
+ </accessibility>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="xalign">1</property>
+ <property name="adjustment">proxy_port_ftp_adjustment</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">5</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <accessibility>
+ <property name="label" translatable="yes">FTP proxy port</property>
+ </accessibility>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="xalign">1</property>
+ <property name="adjustment">proxy_port_socks_adjustment</property>
+ <layout>
+ <property name="column">2</property>
+ <property name="row">6</property>
+ <property name="column-span">1</property>
+ <property name="row-span">1</property>
+ </layout>
+ <accessibility>
+ <property name="label" translatable="yes">Socks proxy port</property>
+ </accessibility>
</object>
</child>
</object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">6</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">manual</property>
- </packing>
</child>
<!-- Automatic -->
<child>
- <object class="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">12</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Configuration URL</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">proxy_url_entry</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="top_attach">0</property>
- <property name="left_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="proxy_url_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- </object>
- <packing>
- <property name="top_attach">0</property>
- <property name="left_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="proxy_warning_label">
- <property name="visible">False</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">WPAD warning…</property>
- <property name="wrap">True</property>
- <property name="width_chars">50</property>
+ <object class="GtkStackPage">
+ <property name="name">automatic</property>
+ <property name="child">
+ <object class="GtkGrid">
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Configuration URL</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">proxy_url_entry</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEntry" id="proxy_url_entry">
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="proxy_warning_label">
+ <property name="visible">False</property>
+ <property name="xalign">0</property>
+ <property name="wrap">True</property>
+ <property name="width_chars">50</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
</object>
- <packing>
- <property name="top_attach">1</property>
- <property name="left_attach">0</property>
- <property name="width">2</property>
- </packing>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">automatic</property>
- </packing>
</child>
+
</object>
</child>
</object>
diff --git a/panels/network/network-vpn.ui b/panels/network/network-vpn.ui
index f60add2b8..bd6dd3d4a 100644
--- a/panels/network/network-vpn.ui
+++ b/panels/network/network-vpn.ui
@@ -2,14 +2,12 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<template class="NetVpn" parent="GtkBox">
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<!-- HACK: a separator above the row, since we don't have a real listbox widget in the panel -->
<child>
<object class="GtkSeparator" id="separator">
- <property name="can_focus">False</property>
<property name="orientation">horizontal</property>
</object>
</child>
@@ -17,18 +15,15 @@
<!-- Main listbox -->
<child>
<object class="GtkListBox">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="selection_mode">none</property>
+ <style>
+ <class name="content" />
+ </style>
<child>
<object class="GtkListBoxRow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
@@ -37,8 +32,6 @@
<property name="spacing">12</property>
<child>
<object class="GtkLabel" id="device_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="ellipsize">end</property>
<property name="hexpand">True</property>
@@ -46,37 +39,21 @@
</child>
<child>
<object class="GtkSwitch" id="device_off_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<signal name="notify::active" handler="device_off_toggled" object="NetVpn" swapped="yes"/>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Turn VPN connection off</property>
- </object>
- </child>
+ <accessibility>
+ <property name="label" translatable="yes">Turn VPN connection off</property>
+ </accessibility>
</object>
</child>
<child>
<object class="GtkButton" id="options_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_underline">True</property>
+ <property name="icon_name">emblem-system-symbolic</property>
<signal name="clicked" handler="edit_connection" object="NetVpn" swapped="yes"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">emblem-system-symbolic</property>
- </object>
- </child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Options…</property>
- </object>
- </child>
+ <accessibility>
+ <property name="label" translatable="yes">Options…</property>
+ </accessibility>
</object>
</child>
</object>
diff --git a/panels/network/network-wifi.ui b/panels/network/network-wifi.ui
index b3e03c31e..2d5f13207 100644
--- a/panels/network/network-wifi.ui
+++ b/panels/network/network-wifi.ui
@@ -1,39 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
- <template class="NetDeviceWifi" parent="GtkStack">
- <child>
- <object class="GtkBox" id="listbox_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="height-request">140</property>
- </object>
- </child>
+ <template class="NetDeviceWifi" parent="AdwBin">
- <!-- Wi-Fi Hotspot deails -->
<child>
- <object class="GtkListBox" id="hotspot_box">
- <property name="visible">True</property>
- <property name="selection-mode">none</property>
- <child>
- <object class="CcListRow" id="hotspot_name_row">
- <property name="visible">True</property>
- <property name="title" context="Wi-Fi Hotspot" translatable="yes">Network Name</property>
- </object>
- </child>
+ <object class="GtkStack" id="stack">
+ <property name="valign">start</property>
+ <property name="vhomogeneous">False</property>
+
<child>
- <object class="CcListRow" id="hotspot_security_row">
- <property name="visible">True</property>
- <property name="title" context="Wi-Fi Hotspot" translatable="yes">Security type</property>
+ <object class="GtkStackPage">
+ <property name="child">
+ <object class="GtkBox" id="listbox_box">
+ <property name="orientation">vertical</property>
+ <property name="height-request">140</property>
+ </object>
+ </property>
</object>
</child>
+
+ <!-- Wi-Fi Hotspot deails -->
<child>
- <object class="CcListRow" id="hotspot_password_row">
- <property name="visible">True</property>
- <property name="title" context="Wi-Fi Hotspot" translatable="yes">Password</property>
+ <object class="GtkStackPage">
+ <property name="child">
+ <object class="GtkListBox" id="hotspot_box">
+ <property name="selection-mode">none</property>
+ <style>
+ <class name="content" />
+ </style>
+ <child>
+ <object class="CcListRow" id="hotspot_name_row">
+ <property name="activatable">False</property>
+ <property name="title" context="Wi-Fi Hotspot" translatable="yes">Network Name</property>
+ </object>
+ </child>
+ <child>
+ <object class="CcListRow" id="hotspot_security_row">
+ <property name="activatable">False</property>
+ <property name="title" context="Wi-Fi Hotspot" translatable="yes">Security type</property>
+ </object>
+ </child>
+ <child>
+ <object class="CcListRow" id="hotspot_password_row">
+ <property name="activatable">False</property>
+ <property name="title" context="Wi-Fi Hotspot" translatable="yes">Password</property>
+ </object>
+ </child>
+ </object>
+ </property>
</object>
</child>
+
</object>
</child>
@@ -41,15 +58,11 @@
<!-- Center widget -->
<object class="GtkBox" id="center_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="halign">center</property>
<property name="valign">center</property>
<child>
<object class="GtkLabel" id="title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">Wi-Fi</property>
<style>
<class name="title" />
@@ -58,8 +71,6 @@
</child>
<child>
<object class="GtkLabel" id="status_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<style>
<class name="subtitle" />
</style>
@@ -69,32 +80,22 @@
<!-- Box with the On/Off switch + menu button -->
<object class="GtkBox" id="header_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="halign">end</property>
<child>
<object class="GtkSwitch" id="device_off_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="valign">center</property>
<signal name="notify::active" handler="device_off_switch_changed_cb" object="NetDeviceWifi" swapped="yes"/>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Turn Wi-Fi off</property>
- </object>
- </child>
+ <accessibility>
+ <property name="label" translatable="yes">Turn Wi-Fi off</property>
+ </accessibility>
</object>
</child>
<child>
<object class="GtkMenuButton" id="header_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="popover">header_button_popover</property>
<child>
<object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="icon_name">view-more-symbolic</property>
</object>
</child>
@@ -103,44 +104,36 @@
</object>
<!-- Menu Popover -->
- <object class="GtkPopoverMenu" id="header_button_popover">
+ <object class="GtkPopover" id="header_button_popover">
+ <style>
+ <class name="menu" />
+ </style>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin">12</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<property name="spacing">6</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkModelButton" id="connect_hidden_button">
+ <object class="GtkButton" id="connect_hidden_button">
<property name="label" translatable="yes">_Connect to Hidden Network…</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="use_underline">True</property>
- <property name="xalign">0.0</property>
<signal name="clicked" handler="connect_hidden_button_clicked_cb" object="NetDeviceWifi" swapped="yes"/>
</object>
</child>
<child>
- <object class="GtkModelButton" id="start_hotspot_button">
+ <object class="GtkButton" id="start_hotspot_button">
<property name="label" translatable="yes">_Turn On Wi-Fi Hotspot…</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="use_underline">True</property>
- <property name="xalign">0.0</property>
<signal name="clicked" handler="start_hotspot_button_clicked_cb" object="NetDeviceWifi" swapped="yes"/>
</object>
</child>
<child>
- <object class="GtkModelButton">
+ <object class="GtkButton">
<property name="label" translatable="yes">_Known Wi-Fi Networks</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="use_underline">True</property>
- <property name="xalign">0.0</property>
<signal name="clicked" handler="history_button_clicked_cb" object="NetDeviceWifi" swapped="yes"/>
</object>
</child>
diff --git a/panels/network/wireless-security/eap-method-fast.c b/panels/network/wireless-security/eap-method-fast.c
index ecd1fb985..0988b8cf3 100644
--- a/panels/network/wireless-security/eap-method-fast.c
+++ b/panels/network/wireless-security/eap-method-fast.c
@@ -27,6 +27,7 @@
#include "eap-method-simple.h"
#include "helpers.h"
#include "ui-helpers.h"
+#include "ws-file-chooser-button.h"
#define I_NAME_COLUMN 0
#define I_ID_COLUMN 1
@@ -40,7 +41,7 @@ struct _EAPMethodFAST {
GtkLabel *inner_auth_label;
GtkListStore *inner_auth_model;
GtkBox *inner_auth_box;
- GtkFileChooserButton *pac_file_button;
+ WsFileChooserButton *pac_file_button;
GtkLabel *pac_file_label;
GtkCheckButton *pac_provision_check;
GtkComboBox *pac_provision_combo;
@@ -76,12 +77,12 @@ static gboolean
validate (EAPMethod *parent, GError **error)
{
EAPMethodFAST *self = (EAPMethodFAST *) parent;
- const char *file;
+ g_autoptr(GFile) file = NULL;
gboolean provisioning;
gboolean valid = TRUE;
- provisioning = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->pac_provision_check));
- file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->pac_file_button));
+ provisioning = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->pac_provision_check));
+ file = ws_file_chooser_button_get_file (self->pac_file_button);
if (!provisioning && !file) {
widget_set_error (GTK_WIDGET (self->pac_file_button));
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP-FAST PAC file"));
@@ -110,9 +111,10 @@ static void
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags flags)
{
EAPMethodFAST *self = (EAPMethodFAST *) parent;
+ g_autofree gchar *filename = NULL;
+ g_autoptr(GFile) file = NULL;
NMSetting8021x *s_8021x;
const char *text;
- char *filename;
gboolean enabled;
int pac_provisioning = 0;
@@ -121,14 +123,15 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
nm_setting_802_1x_add_eap_method (s_8021x, "fast");
- text = gtk_entry_get_text (self->anon_identity_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->anon_identity_entry));
if (text && strlen (text))
g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL);
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->pac_file_button));
+ file = ws_file_chooser_button_get_file (self->pac_file_button);
+ filename = file ? g_file_get_path (file) : NULL;
g_object_set (s_8021x, NM_SETTING_802_1X_PAC_FILE, filename, NULL);
- enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->pac_provision_check));
+ enabled = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->pac_provision_check));
if (!enabled)
g_object_set (G_OBJECT (s_8021x), NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, "0", NULL);
@@ -158,21 +161,21 @@ static void
inner_auth_combo_changed_cb (EAPMethodFAST *self)
{
EAPMethod *inner_method;
- GList *children;
+ GtkWidget *child;
inner_method = get_inner_method (self);
/* Remove the previous method and migrate username/password across */
- children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
- if (children != NULL) {
- EAPMethod *old_eap = g_list_nth_data (children, 0);
+ child = gtk_widget_get_first_child (GTK_WIDGET (self->inner_auth_box));
+ if (child != NULL) {
+ EAPMethod *old_eap = EAP_METHOD (child);
eap_method_set_username (inner_method, eap_method_get_username (old_eap));
eap_method_set_password (inner_method, eap_method_get_password (old_eap));
eap_method_set_show_password (inner_method, eap_method_get_show_password (old_eap));
- gtk_container_remove (GTK_CONTAINER (self->inner_auth_box), GTK_WIDGET (old_eap));
+ gtk_box_remove (self->inner_auth_box, child);
}
- gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (inner_method)));
+ gtk_box_append (self->inner_auth_box, g_object_ref (GTK_WIDGET (inner_method)));
eap_method_emit_changed (EAP_METHOD (self));
}
@@ -246,7 +249,7 @@ pac_toggled_cb (EAPMethodFAST *self)
{
gboolean enabled = FALSE;
- enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->pac_provision_check));
+ enabled = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->pac_provision_check));
gtk_widget_set_sensitive (GTK_WIDGET (self->pac_provision_combo), enabled);
eap_method_emit_changed (EAP_METHOD (self));
@@ -269,6 +272,8 @@ eap_method_fast_class_init (EAPMethodFASTClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ g_type_ensure (WS_TYPE_FILE_CHOOSER_BUTTON);
+
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);
@@ -306,7 +311,6 @@ eap_method_fast_new (NMConnection *connection)
EAPMethodFAST *self;
GtkFileFilter *filter;
NMSetting8021x *s_8021x = NULL;
- const char *filename;
gboolean provisioning_enabled = TRUE;
const gchar *phase2_auth = NULL;
GtkTreeIter iter;
@@ -335,31 +339,30 @@ eap_method_fast_new (NMConnection *connection)
gtk_widget_set_sensitive (GTK_WIDGET (self->pac_provision_combo), provisioning_enabled);
g_signal_connect_swapped (self->pac_provision_combo, "changed", G_CALLBACK (changed_cb), self);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->pac_provision_check), provisioning_enabled);
+ gtk_check_button_set_active (self->pac_provision_check, provisioning_enabled);
g_signal_connect_swapped (self->pac_provision_check, "toggled", G_CALLBACK (pac_toggled_cb), self);
if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x))
- gtk_entry_set_text (self->anon_identity_entry, nm_setting_802_1x_get_anonymous_identity (s_8021x));
+ gtk_editable_set_text (GTK_EDITABLE (self->anon_identity_entry), nm_setting_802_1x_get_anonymous_identity (s_8021x));
g_signal_connect_swapped (self->anon_identity_entry, "changed", G_CALLBACK (changed_cb), self);
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (self->pac_file_button), TRUE);
- gtk_file_chooser_button_set_title (self->pac_file_button,
- _("Choose a PAC file"));
- g_signal_connect_swapped (self->pac_file_button, "selection-changed", G_CALLBACK (changed_cb), self);
+ g_signal_connect_swapped (self->pac_file_button, "notify::file", G_CALLBACK (changed_cb), self);
filter = gtk_file_filter_new ();
gtk_file_filter_add_pattern (filter, "*.pac");
gtk_file_filter_set_name (filter, _("PAC files (*.pac)"));
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (self->pac_file_button), filter);
+ gtk_file_chooser_add_filter (ws_file_chooser_button_get_filechooser (self->pac_file_button), filter);
filter = gtk_file_filter_new ();
gtk_file_filter_add_pattern (filter, "*");
gtk_file_filter_set_name (filter, _("All files"));
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (self->pac_file_button), filter);
+ gtk_file_chooser_add_filter (ws_file_chooser_button_get_filechooser (self->pac_file_button), filter);
if (connection && s_8021x) {
- filename = nm_setting_802_1x_get_pac_file (s_8021x);
- if (filename)
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->pac_file_button), filename);
+ const char *filename = nm_setting_802_1x_get_pac_file (s_8021x);
+ if (filename) {
+ g_autoptr(GFile) file = g_file_new_for_path (filename);
+ ws_file_chooser_button_set_file (self->pac_file_button, file);
+ }
}
self->em_gtc = eap_method_simple_new (connection, "gtc", TRUE, FALSE);
diff --git a/panels/network/wireless-security/eap-method-fast.ui b/panels/network/wireless-security/eap-method-fast.ui
index 3d4f1dd25..ad63b1818 100644
--- a/panels/network/wireless-security/eap-method-fast.ui
+++ b/panels/network/wireless-security/eap-method-fast.ui
@@ -37,96 +37,82 @@
</data>
</object>
<template class="EAPMethodFAST" parent="GtkGrid">
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="anon_identity_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Anony_mous identity</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">anon_identity_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="anon_identity_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="pac_file_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">PAC _file</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">pac_file_button</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
- <object class="GtkFileChooserButton" id="pac_file_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="WsFileChooserButton" id="pac_file_button">
<property name="hexpand">True</property>
+ <property name="title" translatable="yes">Choose a PAC file</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="inner_auth_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ <property name="row">4</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="width">2</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="inner_auth_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Inner authentication</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">inner_auth_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="inner_auth_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">inner_auth_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -134,31 +120,25 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="pac_provision_check">
<property name="label" translatable="yes">Allow automatic PAC pro_visioning</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="pac_provision_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">pac_provision_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -166,10 +146,6 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/eap-method-leap.c b/panels/network/wireless-security/eap-method-leap.c
index d218ade19..a5ff59e2e 100644
--- a/panels/network/wireless-security/eap-method-leap.c
+++ b/panels/network/wireless-security/eap-method-leap.c
@@ -47,7 +47,7 @@ static void
show_toggled_cb (EAPMethodLEAP *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
gtk_entry_set_visibility (self->password_entry, visible);
}
@@ -59,7 +59,7 @@ validate (EAPMethod *parent, GError **error)
const char *text;
gboolean ret = TRUE;
- text = gtk_entry_get_text (self->username_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->username_entry));
if (!text || !strlen (text)) {
widget_set_error (GTK_WIDGET (self->username_entry));
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP-LEAP username"));
@@ -73,7 +73,7 @@ validate (EAPMethod *parent, GError **error)
return TRUE;
}
- text = gtk_entry_get_text (self->password_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
if (!text || !strlen (text)) {
widget_set_error (GTK_WIDGET (self->password_entry));
if (ret) {
@@ -106,8 +106,8 @@ fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFla
nm_setting_802_1x_add_eap_method (s_8021x, "leap");
- g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (self->username_entry), NULL);
- g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_entry_get_text (self->password_entry), NULL);
+ g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_editable_get_text (GTK_EDITABLE (self->username_entry)), NULL);
+ g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_editable_get_text (GTK_EDITABLE (self->password_entry)), NULL);
/* Save 802.1X password flags to the connection */
secret_flags = nma_utils_menu_to_secret_flags (GTK_WIDGET (self->password_entry));
@@ -146,42 +146,42 @@ static const gchar *
get_username (EAPMethod *method)
{
EAPMethodLEAP *self = EAP_METHOD_LEAP (method);
- return gtk_entry_get_text (self->username_entry);
+ return gtk_editable_get_text (GTK_EDITABLE (self->username_entry));
}
static void
set_username (EAPMethod *method, const gchar *username)
{
EAPMethodLEAP *self = EAP_METHOD_LEAP (method);
- gtk_entry_set_text (self->username_entry, username);
+ gtk_editable_set_text (GTK_EDITABLE (self->username_entry), username);
}
static const gchar *
get_password (EAPMethod *method)
{
EAPMethodLEAP *self = EAP_METHOD_LEAP (method);
- return gtk_entry_get_text (self->password_entry);
+ return gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
}
static void
set_password (EAPMethod *method, const gchar *password)
{
EAPMethodLEAP *self = EAP_METHOD_LEAP (method);
- gtk_entry_set_text (self->password_entry, password);
+ gtk_editable_set_text (GTK_EDITABLE (self->password_entry), password);
}
static gboolean
get_show_password (EAPMethod *method)
{
EAPMethodLEAP *self = EAP_METHOD_LEAP (method);
- return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ return gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
}
static void
set_show_password (EAPMethod *method, gboolean show_password)
{
EAPMethodLEAP *self = EAP_METHOD_LEAP (method);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->show_password_check), show_password);
+ gtk_check_button_set_active (self->show_password_check, show_password);
}
static void
diff --git a/panels/network/wireless-security/eap-method-leap.ui b/panels/network/wireless-security/eap-method-leap.ui
index abb6ea442..3f945bd3d 100644
--- a/panels/network/wireless-security/eap-method-leap.ui
+++ b/panels/network/wireless-security/eap-method-leap.ui
@@ -2,79 +2,62 @@
<interface>
<requires lib="gtk+" version="3.4"/>
<template class="EAPMethodLEAP" parent="GtkGrid">
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <placeholder/>
- </child>
- <child>
<object class="GtkLabel" id="username_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Username</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">username_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Password</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">password_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="show_password_check">
<property name="label" translatable="yes">Sho_w password</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="username_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/eap-method-peap.c b/panels/network/wireless-security/eap-method-peap.c
index 08997cde3..b30419da1 100644
--- a/panels/network/wireless-security/eap-method-peap.c
+++ b/panels/network/wireless-security/eap-method-peap.c
@@ -27,6 +27,7 @@
#include "eap-method-simple.h"
#include "helpers.h"
#include "ui-helpers.h"
+#include "ws-file-chooser-button.h"
#define I_NAME_COLUMN 0
#define I_ID_COLUMN 1
@@ -36,7 +37,7 @@ struct _EAPMethodPEAP {
GtkEntry *anon_identity_entry;
GtkLabel *anon_identity_label;
- GtkFileChooserButton *ca_cert_button;
+ WsFileChooserButton *ca_cert_button;
GtkLabel *ca_cert_label;
GtkCheckButton *ca_cert_not_required_check;
GtkBox *inner_auth_box;
@@ -82,17 +83,17 @@ validate (EAPMethod *method, GError **error)
EAPMethodPEAP *self = EAP_METHOD_PEAP (method);
g_autoptr(GError) local_error = NULL;
- if (!eap_method_validate_filepicker (GTK_FILE_CHOOSER (self->ca_cert_button),
+ if (!eap_method_validate_filepicker (ws_file_chooser_button_get_filechooser (self->ca_cert_button),
TYPE_CA_CERT, NULL, NULL, &local_error)) {
g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-PEAP CA certificate: %s"), local_error->message);
return FALSE;
}
- if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check))) {
- g_autofree gchar *filename = NULL;
+ if (!gtk_check_button_get_active (GTK_CHECK_BUTTON (self->ca_cert_not_required_check))) {
+ g_autoptr(GFile) file = NULL;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
- if (filename == NULL) {
+ file = ws_file_chooser_button_get_file (self->ca_cert_button);
+ if (file == NULL) {
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-PEAP CA certificate: no certificate specified"));
return FALSE;
}
@@ -104,8 +105,8 @@ validate (EAPMethod *method, GError **error)
static void
ca_cert_not_required_toggled (EAPMethodPEAP *self)
{
- eap_method_ca_cert_not_required_toggled (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
- GTK_FILE_CHOOSER (self->ca_cert_button));
+ eap_method_ca_cert_not_required_toggled (self->ca_cert_not_required_check,
+ ws_file_chooser_button_get_filechooser (self->ca_cert_button));
eap_method_emit_changed (EAP_METHOD (self));
}
@@ -133,6 +134,7 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
const char *text;
g_autofree gchar *filename = NULL;
+ g_autoptr(GFile) file = NULL;
int peapver_active = 0;
g_autoptr(GError) error = NULL;
gboolean ca_cert_error = FALSE;
@@ -142,11 +144,12 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
nm_setting_802_1x_add_eap_method (s_8021x, "peap");
- text = gtk_entry_get_text (self->anon_identity_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->anon_identity_entry));
if (text && strlen (text))
g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL);
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
+ file = ws_file_chooser_button_get_file (self->ca_cert_button);
+ filename = file ? g_file_get_path (file) : NULL;
if (!nm_setting_802_1x_set_ca_cert (s_8021x, filename, NM_SETTING_802_1X_CK_SCHEME_PATH, &format, &error)) {
g_warning ("Couldn't read CA certificate '%s': %s", filename, error ? error->message : "(unknown)");
ca_cert_error = TRUE;
@@ -173,21 +176,21 @@ static void
inner_auth_combo_changed_cb (EAPMethodPEAP *self)
{
EAPMethod *inner_method;
- GList *children;
+ GtkWidget *child;
inner_method = get_inner_method (self);
/* Remove the previous method and migrate username/password across */
- children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
- if (children != NULL) {
- EAPMethod *old_eap = g_list_nth_data (children, 0);
+ child = gtk_widget_get_first_child (GTK_WIDGET (self->inner_auth_box));
+ if (child != NULL) {
+ EAPMethod *old_eap = EAP_METHOD (child);
eap_method_set_username (inner_method, eap_method_get_username (old_eap));
eap_method_set_password (inner_method, eap_method_get_password (old_eap));
eap_method_set_show_password (inner_method, eap_method_get_show_password (old_eap));
- gtk_container_remove (GTK_CONTAINER (self->inner_auth_box), GTK_WIDGET (old_eap));
+ gtk_box_remove (self->inner_auth_box, GTK_WIDGET (old_eap));
}
- gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (inner_method)));
+ gtk_box_append (self->inner_auth_box, g_object_ref (GTK_WIDGET (inner_method)));
eap_method_emit_changed (EAP_METHOD (self));
}
@@ -323,21 +326,21 @@ eap_method_peap_new (NMConnection *connection)
g_signal_connect_swapped (self->ca_cert_not_required_check, "toggled", G_CALLBACK (ca_cert_not_required_toggled), self);
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (self->ca_cert_button), TRUE);
- gtk_file_chooser_button_set_title (self->ca_cert_button,
- _("Choose a Certificate Authority certificate"));
- g_signal_connect_swapped (self->ca_cert_button, "selection-changed", G_CALLBACK (changed_cb), self);
+ g_signal_connect_swapped (self->ca_cert_button, "notify::file", G_CALLBACK (changed_cb), self);
filter = eap_method_default_file_chooser_filter_new (FALSE);
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (self->ca_cert_button), filter);
+ gtk_file_chooser_add_filter (ws_file_chooser_button_get_filechooser (self->ca_cert_button),
+ filter);
if (connection && s_8021x) {
filename = NULL;
if (nm_setting_802_1x_get_ca_cert_scheme (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH) {
filename = nm_setting_802_1x_get_ca_cert_path (s_8021x);
- if (filename)
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->ca_cert_button), filename);
+ if (filename) {
+ g_autoptr(GFile) file = g_file_new_for_path (filename);
+ ws_file_chooser_button_set_file (self->ca_cert_button, file);
+ }
}
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
- !filename && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection));
+ gtk_check_button_set_active (self->ca_cert_not_required_check,
+ !filename && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection));
}
self->em_mschap_v2 = eap_method_simple_new (connection, "mschapv2", TRUE, FALSE);
@@ -389,7 +392,7 @@ eap_method_peap_new (NMConnection *connection)
g_signal_connect_swapped (self->version_combo, "changed", G_CALLBACK (changed_cb), self);
if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x))
- gtk_entry_set_text (self->anon_identity_entry, nm_setting_802_1x_get_anonymous_identity (s_8021x));
+ gtk_editable_set_text (GTK_EDITABLE (self->anon_identity_entry), nm_setting_802_1x_get_anonymous_identity (s_8021x));
g_signal_connect_swapped (self->anon_identity_entry, "changed", G_CALLBACK (changed_cb), self);
return self;
diff --git a/panels/network/wireless-security/eap-method-peap.ui b/panels/network/wireless-security/eap-method-peap.ui
index 32766bf7a..ac04783d9 100644
--- a/panels/network/wireless-security/eap-method-peap.ui
+++ b/panels/network/wireless-security/eap-method-peap.ui
@@ -41,95 +41,82 @@
</data>
</object>
<template class="EAPMethodPEAP" parent="GtkGrid">
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="anon_identity_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Anony_mous identity</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">anon_identity_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="anon_identity_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ca_cert_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">C_A certificate</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">ca_cert_button</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
- <object class="GtkFileChooserButton" id="ca_cert_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="WsFileChooserButton" id="ca_cert_button">
<property name="hexpand">True</property>
+ <property name="title" translatable="yes">Choose a Certificate Authority certificate</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="ca_cert_not_required_check">
<property name="label" translatable="yes">No CA certificate is _required</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="version_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">PEAP _version</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">version_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="version_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">version_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -137,31 +124,27 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="inner_auth_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Inner authentication</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">inner_auth_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="inner_auth_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">inner_auth_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -169,25 +152,16 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="inner_auth_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">2</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/eap-method-simple.c b/panels/network/wireless-security/eap-method-simple.c
index bb405a48b..d0f0b2200 100644
--- a/panels/network/wireless-security/eap-method-simple.c
+++ b/panels/network/wireless-security/eap-method-simple.c
@@ -54,7 +54,7 @@ show_toggled_cb (EAPMethodSimple *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
gtk_entry_set_visibility (self->password_entry, visible);
}
@@ -72,7 +72,7 @@ validate (EAPMethod *method, GError **error)
const char *text;
gboolean ret = TRUE;
- text = gtk_entry_get_text (self->username_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->username_entry));
if (!text || !strlen (text)) {
widget_set_error (GTK_WIDGET (self->username_entry));
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP username"));
@@ -84,7 +84,7 @@ validate (EAPMethod *method, GError **error)
if (always_ask_selected (self->password_entry))
widget_unset_error (GTK_WIDGET (self->password_entry));
else {
- text = gtk_entry_get_text (self->password_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
if (!text || !strlen (text)) {
widget_set_error (GTK_WIDGET (self->password_entry));
if (ret) {
@@ -139,7 +139,7 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
} else
nm_setting_802_1x_add_eap_method (s_8021x, self->name);
- g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (self->username_entry), NULL);
+ g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_editable_get_text (GTK_EDITABLE (self->username_entry)), NULL);
/* Save the password always ask setting */
not_saved = always_ask_selected (self->password_entry);
@@ -152,7 +152,7 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
* user checked "Always Ask".
*/
if (not_saved == FALSE)
- g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_entry_get_text (self->password_entry), NULL);
+ g_object_set (s_8021x, NM_SETTING_802_1X_PASSWORD, gtk_editable_get_text (GTK_EDITABLE (self->password_entry)), NULL);
/* Update secret flags and popup when editing the connection */
nma_utils_update_password_storage (GTK_WIDGET (self->password_entry), flags,
@@ -193,42 +193,42 @@ static const gchar *
get_username (EAPMethod *method)
{
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
- return gtk_entry_get_text (self->username_entry);
+ return gtk_editable_get_text (GTK_EDITABLE (self->username_entry));
}
static void
set_username (EAPMethod *method, const gchar *username)
{
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
- gtk_entry_set_text (self->username_entry, username);
+ gtk_editable_set_text (GTK_EDITABLE (self->username_entry), username);
}
static const gchar *
get_password (EAPMethod *method)
{
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
- return gtk_entry_get_text (self->password_entry);
+ return gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
}
static void
set_password (EAPMethod *method, const gchar *password)
{
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
- gtk_entry_set_text (self->password_entry, password);
+ gtk_editable_set_text (GTK_EDITABLE (self->password_entry), password);
}
static gboolean
get_show_password (EAPMethod *method)
{
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
- return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ return gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
}
static void
set_show_password (EAPMethod *method, gboolean show_password)
{
EAPMethodSimple *self = EAP_METHOD_SIMPLE (method);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->show_password_check), show_password);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->show_password_check), show_password);
}
static gboolean
@@ -249,7 +249,7 @@ password_storage_changed (EAPMethodSimple *self)
if (always_ask) {
/* we always clear this button and do not restore it
* (because we want to hide the password). */
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->show_password_check), FALSE);
+ gtk_check_button_set_active (GTK_CHECK_BUTTON (self->show_password_check), FALSE);
}
gtk_widget_set_sensitive (GTK_WIDGET (self->show_password_check), !always_ask);
diff --git a/panels/network/wireless-security/eap-method-simple.ui b/panels/network/wireless-security/eap-method-simple.ui
index 59691ba7b..e5c37c96b 100644
--- a/panels/network/wireless-security/eap-method-simple.ui
+++ b/panels/network/wireless-security/eap-method-simple.ui
@@ -2,95 +2,67 @@
<interface>
<requires lib="gtk+" version="3.4"/>
<template class="EAPMethodSimple" parent="GtkGrid">
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <placeholder/>
- </child>
- <child>
<object class="GtkLabel" id="username_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Username</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">username_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Password</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">password_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="username_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
<child>
<object class="GtkCheckButton" id="show_password_check">
<property name="label" translatable="yes">Sho_w password</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <placeholder/>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/eap-method-tls.c b/panels/network/wireless-security/eap-method-tls.c
index fb039d740..3bf79adb8 100644
--- a/panels/network/wireless-security/eap-method-tls.c
+++ b/panels/network/wireless-security/eap-method-tls.c
@@ -27,21 +27,22 @@
#include "helpers.h"
#include "nma-ui-utils.h"
#include "ui-helpers.h"
+#include "ws-file-chooser-button.h"
struct _EAPMethodTLS {
GtkGrid parent;
- GtkFileChooserButton *ca_cert_button;
+ WsFileChooserButton *ca_cert_button;
GtkLabel *ca_cert_label;
GtkCheckButton *ca_cert_not_required_check;
GtkEntry *identity_entry;
GtkLabel *identity_label;
- GtkFileChooserButton *private_key_button;
+ WsFileChooserButton *private_key_button;
GtkLabel *private_key_label;
GtkEntry *private_key_password_entry;
GtkLabel *private_key_password_label;
GtkCheckButton *show_password_check;
- GtkFileChooserButton *user_cert_button;
+ WsFileChooserButton *user_cert_button;
GtkLabel *user_cert_label;
gchar *username;
@@ -70,7 +71,7 @@ show_toggled_cb (EAPMethodTLS *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
gtk_entry_set_visibility (self->private_key_password_entry, visible);
}
@@ -86,7 +87,7 @@ validate (EAPMethod *method, GError **error)
g_autoptr(GError) user_cert_error = NULL;
gboolean ret = TRUE;
- identity = gtk_entry_get_text (self->identity_entry);
+ identity = gtk_editable_get_text (GTK_EDITABLE (self->identity_entry));
if (!identity || !strlen (identity)) {
widget_set_error (GTK_WIDGET (self->identity_entry));
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing EAP-TLS identity"));
@@ -95,18 +96,18 @@ validate (EAPMethod *method, GError **error)
widget_unset_error (GTK_WIDGET (self->identity_entry));
}
- if (!eap_method_validate_filepicker (GTK_FILE_CHOOSER (self->ca_cert_button),
+ if (!eap_method_validate_filepicker (ws_file_chooser_button_get_filechooser (self->ca_cert_button),
TYPE_CA_CERT, NULL, NULL, &ca_cert_error)) {
widget_set_error (GTK_WIDGET (self->ca_cert_button));
if (ret) {
g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TLS CA certificate: %s"), ca_cert_error->message);
ret = FALSE;
}
- } else if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check))) {
- g_autofree gchar *filename = NULL;
+ } else if (!gtk_check_button_get_active (GTK_CHECK_BUTTON (self->ca_cert_not_required_check))) {
+ g_autoptr(GFile) file = NULL;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
- if (filename == NULL) {
+ file = ws_file_chooser_button_get_file (self->ca_cert_button);
+ if (file == NULL) {
widget_set_error (GTK_WIDGET (self->ca_cert_button));
if (ret) {
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TLS CA certificate: no certificate specified"));
@@ -115,12 +116,12 @@ validate (EAPMethod *method, GError **error)
}
}
- password = gtk_entry_get_text (self->private_key_password_entry);
+ password = gtk_editable_get_text (GTK_EDITABLE (self->private_key_password_entry));
secret_flags = nma_utils_menu_to_secret_flags (GTK_WIDGET (self->private_key_password_entry));
if (secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED)
password = NULL;
- if (!eap_method_validate_filepicker (GTK_FILE_CHOOSER (self->private_key_button),
+ if (!eap_method_validate_filepicker (ws_file_chooser_button_get_filechooser (self->private_key_button),
TYPE_PRIVATE_KEY,
password,
&format,
@@ -133,7 +134,7 @@ validate (EAPMethod *method, GError **error)
}
if (format != NM_SETTING_802_1X_CK_FORMAT_PKCS12) {
- if (!eap_method_validate_filepicker (GTK_FILE_CHOOSER (self->user_cert_button),
+ if (!eap_method_validate_filepicker (ws_file_chooser_button_get_filechooser (self->user_cert_button),
TYPE_CLIENT_CERT, NULL, NULL, &user_cert_error)) {
if (ret) {
g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TLS user-certificate: %s"), user_cert_error->message);
@@ -149,8 +150,8 @@ validate (EAPMethod *method, GError **error)
static void
ca_cert_not_required_toggled (EAPMethodTLS *self)
{
- eap_method_ca_cert_not_required_toggled (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
- GTK_FILE_CHOOSER (self->ca_cert_button));
+ eap_method_ca_cert_not_required_toggled (self->ca_cert_not_required_check,
+ ws_file_chooser_button_get_filechooser (self->ca_cert_button));
eap_method_emit_changed (EAP_METHOD (self));
}
@@ -175,7 +176,9 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
NMSetting8021x *s_8021x;
NMSettingSecretFlags secret_flags;
g_autofree gchar *ca_filename = NULL;
+ g_autoptr(GFile) ca_file = NULL;
g_autofree gchar *pk_filename = NULL;
+ g_autoptr(GFile) pk_file = NULL;
const char *password = NULL;
gboolean ca_cert_error = FALSE;
g_autoptr(GError) error = NULL;
@@ -186,16 +189,17 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
nm_setting_802_1x_add_eap_method (s_8021x, "tls");
- g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_entry_get_text (self->identity_entry), NULL);
+ g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, gtk_editable_get_text (GTK_EDITABLE (self->identity_entry)), NULL);
/* TLS private key */
- password = gtk_entry_get_text (self->private_key_password_entry);
+ password = gtk_editable_get_text (GTK_EDITABLE (self->private_key_password_entry));
secret_flags = nma_utils_menu_to_secret_flags (GTK_WIDGET (self->private_key_password_entry));
if (secret_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED)
password = NULL;
- pk_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->private_key_button));
- g_assert (pk_filename);
+ pk_file = ws_file_chooser_button_get_file (self->private_key_button);
+ g_assert (pk_file);
+ pk_filename = g_file_get_path (pk_file);
if (!nm_setting_802_1x_set_private_key (s_8021x, pk_filename, password, NM_SETTING_802_1X_CK_SCHEME_PATH, &format, &error))
g_warning ("Couldn't read private key '%s': %s", pk_filename, error ? error->message : "(unknown)");
@@ -211,13 +215,15 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
/* TLS client certificate */
if (format != NM_SETTING_802_1X_CK_FORMAT_PKCS12) {
g_autofree gchar *cc_filename = NULL;
+ g_autoptr(GFile) cc_file = NULL;
g_autoptr(GError) error = NULL;
/* If the key is pkcs#12 nm_setting_802_1x_set_private_key() already
* set the client certificate for us.
*/
- cc_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->user_cert_button));
- g_assert (cc_filename);
+ cc_file = ws_file_chooser_button_get_file (self->private_key_button);
+ g_assert (cc_file);
+ cc_filename = g_file_get_path (cc_file);
format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
if (!nm_setting_802_1x_set_client_cert (s_8021x, cc_filename, NM_SETTING_802_1X_CK_SCHEME_PATH, &format, &error))
@@ -225,7 +231,8 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
}
/* TLS CA certificate */
- ca_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
+ ca_file = ws_file_chooser_button_get_file (self->private_key_button);
+ ca_filename = ca_file ? g_file_get_path (ca_file) : NULL;
format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
if (!nm_setting_802_1x_set_ca_cert (s_8021x, ca_filename, NM_SETTING_802_1X_CK_SCHEME_PATH, &format, &error2)) {
@@ -242,14 +249,14 @@ private_key_picker_helper (EAPMethodTLS *self, const char *filename, gboolean ch
NMSetting8021xCKFormat cert_format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
const char *password;
- password = gtk_entry_get_text (self->private_key_password_entry);
+ password = gtk_editable_get_text (GTK_EDITABLE (self->private_key_password_entry));
setting = (NMSetting8021x *) nm_setting_802_1x_new ();
nm_setting_802_1x_set_private_key (setting, filename, password, NM_SETTING_802_1X_CK_SCHEME_PATH, &cert_format, NULL);
/* With PKCS#12, the client cert must be the same as the private key */
if (cert_format == NM_SETTING_802_1X_CK_FORMAT_PKCS12) {
- gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (self->user_cert_button));
+ ws_file_chooser_button_set_file (self->user_cert_button, NULL);
gtk_widget_set_sensitive (GTK_WIDGET (self->user_cert_button), FALSE);
} else if (changed)
gtk_widget_set_sensitive (GTK_WIDGET (self->user_cert_button), TRUE);
@@ -257,12 +264,12 @@ private_key_picker_helper (EAPMethodTLS *self, const char *filename, gboolean ch
/* Warn the user if the private key is unencrypted */
if (!eap_method_is_encrypted_private_key (filename)) {
GtkWidget *dialog;
- GtkWidget *toplevel;
+ GtkNative *native;
GtkWindow *parent_window = NULL;
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- if (gtk_widget_is_toplevel (toplevel))
- parent_window = GTK_WINDOW (toplevel);
+ native = gtk_widget_get_native (GTK_WIDGET (self));
+ if (GTK_IS_WINDOW (native))
+ parent_window = GTK_WINDOW (native);
dialog = gtk_message_dialog_new (parent_window,
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -273,18 +280,19 @@ private_key_picker_helper (EAPMethodTLS *self, const char *filename, gboolean ch
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
"%s",
_("The selected private key does not appear to be protected by a password. This could allow your security credentials to be compromised. Please select a password-protected private key.\n\n(You can password-protect your private key with openssl)"));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
+ gtk_window_present (GTK_WINDOW (dialog));
}
}
static void
-private_key_picker_file_set_cb (GtkWidget *chooser, gpointer user_data)
+private_key_picker_file_set_cb (WsFileChooserButton *chooser, gpointer user_data)
{
EAPMethodTLS *self = user_data;
+ g_autoptr(GFile) file = NULL;
g_autofree gchar *filename = NULL;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
+ file = ws_file_chooser_button_get_file (chooser);
+ filename = file ? g_file_get_path (file) : NULL;
if (filename)
private_key_picker_helper (self, filename, TRUE);
}
@@ -309,7 +317,7 @@ changed_cb (EAPMethodTLS *self)
static void
setup_filepicker (EAPMethodTLS *self,
- GtkFileChooserButton *button,
+ WsFileChooserButton *button,
const char *title,
NMSetting8021x *s_8021x,
SchemeFunc scheme_func,
@@ -320,14 +328,13 @@ setup_filepicker (EAPMethodTLS *self,
GtkFileFilter *filter;
const char *filename = NULL;
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (button), TRUE);
- gtk_file_chooser_button_set_title (button, title);
-
if (s_8021x && path_func && scheme_func) {
if (scheme_func (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH) {
filename = path_func (s_8021x);
- if (filename)
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (button), filename);
+ if (filename) {
+ g_autoptr(GFile) file = g_file_new_for_path (filename);
+ ws_file_chooser_button_set_file (button, file);
+ }
}
}
@@ -335,17 +342,17 @@ setup_filepicker (EAPMethodTLS *self,
* and desensitize the user cert button.
*/
if (privkey) {
- g_signal_connect (button, "selection-changed",
- (GCallback) private_key_picker_file_set_cb,
+ g_signal_connect (button, "notify::file",
+ G_CALLBACK (private_key_picker_file_set_cb),
self);
if (filename)
private_key_picker_helper (self, filename, FALSE);
}
- g_signal_connect_swapped (button, "selection-changed", G_CALLBACK (changed_cb), self);
+ g_signal_connect_swapped (button, "notify::file", G_CALLBACK (changed_cb), self);
filter = eap_method_default_file_chooser_filter_new (privkey);
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (button), filter);
+ gtk_file_chooser_add_filter (ws_file_chooser_button_get_filechooser (button), filter);
/* For some reason, GTK+ calls set_current_filter (..., NULL) from
* gtkfilechooserdefault.c::show_and_select_files_finished_loading() on our
@@ -372,8 +379,10 @@ update_secrets (EAPMethod *method, NMConnection *connection)
s_8021x = nm_connection_get_setting_802_1x (connection);
if (s_8021x && (nm_setting_802_1x_get_private_key_scheme (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH)) {
filename = nm_setting_802_1x_get_private_key_path (s_8021x);
- if (filename)
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->private_key_button), filename);
+ if (filename) {
+ g_autoptr(GFile) file = g_file_new_for_path (filename);
+ ws_file_chooser_button_set_file (self->private_key_button, file);
+ }
}
}
@@ -450,6 +459,8 @@ eap_method_tls_class_init (EAPMethodTLSClass *klass)
object_class->dispose = eap_method_tls_dispose;
+ g_type_ensure (WS_TYPE_FILE_CHOOSER_BUTTON);
+
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);
@@ -499,7 +510,7 @@ eap_method_tls_new (NMConnection *connection)
g_signal_connect_swapped (self->identity_entry, "changed", G_CALLBACK (changed_cb), self);
if (s_8021x && nm_setting_802_1x_get_identity (s_8021x))
- gtk_entry_set_text (self->identity_entry, nm_setting_802_1x_get_identity (s_8021x));
+ gtk_editable_set_text (GTK_EDITABLE (self->identity_entry), nm_setting_802_1x_get_identity (s_8021x));
setup_filepicker (self,
self->user_cert_button,
@@ -523,9 +534,11 @@ eap_method_tls_new (NMConnection *connection)
nm_setting_802_1x_get_private_key_path,
TRUE, FALSE);
- if (connection && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection))
- ca_not_required = !gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check), ca_not_required);
+ if (connection && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection)) {
+ g_autoptr(GFile) file = ws_file_chooser_button_get_file (self->ca_cert_button);
+ ca_not_required = !file;
+ }
+ gtk_check_button_set_active (self->ca_cert_not_required_check, ca_not_required);
/* Fill secrets, if any */
if (connection)
diff --git a/panels/network/wireless-security/eap-method-tls.ui b/panels/network/wireless-security/eap-method-tls.ui
index 61f8e5d4d..69c261013 100644
--- a/panels/network/wireless-security/eap-method-tls.ui
+++ b/panels/network/wireless-security/eap-method-tls.ui
@@ -2,170 +2,138 @@
<interface>
<requires lib="gtk+" version="3.4"/>
<template class="EAPMethodTLS" parent="GtkGrid">
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <placeholder/>
- </child>
- <child>
<object class="GtkLabel" id="identity_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">I_dentity</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">identity_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="identity_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="user_cert_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_User certificate</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">user_cert_button</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
- <object class="GtkFileChooserButton" id="user_cert_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="WsFileChooserButton" id="user_cert_button">
<property name="hexpand">True</property>
+ <property name="title" translatable="yes">Choose a Certificate Authority certificate</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ca_cert_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">C_A certificate</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">ca_cert_button</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
- <object class="GtkFileChooserButton" id="ca_cert_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="WsFileChooserButton" id="ca_cert_button">
<property name="hexpand">True</property>
+ <property name="title" translatable="yes">Choose a Certificate Authority certificate</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="ca_cert_not_required_check">
<property name="label" translatable="yes">No CA certificate is _required</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="private_key_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Private _key</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">private_key_button</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
- <object class="GtkFileChooserButton" id="private_key_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="WsFileChooserButton" id="private_key_button">
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="private_key_password_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Private key password</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">private_key_password_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="private_key_password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">5</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">5</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="show_password_check">
<property name="label" translatable="yes">Sho_w password</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">6</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">6</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/eap-method-ttls.c b/panels/network/wireless-security/eap-method-ttls.c
index fc7cd603a..699566706 100644
--- a/panels/network/wireless-security/eap-method-ttls.c
+++ b/panels/network/wireless-security/eap-method-ttls.c
@@ -26,6 +26,7 @@
#include "eap-method-simple.h"
#include "eap-method-ttls.h"
#include "helpers.h"
+#include "ws-file-chooser-button.h"
#define I_NAME_COLUMN 0
#define I_ID_COLUMN 1
@@ -35,7 +36,7 @@ struct _EAPMethodTTLS {
GtkEntry *anon_identity_entry;
GtkLabel *anon_identity_label;
- GtkFileChooserButton *ca_cert_button;
+ WsFileChooserButton *ca_cert_button;
GtkLabel *ca_cert_label;
GtkCheckButton *ca_cert_not_required_check;
GtkEntry *domain_match_entry;
@@ -93,16 +94,16 @@ validate (EAPMethod *method, GError **error)
EAPMethodTTLS *self = EAP_METHOD_TTLS (method);
g_autoptr(GError) local_error = NULL;
- if (!eap_method_validate_filepicker (GTK_FILE_CHOOSER (self->ca_cert_button),
+ if (!eap_method_validate_filepicker (ws_file_chooser_button_get_filechooser (self->ca_cert_button),
TYPE_CA_CERT, NULL, NULL, &local_error)) {
g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TTLS CA certificate: %s"), local_error->message);
return FALSE;
}
- if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check))) {
- g_autofree gchar *filename = NULL;
+ if (!gtk_check_button_get_active (GTK_CHECK_BUTTON (self->ca_cert_not_required_check))) {
+ g_autoptr(GFile) file = NULL;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
- if (filename == NULL) {
+ file = ws_file_chooser_button_get_file (self->ca_cert_button);
+ if (file == NULL) {
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TTLS CA certificate: no certificate specified"));
return FALSE;
}
@@ -114,8 +115,8 @@ validate (EAPMethod *method, GError **error)
static void
ca_cert_not_required_toggled (EAPMethodTTLS *self)
{
- eap_method_ca_cert_not_required_toggled (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
- GTK_FILE_CHOOSER (self->ca_cert_button));
+ eap_method_ca_cert_not_required_toggled (self->ca_cert_not_required_check,
+ ws_file_chooser_button_get_filechooser (self->ca_cert_button));
eap_method_emit_changed (EAP_METHOD (self));
}
@@ -148,6 +149,7 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
const char *text;
g_autofree gchar *filename = NULL;
g_autoptr(GError) error = NULL;
+ g_autoptr(GFile) file = NULL;
gboolean ca_cert_error = FALSE;
s_8021x = nm_connection_get_setting_802_1x (connection);
@@ -155,15 +157,16 @@ fill_connection (EAPMethod *method, NMConnection *connection, NMSettingSecretFla
nm_setting_802_1x_add_eap_method (s_8021x, "ttls");
- text = gtk_entry_get_text (self->anon_identity_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->anon_identity_entry));
if (text && strlen (text))
g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL);
- text = gtk_entry_get_text (self->domain_match_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->domain_match_entry));
if (text && strlen (text))
g_object_set (s_8021x, NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH, text, NULL);
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (self->ca_cert_button));
+ file = ws_file_chooser_button_get_file (self->ca_cert_button);
+ filename = file ? g_file_get_path (file) : NULL;
if (!nm_setting_802_1x_set_ca_cert (s_8021x, filename, NM_SETTING_802_1X_CK_SCHEME_PATH, &format, &error)) {
g_warning ("Couldn't read CA certificate '%s': %s", filename, error ? error->message : "(unknown)");
ca_cert_error = TRUE;
@@ -177,21 +180,21 @@ static void
inner_auth_combo_changed_cb (EAPMethodTTLS *self)
{
EAPMethod *inner_method;
- GList *children;
+ GtkWidget *child;
inner_method = get_inner_method (self);
/* Remove the previous method and migrate username/password across */
- children = gtk_container_get_children (GTK_CONTAINER (self->inner_auth_box));
- if (children != NULL) {
- EAPMethod *old_eap = g_list_nth_data (children, 0);
+ child = gtk_widget_get_first_child (GTK_WIDGET (self->inner_auth_box));
+ if (child != NULL) {
+ EAPMethod *old_eap = EAP_METHOD (child);
eap_method_set_username (inner_method, eap_method_get_username (old_eap));
eap_method_set_password (inner_method, eap_method_get_password (old_eap));
eap_method_set_show_password (inner_method, eap_method_get_show_password (old_eap));
- gtk_container_remove (GTK_CONTAINER (self->inner_auth_box), GTK_WIDGET (old_eap));
+ gtk_box_remove (self->inner_auth_box, child);
}
- gtk_container_add (GTK_CONTAINER (self->inner_auth_box), g_object_ref (GTK_WIDGET (inner_method)));
+ gtk_box_append (self->inner_auth_box, g_object_ref (GTK_WIDGET (inner_method)));
eap_method_emit_changed (EAP_METHOD (self));
}
@@ -331,28 +334,28 @@ eap_method_ttls_new (NMConnection *connection)
g_signal_connect_swapped (self->ca_cert_not_required_check, "toggled", G_CALLBACK (ca_cert_not_required_toggled), self);
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (self->ca_cert_button), TRUE);
- gtk_file_chooser_button_set_title (self->ca_cert_button,
- _("Choose a Certificate Authority certificate"));
- g_signal_connect_swapped (self->ca_cert_button, "selection-changed", G_CALLBACK (changed_cb), self);
+ g_signal_connect_swapped (self->ca_cert_button, "notify::file", G_CALLBACK (changed_cb), self);
filter = eap_method_default_file_chooser_filter_new (FALSE);
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (self->ca_cert_button), filter);
+ gtk_file_chooser_add_filter (ws_file_chooser_button_get_filechooser (self->ca_cert_button),
+ filter);
if (connection && s_8021x) {
filename = NULL;
if (nm_setting_802_1x_get_ca_cert_scheme (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH) {
filename = nm_setting_802_1x_get_ca_cert_path (s_8021x);
- if (filename)
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (self->ca_cert_button), filename);
+ if (filename) {
+ g_autoptr(GFile) file = g_file_new_for_path (filename);
+ ws_file_chooser_button_set_file (self->ca_cert_button, file);
+ }
}
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->ca_cert_not_required_check),
- !filename && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection));
+ gtk_check_button_set_active (self->ca_cert_not_required_check,
+ !filename && eap_method_ca_cert_ignore_get (EAP_METHOD (self), connection));
}
if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x))
- gtk_entry_set_text (self->anon_identity_entry, nm_setting_802_1x_get_anonymous_identity (s_8021x));
+ gtk_editable_set_text (GTK_EDITABLE (self->anon_identity_entry), nm_setting_802_1x_get_anonymous_identity (s_8021x));
g_signal_connect_swapped (self->anon_identity_entry, "changed", G_CALLBACK (changed_cb), self);
if (s_8021x && nm_setting_802_1x_get_domain_suffix_match (s_8021x))
- gtk_entry_set_text (self->domain_match_entry, nm_setting_802_1x_get_domain_suffix_match (s_8021x));
+ gtk_editable_set_text (GTK_EDITABLE (self->domain_match_entry), nm_setting_802_1x_get_domain_suffix_match (s_8021x));
g_signal_connect_swapped (self->domain_match_entry, "changed", G_CALLBACK (changed_cb), self);
self->em_pap = eap_method_simple_new (connection, "pap", TRUE, FALSE);
diff --git a/panels/network/wireless-security/eap-method-ttls.ui b/panels/network/wireless-security/eap-method-ttls.ui
index 2ba7d2011..b10dac29a 100644
--- a/panels/network/wireless-security/eap-method-ttls.ui
+++ b/panels/network/wireless-security/eap-method-ttls.ui
@@ -40,122 +40,103 @@
</data>
</object>
<template class="EAPMethodTTLS" parent="GtkGrid">
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="anon_identity_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Anony_mous identity</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">anon_identity_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="anon_identity_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="domain_match_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">_Domain</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">domain_match_entry</property>
<property name="xalign">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="domain_match_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="ca_cert_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">C_A certificate</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">ca_cert_button</property>
<property name="xalign">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
- <object class="GtkFileChooserButton" id="ca_cert_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="WsFileChooserButton" id="ca_cert_button">
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="ca_cert_not_required_check">
<property name="label" translatable="yes">No CA certificate is _required</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="inner_auth_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">_Inner authentication</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">inner_auth_combo</property>
<property name="xalign">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">4</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="inner_auth_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">inner_auth_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">4</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -163,26 +144,17 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="inner_auth_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">5</property>
+ <property name="column-span">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">2</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/eap-method.c b/panels/network/wireless-security/eap-method.c
index fdda35b56..26135b683 100644
--- a/panels/network/wireless-security/eap-method.c
+++ b/panels/network/wireless-security/eap-method.c
@@ -181,6 +181,7 @@ eap_method_validate_filepicker (GtkFileChooser *chooser,
{
g_autofree gchar *filename = NULL;
g_autoptr(NMSetting8021x) setting = NULL;
+ g_autoptr(GFile) file = NULL;
gboolean success = TRUE;
if (item_type == TYPE_PRIVATE_KEY) {
@@ -188,8 +189,8 @@ eap_method_validate_filepicker (GtkFileChooser *chooser,
success = FALSE;
}
- filename = gtk_file_chooser_get_filename (chooser);
- if (!filename) {
+ file = gtk_file_chooser_get_file (chooser);
+ if (!file) {
if (item_type != TYPE_CA_CERT) {
success = FALSE;
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("no file selected"));
@@ -197,6 +198,7 @@ eap_method_validate_filepicker (GtkFileChooser *chooser,
goto out;
}
+ filename = g_file_get_path (file);
if (!g_file_test (filename, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
success = FALSE;
goto out;
@@ -358,34 +360,24 @@ out:
}
#endif
-static gboolean
-default_filter_privkey (const GtkFileFilterInfo *filter_info, gpointer user_data)
-{
- const char *extensions[] = { ".der", ".pem", ".p12", ".key", NULL };
-
- if (!filter_info->filename)
- return FALSE;
-
- if (!file_has_extension (filter_info->filename, extensions))
- return FALSE;
-
- return TRUE;
-}
+static const char *privkey_extensions[] = {
+ ".der", ".pem", ".p12", ".key", NULL
+};
+static const char *cert_extensions[] = {
+ ".der", ".pem", ".crt", ".cer", NULL
+};
-static gboolean
-default_filter_cert (const GtkFileFilterInfo *filter_info, gpointer user_data)
+static void
+add_file_extensions_to_filter (GtkFileFilter *filter,
+ const char **extensions)
{
- const char *extensions[] = { ".der", ".pem", ".crt", ".cer", NULL };
+ int i;
- if (!filter_info->filename)
- return FALSE;
-
- if (!file_has_extension (filter_info->filename, extensions))
- return FALSE;
-
- return TRUE;
+ for (i = 0; extensions[i] != NULL; i++)
+ gtk_file_filter_add_suffix (filter, extensions[i]);
}
+
GtkFileFilter *
eap_method_default_file_chooser_filter_new (gboolean privkey)
{
@@ -393,10 +385,10 @@ eap_method_default_file_chooser_filter_new (gboolean privkey)
filter = gtk_file_filter_new ();
if (privkey) {
- gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_FILENAME, default_filter_privkey, NULL, NULL);
+ add_file_extensions_to_filter (filter, privkey_extensions);
gtk_file_filter_set_name (filter, _("DER, PEM, or PKCS#12 private keys (*.der, *.pem, *.p12, *.key)"));
} else {
- gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_FILENAME, default_filter_cert, NULL, NULL);
+ add_file_extensions_to_filter (filter, cert_extensions);
gtk_file_filter_set_name (filter, _("DER or PEM certificates (*.der, *.pem, *.crt, *.cer)"));
}
return filter;
@@ -405,10 +397,9 @@ eap_method_default_file_chooser_filter_new (gboolean privkey)
gboolean
eap_method_is_encrypted_private_key (const char *path)
{
- GtkFileFilterInfo info = { .filename = path };
gboolean is_encrypted;
- if (!default_filter_privkey (&info, NULL))
+ if (!file_has_extension (path, privkey_extensions))
return FALSE;
#if LIBNM_BUILD
@@ -425,31 +416,29 @@ eap_method_is_encrypted_private_key (const char *path)
}
void
-eap_method_ca_cert_not_required_toggled (GtkToggleButton *id_ca_cert_not_required_checkbutton, GtkFileChooser *id_ca_cert_chooser)
+eap_method_ca_cert_not_required_toggled (GtkCheckButton *id_ca_cert_not_required_checkbutton, GtkFileChooser *id_ca_cert_chooser)
{
- g_autofree gchar *filename = NULL;
- g_autofree gchar *filename_old = NULL;
+ g_autoptr(GFile) file = NULL;
+ g_autoptr(GFile) file_old = NULL;
gboolean is_not_required;
g_assert (id_ca_cert_not_required_checkbutton && id_ca_cert_chooser);
- is_not_required = gtk_toggle_button_get_active (id_ca_cert_not_required_checkbutton);
+ is_not_required = gtk_check_button_get_active (id_ca_cert_not_required_checkbutton);
- filename = gtk_file_chooser_get_filename (id_ca_cert_chooser);
- filename_old = g_object_steal_data (G_OBJECT (id_ca_cert_chooser), "filename-old");
+ file = gtk_file_chooser_get_file (id_ca_cert_chooser);
+ file_old = g_object_steal_data (G_OBJECT (id_ca_cert_chooser), "filename-old");
if (is_not_required) {
- g_free (filename_old);
- filename_old = g_steal_pointer (&filename);
+ g_clear_object (&file_old);
+ file_old = g_steal_pointer (&file);
} else {
- g_free (filename);
- filename = g_steal_pointer (&filename_old);
+ g_clear_object (&file);
+ file = g_steal_pointer (&file_old);
}
gtk_widget_set_sensitive (GTK_WIDGET (id_ca_cert_chooser), !is_not_required);
- if (filename)
- gtk_file_chooser_set_filename (id_ca_cert_chooser, filename);
- else
- gtk_file_chooser_unselect_all (id_ca_cert_chooser);
- g_object_set_data_full (G_OBJECT (id_ca_cert_chooser), "filename-old", g_steal_pointer (&filename_old), g_free);
+ if (file)
+ gtk_file_chooser_set_file (id_ca_cert_chooser, file, NULL);
+ g_object_set_data_full (G_OBJECT (id_ca_cert_chooser), "filename-old", g_steal_pointer (&file_old), g_free);
}
/* Used as both GSettings keys and GObject data tags */
diff --git a/panels/network/wireless-security/eap-method.h b/panels/network/wireless-security/eap-method.h
index 34b4144ac..d5a890829 100644
--- a/panels/network/wireless-security/eap-method.h
+++ b/panels/network/wireless-security/eap-method.h
@@ -93,7 +93,7 @@ gboolean eap_method_validate_filepicker (GtkFileChooser *chooser,
NMSetting8021xCKFormat *out_format,
GError **error);
-void eap_method_ca_cert_not_required_toggled (GtkToggleButton *id_ca_cert_is_not_required_checkbox,
+void eap_method_ca_cert_not_required_toggled (GtkCheckButton *id_ca_cert_is_not_required_checkbox,
GtkFileChooser *id_ca_cert_chooser);
void eap_method_ca_cert_ignore_set (EAPMethod *method,
diff --git a/panels/network/wireless-security/helpers.c b/panels/network/wireless-security/helpers.c
index ea08093de..fc8446b43 100644
--- a/panels/network/wireless-security/helpers.c
+++ b/panels/network/wireless-security/helpers.c
@@ -39,7 +39,7 @@ helper_fill_secret_entry (NMConnection *connection,
if (setting) {
tmp = (*func) (setting);
if (tmp) {
- gtk_entry_set_text (entry, tmp);
+ gtk_editable_set_text (GTK_EDITABLE (entry), tmp);
}
}
}
diff --git a/panels/network/wireless-security/meson.build b/panels/network/wireless-security/meson.build
index f30f4eb5d..7f43efc70 100644
--- a/panels/network/wireless-security/meson.build
+++ b/panels/network/wireless-security/meson.build
@@ -14,6 +14,7 @@ nm_applet_headers = [
'wireless-security.h',
'ws-leap.h',
'ws-dynamic-wep.h',
+ 'ws-file-chooser-button.h',
'ws-sae.h',
'ws-wep-key.h',
'ws-wpa-eap.h',
@@ -32,6 +33,7 @@ nm_applet_sources = [
'wireless-security.c',
'ws-leap.c',
'ws-dynamic-wep.c',
+ 'ws-file-chooser-button.c',
'ws-sae.c',
'ws-wep-key.c',
'ws-wpa-eap.c',
diff --git a/panels/network/wireless-security/ws-dynamic-wep.c b/panels/network/wireless-security/ws-dynamic-wep.c
index 91207ef46..001c561f7 100644
--- a/panels/network/wireless-security/ws-dynamic-wep.c
+++ b/panels/network/wireless-security/ws-dynamic-wep.c
@@ -145,22 +145,22 @@ static void
auth_combo_changed_cb (WirelessSecurityDynamicWEP *self)
{
EAPMethod *eap;
- GList *children;
GtkWidget *eap_default_field;
+ GtkWidget *child;
eap = get_eap (self);
/* Remove the previous method and migrate username/password across */
- children = gtk_container_get_children (GTK_CONTAINER (self->method_box));
- if (children != NULL) {
- EAPMethod *old_eap = g_list_nth_data (children, 0);
+ child = gtk_widget_get_first_child (GTK_WIDGET (self->method_box));
+ if (child != NULL) {
+ EAPMethod *old_eap = EAP_METHOD (child);
eap_method_set_username (eap, eap_method_get_username (old_eap));
eap_method_set_password (eap, eap_method_get_password (old_eap));
eap_method_set_show_password (eap, eap_method_get_show_password (old_eap));
- gtk_container_remove (GTK_CONTAINER (self->method_box), GTK_WIDGET (old_eap));
+ gtk_box_remove (self->method_box, child);
}
- gtk_container_add (GTK_CONTAINER (self->method_box), g_object_ref (GTK_WIDGET (eap)));
+ gtk_box_append (self->method_box, g_object_ref (GTK_WIDGET (eap)));
eap_default_field = eap_method_get_default_field (eap);
if (eap_default_field)
gtk_widget_grab_focus (eap_default_field);
diff --git a/panels/network/wireless-security/ws-dynamic-wep.ui b/panels/network/wireless-security/ws-dynamic-wep.ui
index a7fadffcb..85d638969 100644
--- a/panels/network/wireless-security/ws-dynamic-wep.ui
+++ b/panels/network/wireless-security/ws-dynamic-wep.ui
@@ -44,30 +44,28 @@
</data>
</object>
<template class="WirelessSecurityDynamicWEP" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="auth_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Au_thentication</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">auth_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="auth_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">auth_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -75,26 +73,17 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="method_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="width">2</property>
- <property name="top_attach">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/ws-file-chooser-button.c b/panels/network/wireless-security/ws-file-chooser-button.c
new file mode 100644
index 000000000..998df4252
--- /dev/null
+++ b/panels/network/wireless-security/ws-file-chooser-button.c
@@ -0,0 +1,268 @@
+/* cc-file-chooser-button.c
+ *
+ * Copyright 2021 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#include "ws-file-chooser-button.h"
+
+#include <glib/gi18n.h>
+
+struct _WsFileChooserButton
+{
+ GtkButton parent_instance;
+
+ GtkFileChooser *filechooser;
+ GFile *file;
+ char *title;
+};
+
+G_DEFINE_FINAL_TYPE (WsFileChooserButton, ws_file_chooser_button, GTK_TYPE_BUTTON)
+
+enum
+{
+ PROP_0,
+ PROP_FILE,
+ PROP_TITLE,
+ N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS] = { NULL, };
+
+static const char *
+get_title (WsFileChooserButton *self)
+{
+ return self->title ? self->title : _("Select a file");
+}
+
+static void
+update_label (WsFileChooserButton *self)
+{
+ g_autofree gchar *label = NULL;
+
+ if (self->file)
+ label = g_file_get_basename (self->file);
+ else
+ label = g_strdup (get_title (self));
+
+ gtk_button_set_label (GTK_BUTTON (self), label);
+}
+
+static void
+on_filechooser_dialog_response_cb (GtkFileChooser *filechooser,
+ gint response,
+ WsFileChooserButton *self)
+{
+ if (response == GTK_RESPONSE_ACCEPT)
+ {
+ g_autoptr(GFile) file = NULL;
+
+ file = gtk_file_chooser_get_file (filechooser);
+ ws_file_chooser_button_set_file (self, file);
+ }
+
+ gtk_widget_hide (GTK_WIDGET (filechooser));
+}
+static void
+ensure_filechooser (WsFileChooserButton *self)
+{
+ GtkNative *native;
+ GtkWidget *dialog;
+
+ if (self->filechooser)
+ return;
+
+ native = gtk_widget_get_native (GTK_WIDGET (self));
+
+ dialog = gtk_file_chooser_dialog_new (get_title (self),
+ GTK_WINDOW (native),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ _("Cancel"),
+ GTK_RESPONSE_CANCEL,
+ _("Open"),
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_hide_on_close (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+
+ if (self->file)
+ gtk_file_chooser_set_file (GTK_FILE_CHOOSER (dialog), self->file, NULL);
+
+ g_signal_connect (dialog, "response", G_CALLBACK (on_filechooser_dialog_response_cb), self);
+
+ self->filechooser = GTK_FILE_CHOOSER (dialog);
+}
+
+
+static void
+ws_file_chooser_button_clicked (GtkButton *button)
+{
+ WsFileChooserButton *self = WS_FILE_CHOOSER_BUTTON (button);
+ GtkNative *native = gtk_widget_get_native (GTK_WIDGET (self));
+
+ ensure_filechooser (self);
+
+ gtk_window_set_transient_for (GTK_WINDOW (self->filechooser), GTK_WINDOW (native));
+ gtk_window_present (GTK_WINDOW (self->filechooser));
+}
+
+static void
+ws_file_chooser_button_finalize (GObject *object)
+{
+ WsFileChooserButton *self = (WsFileChooserButton *)object;
+
+ g_clear_pointer (&self->title, g_free);
+ g_clear_object (&self->file);
+
+ G_OBJECT_CLASS (ws_file_chooser_button_parent_class)->finalize (object);
+}
+
+static void
+ws_file_chooser_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ WsFileChooserButton *self = WS_FILE_CHOOSER_BUTTON (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ g_value_set_object (value, self->file);
+ break;
+
+ case PROP_TITLE:
+ g_value_set_string (value, self->title);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+ws_file_chooser_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ WsFileChooserButton *self = WS_FILE_CHOOSER_BUTTON (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ ws_file_chooser_button_set_file (self, g_value_get_object (value));
+ break;
+
+ case PROP_TITLE:
+ ws_file_chooser_button_set_title (self, g_value_get_string (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+ws_file_chooser_button_class_init (WsFileChooserButtonClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkButtonClass *button_class = GTK_BUTTON_CLASS (klass);
+
+ button_class->clicked = ws_file_chooser_button_clicked;
+
+ object_class->finalize = ws_file_chooser_button_finalize;
+ object_class->get_property = ws_file_chooser_button_get_property;
+ object_class->set_property = ws_file_chooser_button_set_property;
+
+ properties[PROP_FILE] = g_param_spec_object ("file", "", "",
+ G_TYPE_FILE,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+ properties[PROP_TITLE] = g_param_spec_string ("title", "", "", NULL,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_properties (object_class, N_PROPS, properties);
+}
+
+static void
+ws_file_chooser_button_init (WsFileChooserButton *self)
+{
+ update_label (self);
+}
+
+GtkWidget *
+ws_file_chooser_button_new (void)
+{
+ return g_object_new (WS_TYPE_FILE_CHOOSER_BUTTON, NULL);
+}
+
+void
+ws_file_chooser_button_set_file (WsFileChooserButton *self,
+ GFile *file)
+{
+ g_return_if_fail (WS_IS_FILE_CHOOSER_BUTTON (self));
+
+ if (g_set_object (&self->file, file))
+ {
+ gtk_file_chooser_set_file (self->filechooser, file, NULL);
+ update_label (self);
+
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FILE]);
+ }
+}
+
+GFile *
+ws_file_chooser_button_get_file (WsFileChooserButton *self)
+{
+ g_return_val_if_fail (WS_IS_FILE_CHOOSER_BUTTON (self), NULL);
+
+ return self->file ? g_object_ref (self->file) : NULL;
+}
+
+void
+ws_file_chooser_button_set_title (WsFileChooserButton *self,
+ const char *title)
+{
+ g_autofree char *old_title = NULL;
+
+ g_return_if_fail (WS_IS_FILE_CHOOSER_BUTTON (self));
+
+ old_title = g_steal_pointer (&self->title);
+ self->title = g_strdup (title);
+
+ update_label (self);
+
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TITLE]);
+}
+
+const char *
+ws_file_chooser_button_get_title (WsFileChooserButton *self)
+{
+ g_return_val_if_fail (WS_IS_FILE_CHOOSER_BUTTON (self), NULL);
+
+ return self->title;
+}
+
+GtkFileChooser *
+ws_file_chooser_button_get_filechooser (WsFileChooserButton *self)
+{
+ g_return_val_if_fail (WS_IS_FILE_CHOOSER_BUTTON (self), NULL);
+
+ ensure_filechooser (self);
+
+ return self->filechooser;
+}
diff --git a/panels/network/wireless-security/ws-file-chooser-button.h b/panels/network/wireless-security/ws-file-chooser-button.h
new file mode 100644
index 000000000..db020203c
--- /dev/null
+++ b/panels/network/wireless-security/ws-file-chooser-button.h
@@ -0,0 +1,44 @@
+/* ws-file-chooser-button.h
+ *
+ * Copyright 2021 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#pragma once
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define WS_TYPE_FILE_CHOOSER_BUTTON (ws_file_chooser_button_get_type())
+G_DECLARE_FINAL_TYPE (WsFileChooserButton, ws_file_chooser_button, WS, FILE_CHOOSER_BUTTON, GtkButton)
+
+GtkWidget *ws_file_chooser_button_new (void);
+
+void ws_file_chooser_button_set_file (WsFileChooserButton *self,
+ GFile *file);
+
+GFile *ws_file_chooser_button_get_file (WsFileChooserButton *self);
+
+void ws_file_chooser_button_set_title (WsFileChooserButton *self,
+ const char *title);
+
+const char *ws_file_chooser_button_get_title (WsFileChooserButton *self);
+
+GtkFileChooser *ws_file_chooser_button_get_filechooser (WsFileChooserButton *self);
+
+G_END_DECLS
diff --git a/panels/network/wireless-security/ws-leap.c b/panels/network/wireless-security/ws-leap.c
index 464f92831..4fcfb5f81 100644
--- a/panels/network/wireless-security/ws-leap.c
+++ b/panels/network/wireless-security/ws-leap.c
@@ -48,7 +48,7 @@ show_toggled_cb (WirelessSecurityLEAP *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
gtk_entry_set_visibility (self->password_entry, visible);
}
@@ -60,7 +60,7 @@ validate (WirelessSecurity *security, GError **error)
const char *text;
gboolean ret = TRUE;
- text = gtk_entry_get_text (self->username_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->username_entry));
if (!text || !strlen (text)) {
widget_set_error (GTK_WIDGET (self->username_entry));
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing leap-username"));
@@ -74,7 +74,7 @@ validate (WirelessSecurity *security, GError **error)
return TRUE;
}
- text = gtk_entry_get_text (self->password_entry);
+ text = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
if (!text || !strlen (text)) {
widget_set_error (GTK_WIDGET (self->password_entry));
if (ret) {
@@ -107,8 +107,8 @@ fill_connection (WirelessSecurity *security, NMConnection *connection)
s_wireless_sec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
nm_connection_add_setting (connection, (NMSetting *) s_wireless_sec);
- leap_username = gtk_entry_get_text (self->username_entry);
- leap_password = gtk_entry_get_text (self->password_entry);
+ leap_username = gtk_editable_get_text (GTK_EDITABLE (self->username_entry));
+ leap_password = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
g_object_set (s_wireless_sec,
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x",
@@ -202,7 +202,7 @@ ws_leap_new (NMConnection *connection)
g_signal_connect_swapped (self->username_entry, "changed", G_CALLBACK (changed_cb), self);
if (wsec)
- gtk_entry_set_text (self->username_entry, nm_setting_wireless_security_get_leap_username (wsec));
+ gtk_editable_set_text (GTK_EDITABLE (self->username_entry), nm_setting_wireless_security_get_leap_username (wsec));
g_signal_connect_swapped (self->show_password_check, "toggled", G_CALLBACK (show_toggled_cb), self);
diff --git a/panels/network/wireless-security/ws-leap.ui b/panels/network/wireless-security/ws-leap.ui
index 3815d88dd..41e21d6e9 100644
--- a/panels/network/wireless-security/ws-leap.ui
+++ b/panels/network/wireless-security/ws-leap.ui
@@ -2,81 +2,62 @@
<interface>
<requires lib="gtk+" version="3.4"/>
<template class="WirelessSecurityLEAP" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
- <placeholder/>
- </child>
- <child>
<object class="GtkLabel" id="username_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Username</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">username_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Password</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">password_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="show_password_check">
<property name="label" translatable="yes">Sho_w password</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="username_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/ws-sae.c b/panels/network/wireless-security/ws-sae.c
index 89017ad6a..532067286 100644
--- a/panels/network/wireless-security/ws-sae.c
+++ b/panels/network/wireless-security/ws-sae.c
@@ -51,7 +51,7 @@ show_toggled_cb (WirelessSecuritySAE *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
gtk_entry_set_visibility (self->password_entry, visible);
}
@@ -69,7 +69,7 @@ validate (WirelessSecurity *security, GError **error)
return TRUE;
}
- key = gtk_entry_get_text (self->password_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
if (key == NULL || key[0] == '\0')
{
@@ -113,7 +113,7 @@ fill_connection (WirelessSecurity *security, NMConnection *connection)
s_wireless_sec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
nm_connection_add_setting (connection, (NMSetting *) s_wireless_sec);
- key = gtk_entry_get_text (self->password_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_PSK, key, NULL);
/* Save PSK_FLAGS to the connection */
@@ -194,7 +194,7 @@ ws_sae_new (NMConnection *connection)
self = g_object_new (ws_sae_get_type (), NULL);
g_signal_connect_swapped (self->password_entry, "changed", G_CALLBACK (changed_cb), self);
- gtk_entry_set_width_chars (self->password_entry, 28);
+ gtk_editable_set_width_chars (GTK_EDITABLE (self->password_entry), 28);
/* Create password-storage popup menu for password entry under entry's secondary icon */
if (connection)
diff --git a/panels/network/wireless-security/ws-sae.ui b/panels/network/wireless-security/ws-sae.ui
index d96bdc32c..028cd9fe9 100644
--- a/panels/network/wireless-security/ws-sae.ui
+++ b/panels/network/wireless-security/ws-sae.ui
@@ -3,76 +3,61 @@
<interface domain="nm-applet">
<requires lib="gtk+" version="3.10"/>
<template class="WirelessSecuritySAE" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">_Password</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">password_entry</property>
<property name="xalign">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="max_length">64</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="type_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="label" translatable="yes">_Type</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">type_combo</property>
<property name="xalign">1</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="show_password_check">
<property name="label" translatable="yes">Sho_w password</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
<property name="hexpand">True</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="type_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/ws-wep-key.c b/panels/network/wireless-security/ws-wep-key.c
index 006ecedae..741114fb2 100644
--- a/panels/network/wireless-security/ws-wep-key.c
+++ b/panels/network/wireless-security/ws-wep-key.c
@@ -54,7 +54,7 @@ show_toggled_cb (WirelessSecurityWEPKey *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_key_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_key_check));
gtk_entry_set_visibility (self->key_entry, visible);
}
@@ -65,7 +65,7 @@ key_index_combo_changed_cb (WirelessSecurityWEPKey *self)
int key_index;
/* Save WEP key for old key index */
- key = gtk_entry_get_text (self->key_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->key_entry));
if (key)
g_strlcpy (self->keys[self->cur_index], key, sizeof (self->keys[self->cur_index]));
else
@@ -76,7 +76,7 @@ key_index_combo_changed_cb (WirelessSecurityWEPKey *self)
g_return_if_fail (key_index >= 0);
/* Populate entry with key from new index */
- gtk_entry_set_text (self->key_entry, self->keys[key_index]);
+ gtk_editable_set_text (GTK_EDITABLE (self->key_entry), self->keys[key_index]);
self->cur_index = key_index;
wireless_security_notify_changed ((WirelessSecurity *) self);
@@ -108,7 +108,7 @@ validate (WirelessSecurity *security, GError **error)
return TRUE;
}
- key = gtk_entry_get_text (self->key_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->key_entry));
if (!key) {
widget_set_error (GTK_WIDGET (self->key_entry));
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("missing wep-key"));
@@ -173,7 +173,7 @@ fill_connection (WirelessSecurity *security, NMConnection *connection)
auth_alg = gtk_combo_box_get_active (self->auth_method_combo);
- key = gtk_entry_get_text (self->key_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->key_entry));
g_strlcpy (self->keys[self->cur_index], key, sizeof (self->keys[self->cur_index]));
/* Blow away the old security setting by adding a clear one */
@@ -241,7 +241,7 @@ update_secrets (WirelessSecurityWEPKey *self, NMConnection *connection)
}
if (strlen (self->keys[self->cur_index]))
- gtk_entry_set_text (self->key_entry, self->keys[self->cur_index]);
+ gtk_editable_set_text (GTK_EDITABLE (self->key_entry), self->keys[self->cur_index]);
}
static void
@@ -298,7 +298,7 @@ ws_wep_key_new (NMConnection *connection,
self->type = type;
- gtk_entry_set_width_chars (self->key_entry, 28);
+ gtk_editable_set_width_chars (GTK_EDITABLE (self->key_entry), 28);
/* Create password-storage popup menu for password entry under entry's secondary icon */
if (connection)
diff --git a/panels/network/wireless-security/ws-wep-key.ui b/panels/network/wireless-security/ws-wep-key.ui
index 7214032b6..49f525e63 100644
--- a/panels/network/wireless-security/ws-wep-key.ui
+++ b/panels/network/wireless-security/ws-wep-key.ui
@@ -36,84 +36,71 @@
</data>
</object>
<template class="WirelessSecurityWEPKey" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="key_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Key</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">key_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="key_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="max_length">64</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="show_key_check">
<property name="label" translatable="yes">Sho_w key</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="auth_method_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Au_thentication</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">auth_method_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="auth_method_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">auth_method_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -121,31 +108,27 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="key_index_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">WEP inde_x</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">key_index_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="key_index_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">key_index_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -153,10 +136,6 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/ws-wpa-eap.c b/panels/network/wireless-security/ws-wpa-eap.c
index fa8f2f2c1..662149d69 100644
--- a/panels/network/wireless-security/ws-wpa-eap.c
+++ b/panels/network/wireless-security/ws-wpa-eap.c
@@ -160,22 +160,22 @@ static void
auth_combo_changed_cb (WirelessSecurityWPAEAP *self)
{
EAPMethod *eap;
- GList *children;
GtkWidget *eap_default_field;
+ GtkWidget *child;
eap = get_eap (self);
/* Remove the previous method and migrate username/password across */
- children = gtk_container_get_children (GTK_CONTAINER (self->method_box));
- if (children != NULL) {
- EAPMethod *old_eap = g_list_nth_data (children, 0);
+ child = gtk_widget_get_first_child (GTK_WIDGET (self->method_box));
+ if (child != NULL) {
+ EAPMethod *old_eap = EAP_METHOD (child);
eap_method_set_username (eap, eap_method_get_username (old_eap));
eap_method_set_password (eap, eap_method_get_password (old_eap));
eap_method_set_show_password (eap, eap_method_get_show_password (old_eap));
- gtk_container_remove (GTK_CONTAINER (self->method_box), GTK_WIDGET (old_eap));
+ gtk_box_remove (self->method_box, child);
}
- gtk_container_add (GTK_CONTAINER (self->method_box), g_object_ref (GTK_WIDGET (eap)));
+ gtk_box_append (self->method_box, g_object_ref (GTK_WIDGET (eap)));
eap_default_field = eap_method_get_default_field (eap);
if (eap_default_field)
gtk_widget_grab_focus (eap_default_field);
diff --git a/panels/network/wireless-security/ws-wpa-eap.ui b/panels/network/wireless-security/ws-wpa-eap.ui
index 0555aaaf9..222eba771 100644
--- a/panels/network/wireless-security/ws-wpa-eap.ui
+++ b/panels/network/wireless-security/ws-wpa-eap.ui
@@ -49,30 +49,28 @@
</data>
</object>
<template class="WirelessSecurityWPAEAP" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="auth_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Au_thentication</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">auth_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="auth_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">auth_model</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -80,25 +78,16 @@
</attributes>
</child>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkBox" id="method_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="orientation">vertical</property>
- <child>
- <placeholder/>
- </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="width">2</property>
- <property name="top_attach">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/panels/network/wireless-security/ws-wpa-psk.c b/panels/network/wireless-security/ws-wpa-psk.c
index 978488b7e..348f11ef5 100644
--- a/panels/network/wireless-security/ws-wpa-psk.c
+++ b/panels/network/wireless-security/ws-wpa-psk.c
@@ -51,7 +51,7 @@ show_toggled_cb (WirelessSecurityWPAPSK *self)
{
gboolean visible;
- visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->show_password_check));
+ visible = gtk_check_button_get_active (GTK_CHECK_BUTTON (self->show_password_check));
gtk_entry_set_visibility (self->password_entry, visible);
}
@@ -70,7 +70,7 @@ validate (WirelessSecurity *security, GError **error)
return TRUE;
}
- key = gtk_entry_get_text (self->password_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
len = key ? strlen (key) : 0;
if ((len < 8) || (len > 64)) {
widget_set_error (GTK_WIDGET (self->password_entry));
@@ -125,7 +125,7 @@ fill_connection (WirelessSecurity *security, NMConnection *connection)
s_wireless_sec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
nm_connection_add_setting (connection, (NMSetting *) s_wireless_sec);
- key = gtk_entry_get_text (self->password_entry);
+ key = gtk_editable_get_text (GTK_EDITABLE (self->password_entry));
g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_PSK, key, NULL);
/* Save PSK_FLAGS to the connection */
@@ -207,7 +207,7 @@ ws_wpa_psk_new (NMConnection *connection)
self = g_object_new (ws_wpa_psk_get_type (), NULL);
g_signal_connect_swapped (self->password_entry, "changed", G_CALLBACK (changed_cb), self);
- gtk_entry_set_width_chars (self->password_entry, 28);
+ gtk_editable_set_width_chars (GTK_EDITABLE (self->password_entry), 28);
/* Create password-storage popup menu for password entry under entry's secondary icon */
if (connection)
diff --git a/panels/network/wireless-security/ws-wpa-psk.ui b/panels/network/wireless-security/ws-wpa-psk.ui
index 203748e23..26c9415d4 100644
--- a/panels/network/wireless-security/ws-wpa-psk.ui
+++ b/panels/network/wireless-security/ws-wpa-psk.ui
@@ -2,88 +2,71 @@
<interface>
<requires lib="gtk+" version="3.4"/>
<template class="WirelessSecurityWPAPSK" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Password</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">password_entry</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="max_length">64</property>
<property name="visibility">False</property>
- <property name="activates_default">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel" id="type_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Type</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">type_combo</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="xalign">0</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkCheckButton" id="show_password_check">
<property name="label" translatable="yes">Sho_w password</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
<child>
<object class="GtkComboBox" id="type_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="hexpand">True</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
</child>
</template>
</interface>
diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c
index 31db92748..371ccac30 100644
--- a/shell/cc-panel-loader.c
+++ b/shell/cc-panel-loader.c
@@ -45,8 +45,8 @@ extern GType cc_keyboard_panel_get_type (void);
extern GType cc_mouse_panel_get_type (void);
extern GType cc_multitasking_panel_get_type (void);
#ifdef BUILD_NETWORK
-//extern GType cc_network_panel_get_type (void);
-//extern GType cc_wifi_panel_get_type (void);
+extern GType cc_network_panel_get_type (void);
+extern GType cc_wifi_panel_get_type (void);
#endif /* BUILD_NETWORK */
extern GType cc_notifications_panel_get_type (void);
//extern GType cc_goa_panel_get_type (void);
@@ -78,7 +78,7 @@ extern GType cc_diagnostics_panel_get_type (void);
/* Static init functions */
extern void cc_diagnostics_panel_static_init_func (void);
#ifdef BUILD_NETWORK
-//extern void cc_wifi_panel_static_init_func (void);
+extern void cc_wifi_panel_static_init_func (void);
#endif /* BUILD_NETWORK */
#ifdef BUILD_WACOM
extern void cc_wacom_panel_static_init_func (void);
@@ -116,8 +116,8 @@ static CcPanelLoaderVtable default_panels[] =
PANEL_TYPE("mouse", cc_mouse_panel_get_type, NULL),
PANEL_TYPE("multitasking", cc_multitasking_panel_get_type, NULL),
#ifdef BUILD_NETWORK
- //PANEL_TYPE("network", cc_network_panel_get_type, NULL),
- //PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func),
+ PANEL_TYPE("network", cc_network_panel_get_type, NULL),
+ PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func),
#endif
PANEL_TYPE("notifications", cc_notifications_panel_get_type, NULL),
//PANEL_TYPE("online-accounts", cc_goa_panel_get_type, NULL),