static void load_vpn_plugin (CEPageVpn *page, NMConnection *connection) { CEPage *parent = CE_PAGE (page); GtkWidget *ui_widget, *failure; page->ui = nm_vpn_plugin_ui_interface_ui_factory (page->plugin, connection, NULL); if (!page->ui) { page->plugin = NULL; return; } ui_widget = GTK_WIDGET (nm_vpn_plugin_ui_widget_interface_get_widget (page->ui)); if (!ui_widget) { g_clear_object (&page->ui); page->plugin = NULL; return; } vpn_gnome3ify_editor (ui_widget); failure = GTK_WIDGET (gtk_builder_get_object (parent->builder, "failure_label")); gtk_widget_destroy (failure); gtk_box_pack_start (page->box, ui_widget, TRUE, TRUE, 0); gtk_widget_show_all (ui_widget); g_signal_connect_swapped (page->ui, "changed", G_CALLBACK (ce_page_changed), page); }
static void finish_setup (CEPageVpn *self, gpointer unused, GError *error, gpointer user_data) { CEPage *parent = CE_PAGE (self); CEPageVpnPrivate *priv = CE_PAGE_VPN_GET_PRIVATE (self); GError *vpn_error = NULL; if (error) return; g_return_if_fail (priv->plugin != NULL); priv->ui = nm_vpn_plugin_ui_interface_ui_factory (priv->plugin, parent->connection, &vpn_error); if (!priv->ui) { g_warning ("Could not load VPN user interface for service '%s': %s.", priv->service_type, (vpn_error && vpn_error->message) ? vpn_error->message : "(unknown)"); g_error_free (vpn_error); return; } g_signal_connect (priv->ui, "changed", G_CALLBACK (vpn_plugin_changed_cb), self); parent->page = GTK_WIDGET (nm_vpn_plugin_ui_widget_interface_get_widget (priv->ui)); if (!parent->page) { g_warning ("Could not load VPN user interface for service '%s'.", priv->service_type); return; } g_object_ref_sink (parent->page); gtk_widget_show_all (parent->page); }