static void
device_ethernet_constructed (GObject *object)
{
        NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
        NMRemoteSettings *settings;
        GtkWidget *list;
        GtkWidget *swin;
        GtkWidget *widget;

        widget = GTK_WIDGET (gtk_builder_get_object (device->builder,
                                                     "device_off_switch"));
        g_signal_connect (widget, "notify::active",
                          G_CALLBACK (device_off_toggled), device);

        device->scrolled_window = swin = GTK_WIDGET (gtk_builder_get_object (device->builder, "list"));
        device->list = list = GTK_WIDGET (egg_list_box_new ());
        egg_list_box_set_selection_mode (EGG_LIST_BOX (list), GTK_SELECTION_NONE);
        egg_list_box_set_separator_funcs (EGG_LIST_BOX (list), update_separator, NULL, NULL);
        egg_list_box_add_to_scrolled (EGG_LIST_BOX (list), GTK_SCROLLED_WINDOW (swin));
        gtk_widget_show (list);

        device->details = GTK_WIDGET (gtk_builder_get_object (NET_DEVICE_ETHERNET (object)->builder, "details"));

        device->details_button = GTK_WIDGET (gtk_builder_get_object (NET_DEVICE_ETHERNET (object)->builder, "details_button"));
        g_signal_connect (device->details_button, "clicked",
                          G_CALLBACK (show_details_for_wired), device);

        device->add_profile_button = GTK_WIDGET (gtk_builder_get_object (NET_DEVICE_ETHERNET (object)->builder, "add_profile_button"));
        g_signal_connect (device->add_profile_button, "clicked",
                          G_CALLBACK (add_profile), device);

        settings = net_object_get_remote_settings (NET_OBJECT (object));
        g_signal_connect (settings, "connections-read",
                          G_CALLBACK (remote_settings_read_cb), object);
}
static void
device_ethernet_finalize (GObject *object)
{
        NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);

        g_object_unref (device->builder);

        G_OBJECT_CLASS (net_device_ethernet_parent_class)->finalize (object);
}
static GtkWidget *
device_ethernet_add_to_notebook (NetObject    *object,
                                 GtkNotebook  *notebook,
                                 GtkSizeGroup *heading_size_group)
{
        NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
        GtkWidget *vbox;

        vbox = GTK_WIDGET (gtk_builder_get_object (device->builder, "vbox6"));
        gtk_notebook_append_page (notebook, vbox, NULL);
        return vbox;
}
static GtkWidget *
device_ethernet_add_to_notebook (NetObject    *object,
                                 GtkNotebook  *notebook,
                                 GtkSizeGroup *heading_size_group)
{
        NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
        GtkWidget *vbox;

        vbox = GTK_WIDGET (gtk_builder_get_object (device->builder, "vbox6"));
        g_object_ref (vbox);
        gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (vbox)), vbox);
        gtk_notebook_append_page (notebook, vbox, NULL);
        g_object_unref (vbox);
        return vbox;
}
static void
device_ethernet_finalize (GObject *object)
{
        NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
        GSList *connections, *l;

        g_object_unref (device->builder);

        connections = net_device_get_valid_connections (NET_DEVICE (device));
        for (l = connections; l; l = l->next) {
                NMConnection *connection = l->data;
                if (g_object_get_data (G_OBJECT (connection), "removed_signal_handler")) {
                        g_signal_handlers_disconnect_by_func (connection, connection_removed, device);
                        g_object_set_data (G_OBJECT (connection), "removed_signal_handler", NULL);
                }
        }
        g_slist_free (connections);

        G_OBJECT_CLASS (net_device_ethernet_parent_class)->finalize (object);
}
static void
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 (widget, "notify::active",
                          G_CALLBACK (device_off_toggled), device);

        device->scrolled_window = swin = GTK_WIDGET (gtk_builder_get_object (device->builder, "list"));
        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 (list, "row-activated",
                          G_CALLBACK (connection_activated), device);
        gtk_widget_show (list);

        device->details = GTK_WIDGET (gtk_builder_get_object (device->builder, "details"));

        device->details_button = GTK_WIDGET (gtk_builder_get_object (device->builder, "details_button"));
        g_signal_connect (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 (device->add_profile_button, "clicked",
                          G_CALLBACK (add_profile), device);

        client = net_object_get_client (NET_OBJECT (object));
        g_signal_connect (client, NM_CLIENT_CONNECTION_ADDED,
                          G_CALLBACK (client_connection_added_cb), object);
        g_signal_connect_object (client, NM_CLIENT_CONNECTION_REMOVED,
                                 G_CALLBACK (connection_removed), device, 0);

        device_ethernet_refresh_ui (device);
}
static void
device_ethernet_refresh (NetObject *object)
{
        NetDeviceEthernet *device = NET_DEVICE_ETHERNET (object);
        device_ethernet_refresh_ui (device);
}