/** * nmt_newt_form_run_sync: * @form: an #NmtNewtForm * * Displays @form as with nmt_newt_form_show(), but then iterates the * #GMainContext internally until @form exits. * * Returns: the widget whose activation caused @form to exit, or * %NULL if it was not caused by a widget. FIXME: this exit value is * sort of weird and may not be 100% accurate anyway. */ NmtNewtWidget * nmt_newt_form_run_sync (NmtNewtForm *form) { NmtNewtFormPrivate *priv = NMT_NEWT_FORM_GET_PRIVATE (form); nmt_newt_form_show (form); while (priv->form) g_main_context_iteration (NULL, TRUE); return priv->focus; }
void nmt_add_connection (void) { NmtNewtForm *form; form = g_object_new (NMT_TYPE_ADD_CONNECTION, "title", _("New Connection"), NULL); nmt_newt_form_show (form); g_object_unref (form); }
void nmt_edit_connection (NMConnection *connection) { NmtNewtForm *editor; editor = nmt_editor_new (connection); if (!editor) return; nmt_newt_form_show (editor); g_object_unref (editor); }
static gboolean idle_run_subprogram (gpointer user_data) { NmtuiStartupData *data = user_data; NmtNewtForm *form; form = data->subprogram (data->argc, data->argv); if (form) { g_signal_connect (form, "quit", G_CALLBACK (toplevel_form_quit), NULL); nmt_newt_form_show (form); g_object_unref (form); } else nmtui_quit (); return FALSE; }
void nmt_add_connection_full (const char *primary_text, const char *secondary_text, NMConnection *master, NmtAddConnectionTypeFilter type_filter, gpointer type_filter_data) { NmtNewtForm *form; form = g_object_new (NMT_TYPE_ADD_CONNECTION, "title", _("New Connection"), "primary-text", primary_text, "secondary-text", secondary_text, "master", master, "type-filter", type_filter, "type-filter-data", type_filter_data, NULL); nmt_newt_form_show (form); g_object_unref (form); }
static void activate_connection (NMConnection *connection, NMDevice *device, NMObject *specific_object) { NmtNewtForm *form; gs_unref_object NMSecretAgentOld *agent = NULL; NmtNewtWidget *label; NmtSyncOp op; const char *specific_object_path; NMActiveConnection *ac; GError *error = NULL; form = g_object_new (NMT_TYPE_NEWT_FORM, "escape-exits", TRUE, NULL); label = nmt_newt_label_new (_("Connecting...")); nmt_newt_form_set_content (form, label); agent = nm_secret_agent_simple_new ("nmtui"); if (agent) { if (connection) { nm_secret_agent_simple_enable (NM_SECRET_AGENT_SIMPLE (agent), nm_object_get_path (NM_OBJECT (connection))); } g_signal_connect (agent, "request-secrets", G_CALLBACK (secrets_requested), NULL); } specific_object_path = specific_object ? nm_object_get_path (specific_object) : NULL; /* There's no way to cancel an nm_client_activate_connection() / * nm_client_add_and_activate_connection() call, so we always let them * complete, even if the user hits Esc; they shouldn't normally take long * to complete anyway. */ nmt_sync_op_init (&op); if (connection) { nm_client_activate_connection_async (nm_client, connection, device, specific_object_path, NULL, activate_callback, &op); } else { nm_client_add_and_activate_connection_async (nm_client, NULL, device, specific_object_path, NULL, add_and_activate_callback, &op); } nmt_newt_form_show (form); ac = nmt_sync_op_wait_pointer (&op, &error); if (!ac) { nmt_newt_message_dialog (_("Could not activate connection: %s"), error->message); g_clear_error (&error); goto done; } else if (nm_active_connection_get_state (ac) == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) { /* Already active */ goto done; } else if (!nmt_newt_widget_get_realized (NMT_NEWT_WIDGET (form))) { /* User already hit Esc */ goto done; } if (agent && !connection) { connection = NM_CONNECTION (nm_active_connection_get_connection (ac)); if (connection) { nm_secret_agent_simple_enable (NM_SECRET_AGENT_SIMPLE (agent), nm_object_get_path (NM_OBJECT (connection))); } } /* Now wait for the connection to actually reach the ACTIVATED state, * allowing the user to cancel if it takes too long. */ nmt_sync_op_init (&op); g_signal_connect (form, "quit", G_CALLBACK (connect_cancelled), &op); g_signal_connect (ac, "notify::" NM_ACTIVE_CONNECTION_STATE, G_CALLBACK (activate_ac_state_changed), &op); if (!nmt_sync_op_wait_boolean (&op, &error)) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) nmt_newt_message_dialog (_("Could not activate connection: %s"), error->message); g_clear_error (&error); } g_signal_handlers_disconnect_by_func (form, G_CALLBACK (connect_cancelled), &op); g_signal_handlers_disconnect_by_func (ac, G_CALLBACK (activate_ac_state_changed), &op); done: if (nmt_newt_widget_get_realized (NMT_NEWT_WIDGET (form))) nmt_newt_form_quit (form); g_object_unref (form); if (agent) nm_secret_agent_old_unregister (agent, NULL, NULL); }