network: Store widgets inside objects

This is a step towards replacing GtkBuilder with GtkTemplate
This commit is contained in:
Robert Ancell 2019-10-15 12:25:48 +13:00 committed by Georges Basile Stavracas Neto
parent b331d75df5
commit 8b6e3fb736
31 changed files with 1200 additions and 1428 deletions

View file

@ -39,14 +39,18 @@ struct _NetDeviceEthernet
{
NetDeviceSimple parent;
GtkBuilder *builder;
GtkBuilder *builder;
GtkButton *add_profile_button;
GtkBox *box;
GtkButton *details_button;
GtkFrame *details_frame;
HdyActionRow *details_row;
GtkLabel *device_label;
GtkSwitch *device_off_switch;
GtkScrolledWindow *scrolled_window;
GtkWidget *list;
GtkWidget *scrolled_window;
GtkWidget *details;
GtkWidget *details_button;
GtkWidget *add_profile_button;
gboolean updating_device;
GtkListBox *list;
gboolean updating_device;
GHashTable *connections;
};
@ -75,11 +79,9 @@ device_ethernet_add_to_stack (NetObject *object,
GtkSizeGroup *heading_size_group)
{
NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
GtkWidget *vbox;
vbox = GTK_WIDGET (gtk_builder_get_object (device->builder, "box"));
gtk_stack_add_named (stack, vbox, net_object_get_id (object));
return vbox;
gtk_stack_add_named (stack, GTK_WIDGET (device->box), net_object_get_id (object));
return GTK_WIDGET (device->box);
}
static void
@ -203,29 +205,25 @@ device_ethernet_refresh_ui (NetDeviceEthernet *device)
{
NMDevice *nm_device;
NMDeviceState state;
GtkWidget *widget;
g_autofree gchar *speed = NULL;
g_autofree gchar *status = NULL;
nm_device = net_device_get_nm_device (NET_DEVICE (device));
widget = GTK_WIDGET (gtk_builder_get_object (device->builder, "device_label"));
gtk_label_set_label (GTK_LABEL (widget), net_object_get_title (NET_OBJECT (device)));
gtk_label_set_label (device->device_label, net_object_get_title (NET_OBJECT (device)));
widget = GTK_WIDGET (gtk_builder_get_object (device->builder, "device_off_switch"));
state = nm_device_get_state (nm_device);
gtk_widget_set_sensitive (widget,
gtk_widget_set_sensitive (GTK_WIDGET (device->device_off_switch),
state != NM_DEVICE_STATE_UNAVAILABLE
&& state != NM_DEVICE_STATE_UNMANAGED);
device->updating_device = TRUE;
gtk_switch_set_active (GTK_SWITCH (widget), device_state_to_off_switch (state));
gtk_switch_set_active (device->device_off_switch, device_state_to_off_switch (state));
device->updating_device = FALSE;
if (state != NM_DEVICE_STATE_UNAVAILABLE)
speed = net_device_simple_get_speed (NET_DEVICE_SIMPLE (device));
widget = GTK_WIDGET (gtk_builder_get_object (device->builder, "details_row"));
status = panel_device_status_to_localized_string (nm_device, speed);
hdy_action_row_set_title (HDY_ACTION_ROW (widget), status);
hdy_action_row_set_title (device->details_row, status);
populate_ui (device);
}
@ -246,7 +244,7 @@ show_details (NetDeviceEthernet *device, GtkButton *button, const gchar *title)
NMClient *client;
NMDevice *nmdev;
window = gtk_widget_get_toplevel (GTK_WIDGET (gtk_builder_get_object (device->builder, "vbox6")));
window = gtk_widget_get_toplevel (GTK_WIDGET (device->box));
row = g_object_get_data (G_OBJECT (button), "row");
connection = NM_CONNECTION (g_object_get_data (G_OBJECT (row), "connection"));
@ -274,7 +272,7 @@ show_details_for_wired (NetDeviceEthernet *device)
* profile. It is also used to display ethernet in the
* device list.
*/
show_details (device, GTK_BUTTON (device->details_button), _("Wired"));
show_details (device, device->details_button, _("Wired"));
}
static void
@ -386,22 +384,22 @@ populate_ui (NetDeviceEthernet *device)
n_connections = g_slist_length (connections);
if (n_connections > 1) {
gtk_widget_hide (device->details);
gtk_widget_hide (GTK_WIDGET (device->details_frame));
for (l = connections; l; l = l->next) {
NMConnection *connection = l->data;
add_row (device, connection);
}
gtk_widget_show (device->scrolled_window);
gtk_widget_show (GTK_WIDGET (device->scrolled_window));
} else if (n_connections == 1) {
connection = connections->data;
gtk_widget_hide (device->scrolled_window);
gtk_widget_show_all (device->details);
gtk_widget_hide (GTK_WIDGET (device->scrolled_window));
gtk_widget_show_all (GTK_WIDGET (device->details_frame));
g_object_set_data (G_OBJECT (device->details_button), "row", device->details_button);
g_object_set_data (G_OBJECT (device->details_button), "connection", connection);
} else {
gtk_widget_hide (device->scrolled_window);
gtk_widget_hide (device->details);
gtk_widget_hide (GTK_WIDGET (device->scrolled_window));
gtk_widget_hide (GTK_WIDGET (device->details_frame));
}
g_slist_free (connections);
@ -445,7 +443,7 @@ add_profile (NetDeviceEthernet *device)
nm_connection_add_setting (connection, nm_setting_wired_new ());
window = gtk_widget_get_toplevel (GTK_WIDGET (gtk_builder_get_object (device->builder, "vbox6")));
window = gtk_widget_get_toplevel (GTK_WIDGET (device->box));
nmdev = net_device_get_nm_device (NET_DEVICE (device));
editor = net_connection_editor_new (GTK_WINDOW (window), connection, nmdev, NULL, client);
@ -466,7 +464,7 @@ device_off_toggled (NetDeviceEthernet *device)
client = net_object_get_client (NET_OBJECT (device));
nm_device = net_device_get_nm_device (NET_DEVICE (device));
if (gtk_switch_get_active (GTK_SWITCH (gtk_builder_get_object (device->builder, "device_off_switch")))) {
if (gtk_switch_get_active (device->device_off_switch)) {
connection = net_device_get_find_connection (NET_DEVICE (device));
if (connection != NULL) {
nm_client_activate_connection_async (client,
@ -512,31 +510,21 @@ device_ethernet_constructed (GObject *object)
{
NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
NMClient *client;
GtkWidget *list;
GtkWidget *swin;
GtkWidget *widget;
widget = GTK_WIDGET (gtk_builder_get_object (device->builder,
"device_off_switch"));
g_signal_connect_swapped (widget, "notify::active",
g_signal_connect_swapped (device->device_off_switch, "notify::active",
G_CALLBACK (device_off_toggled), device);
device->scrolled_window = swin = GTK_WIDGET (gtk_builder_get_object (device->builder, "scrolled_window"));
device->list = list = GTK_WIDGET (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 (swin), list);
g_signal_connect_swapped (list, "row-activated",
device->list = GTK_LIST_BOX (gtk_list_box_new ());
gtk_list_box_set_selection_mode (device->list, GTK_SELECTION_NONE);
gtk_list_box_set_header_func (device->list, cc_list_box_update_header_func, NULL, NULL);
gtk_container_add (GTK_CONTAINER (device->scrolled_window), GTK_WIDGET (device->list));
g_signal_connect_swapped (device->list, "row-activated",
G_CALLBACK (connection_activated), device);
gtk_widget_show (list);
gtk_widget_show (GTK_WIDGET (device->list));
device->details = GTK_WIDGET (gtk_builder_get_object (device->builder, "details_frame"));
device->details_button = GTK_WIDGET (gtk_builder_get_object (device->builder, "details_button"));
g_signal_connect_swapped (device->details_button, "clicked",
G_CALLBACK (show_details_for_wired), device);
device->add_profile_button = GTK_WIDGET (gtk_builder_get_object (device->builder, "add_profile_button"));
g_signal_connect_swapped (device->add_profile_button, "clicked",
G_CALLBACK (add_profile), device);
@ -595,6 +583,15 @@ net_device_ethernet_init (NetDeviceEthernet *device)
return;
}
device->add_profile_button = GTK_BUTTON (gtk_builder_get_object (device->builder, "add_profile_button"));
device->box = GTK_BOX (gtk_builder_get_object (device->builder, "box"));
device->details_button = GTK_BUTTON (gtk_builder_get_object (device->builder, "details_button"));
device->details_frame = GTK_FRAME (gtk_builder_get_object (device->builder, "details_frame"));
device->details_row = HDY_ACTION_ROW (gtk_builder_get_object (device->builder, "details_row"));
device->device_label = GTK_LABEL (gtk_builder_get_object (device->builder, "device_label"));
device->device_off_switch = GTK_SWITCH (gtk_builder_get_object (device->builder, "device_off_switch"));
device->scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (device->builder, "scrolled_window"));
device->connections = g_hash_table_new (NULL, NULL);
g_signal_connect (device, "notify::title", G_CALLBACK (device_title_changed), NULL);