From fed9e2532afe2f451c3254100eb9793e92facbae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Tue, 13 Oct 2015 23:25:47 +0200 Subject: [PATCH] Use the glade file to make the setup wizard --- gtk/CMakeLists.txt | 1 + gtk/Makefile.am | 3 +- gtk/linphone.h | 3 +- gtk/main.c | 2 +- gtk/setup_wizard.ui | 15 ++ gtk/setupwizard.c | 479 +++++++++----------------------------------- gtk/setupwizard.h | 35 ++++ 7 files changed, 156 insertions(+), 382 deletions(-) create mode 100644 gtk/setupwizard.h diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt index 5bd36140d..b042b4c63 100644 --- a/gtk/CMakeLists.txt +++ b/gtk/CMakeLists.txt @@ -44,6 +44,7 @@ set(UI_FILES conf_frame.ui callee_frame.ui login_frame.ui + setup_wizard.ui ) set(PIXMAPS stock_people.png) diff --git a/gtk/Makefile.am b/gtk/Makefile.am index a50b8917c..4ddd9b928 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -20,7 +20,8 @@ UI_FILES= about.ui \ in_call_frame.ui \ conf_frame.ui \ callee_frame.ui \ - login_frame.ui + login_frame.ui \ + setup_wizard.ui PIXMAPS= \ stock_people.png diff --git a/gtk/linphone.h b/gtk/linphone.h index 156f9d389..2f25de188 100644 --- a/gtk/linphone.h +++ b/gtk/linphone.h @@ -60,6 +60,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define LINPHONE_VERSION LINPHONE_VERSION_DATE #endif +#include "setupwizard.h" + #define LINPHONE_ICON "linphone.png" #define LINPHONE_ICON_NAME "linphone" @@ -103,7 +105,6 @@ LINPHONE_PUBLIC GtkWidget *linphone_gtk_create_widget(const char* widget_name); char *linphone_gtk_message_storage_get_db_file(const char *filename); char *linphone_gtk_call_logs_storage_get_db_file(const char *filename); -LINPHONE_PUBLIC void linphone_gtk_show_assistant(GtkWidget* parent); LINPHONE_PUBLIC void linphone_gtk_close_assistant(void); LINPHONE_PUBLIC LinphoneCore *linphone_gtk_get_core(void); diff --git a/gtk/main.c b/gtk/main.c index 1930f8b89..3f1983d60 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1978,7 +1978,7 @@ static void linphone_gtk_init_ui(void){ #ifdef BUILD_WIZARD // Veryfing if at least one sip account is configured. If not, show wizard if (linphone_core_get_proxy_config_list(linphone_gtk_get_core()) == NULL) { - linphone_gtk_show_assistant(the_ui); + linphone_gtk_show_assistant(); } #endif diff --git a/gtk/setup_wizard.ui b/gtk/setup_wizard.ui index 17d774dd7..f173888fe 100644 --- a/gtk/setup_wizard.ui +++ b/gtk/setup_wizard.ui @@ -7,6 +7,12 @@ 12 SIP account configuration assistant False + + + + + + True @@ -134,6 +140,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -163,6 +170,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -191,6 +199,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -219,6 +228,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -284,6 +294,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -363,6 +374,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -405,6 +417,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -448,6 +461,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 @@ -477,6 +491,7 @@ This assistant will help you to use a SIP account for your calls. False True True + 1 diff --git a/gtk/setupwizard.c b/gtk/setupwizard.c index 08dc06bee..ffd5a8ba7 100644 --- a/gtk/setupwizard.c +++ b/gtk/setupwizard.c @@ -64,11 +64,11 @@ static void check_account_validation(GtkWidget *assistant) { linphone_account_creator_test_validation(creator); } -static void linphone_gtk_assistant_closed(GtkWidget *w) { +void linphone_gtk_assistant_closed(GtkWidget *w) { linphone_gtk_close_assistant(); } -static void linphone_gtk_assistant_prepare(GtkWidget *assistant, GtkWidget *page) { +void linphone_gtk_assistant_prepare(GtkWidget *assistant) { int pagenum = gtk_assistant_get_current_page(GTK_ASSISTANT(assistant)); switch (pagenum) { @@ -97,7 +97,6 @@ static gint destroy_assistant(GtkWidget* w){ static int linphone_gtk_assistant_forward(int curpage, gpointer data) { GtkWidget *w = GTK_WIDGET(data); - GtkWidget *box = gtk_assistant_get_nth_page(GTK_ASSISTANT(w), curpage); LinphoneAccountCreator *creator = linphone_gtk_assistant_get_creator(w); switch (curpage) { @@ -106,10 +105,10 @@ static int linphone_gtk_assistant_forward(int curpage, gpointer data) { break; case 1: { - GtkWidget *create_button = (GtkWidget*)g_object_get_data(G_OBJECT(box), "create_account"); - GtkWidget *setup_linphone_account = (GtkWidget*)g_object_get_data(G_OBJECT(box), "setup_linphone_account"); - GtkWidget *setup_account = (GtkWidget*)g_object_get_data(G_OBJECT(box), "setup_account"); - GtkWidget *config_uri = (GtkWidget*)g_object_get_data(G_OBJECT(box), "config-uri"); + GtkWidget *create_button = linphone_gtk_get_widget(w, "radio_create_account"); + GtkWidget *setup_linphone_account = linphone_gtk_get_widget(w, "radio_setup_lp_account"); + GtkWidget *setup_account = linphone_gtk_get_widget(w, "radio_setup_account"); + GtkWidget *config_uri = linphone_gtk_get_widget(w, "radio_config_uri"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(create_button))) { curpage = 4; // Go to page_4_linphone_account_creation_configuration @@ -127,26 +126,42 @@ static int linphone_gtk_assistant_forward(int curpage, gpointer data) { } break; case 2: - linphone_account_creator_set_username(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username")))); - linphone_account_creator_set_domain(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"domain")))); - linphone_account_creator_set_route(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box), "proxy")))); - linphone_account_creator_set_password(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box), "password")))); + { + GtkEntry *username_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p2_entry_username")); + GtkEntry *domain_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p2_entry_domain")); + GtkEntry *proxy_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p2_entry_proxy")); + GtkEntry *password_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p2_entry_password")); + linphone_account_creator_set_username(creator, gtk_entry_get_text(username_entry)); + linphone_account_creator_set_domain(creator, gtk_entry_get_text(domain_entry)); + linphone_account_creator_set_route(creator, gtk_entry_get_text(proxy_entry)); + linphone_account_creator_set_password(creator, gtk_entry_get_text(password_entry)); curpage = 9; // Go to page_9_finish break; + } case 3: - linphone_account_creator_set_username(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username")))); + { + GtkEntry *username_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p3_entry_username")); + GtkEntry *password_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p3_entry_password")); + linphone_account_creator_set_username(creator, gtk_entry_get_text(username_entry)); linphone_account_creator_set_domain(creator, "sip.linphone.org"); linphone_account_creator_set_route(creator, "sip.linphone.org"); - linphone_account_creator_set_password(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box), "password")))); + linphone_account_creator_set_password(creator, gtk_entry_get_text(password_entry)); curpage = 9; // Go to page_9_finish break; + } case 4: - linphone_account_creator_set_username(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box), "username")))); - linphone_account_creator_set_password(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box), "password")))); - linphone_account_creator_set_email(creator, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box), "email")))); - linphone_account_creator_enable_newsletter_subscription(creator, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(box), "newsletter")))); + { + GtkEntry *password_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p4_entry_password1")); + GtkEntry *username_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p4_entry_username")); + GtkEntry *email_entry = GTK_ENTRY(linphone_gtk_get_widget(w, "p4_entry_email")); + GtkToggleButton *newsletter = GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w, "p4_check_newsletter")); + linphone_account_creator_set_username(creator, gtk_entry_get_text(username_entry)); + linphone_account_creator_set_password(creator, gtk_entry_get_text(password_entry)); + linphone_account_creator_set_email(creator, gtk_entry_get_text(email_entry)); + linphone_account_creator_enable_newsletter_subscription(creator, gtk_toggle_button_get_active(newsletter)); curpage = 5; // Go to page_5_linphone_account_creation_in_progress break; + } case 6: curpage = 7; // Go to page_7_linphone_account_validation_check_in_progress break; @@ -156,37 +171,10 @@ static int linphone_gtk_assistant_forward(int curpage, gpointer data) { return curpage; } -static GtkWidget * create_intro_page(void) { - GtkWidget *vbox = gtk_vbox_new(FALSE, 2); - GtkWidget *label = gtk_label_new(_("Welcome!\nThis assistant will help you to use a SIP account for your calls.")); - gtk_box_pack_start(GTK_BOX (vbox), label, TRUE, TRUE, 2); - g_object_set_data(G_OBJECT(vbox), "label", label); - gtk_widget_show_all(vbox); - return vbox; -} - -static GtkWidget * create_choice_page(void) { - GtkWidget *vbox = gtk_vbox_new(FALSE, 2); - GtkWidget *t1 = gtk_radio_button_new_with_label(NULL, _("Create an account on linphone.org")); - GtkWidget *t2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(t1), _("I have already a linphone.org account and I just want to use it")); - GtkWidget *t3 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(t1), _("I have already a sip account and I just want to use it")); - GtkWidget *t4 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(t1), _("I want to specify a remote configuration URI")); - - gtk_box_pack_start(GTK_BOX (vbox), t1, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX (vbox), t2, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX (vbox), t3, TRUE, TRUE, 2); - gtk_box_pack_start(GTK_BOX (vbox), t4, TRUE, TRUE, 2); - gtk_widget_show_all(vbox); - g_object_set_data(G_OBJECT(vbox), "create_account", t1); - g_object_set_data(G_OBJECT(vbox), "setup_linphone_account", t2); - g_object_set_data(G_OBJECT(vbox), "setup_account", t3); - g_object_set_data(G_OBJECT(vbox), "config-uri", t4); - return vbox; -} - -static int external_account_configuration_complete(GtkWidget *w) { - GtkEntry* username = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "username")); - GtkEntry* domain = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "domain")); +static int external_account_configuration_complete(GtkWidget *page) { + GtkWidget *assistant = gtk_widget_get_toplevel(page); + GtkEntry* username = GTK_ENTRY(linphone_gtk_get_widget(assistant, "p2_entry_username")); + GtkEntry* domain = GTK_ENTRY(linphone_gtk_get_widget(assistant, "p2_entry_domain")); if ((gtk_entry_get_text_length(username) > 0) && (gtk_entry_get_text_length(domain) > 0) @@ -197,152 +185,68 @@ static int external_account_configuration_complete(GtkWidget *w) { return 0; } -static void external_account_configuration_changed(GtkEntry *entry, GtkWidget *w) { - GtkWidget *assistant = gtk_widget_get_toplevel(w); - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), w, external_account_configuration_complete(w) > 0); +void linphone_gtk_external_account_configuration_changed(GtkEntry *entry) { + GtkWidget *assistant = gtk_widget_get_toplevel(GTK_WIDGET(entry)); + gint current_page_num = gtk_assistant_get_current_page(GTK_ASSISTANT(assistant)); + GtkWidget *page = gtk_assistant_get_nth_page(GTK_ASSISTANT(assistant), current_page_num); + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, external_account_configuration_complete(page) > 0); } -static GtkWidget * create_external_account_configuration_page(void) { - GtkWidget *vbox = gtk_table_new(6, 2, FALSE); - GtkWidget *label = gtk_label_new(_("Enter your account information")); - GdkColor color; - GtkWidget *labelEmpty; - GtkWidget *labelUsername; - GtkWidget *labelPassword; - GtkWidget *entryPassword; - GtkWidget *labelDomain; - GtkWidget *labelProxy; - GtkWidget *entryUsername; - GtkWidget *entryDomain; - GtkWidget *entryRoute; - - gdk_color_parse("red", &color); - labelEmpty = gtk_label_new(NULL); - gtk_widget_modify_fg(labelEmpty, GTK_STATE_NORMAL, &color); - labelUsername = gtk_label_new(_("Username*")); - labelPassword = gtk_label_new(_("Password*")); - entryPassword = gtk_entry_new(); - gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE); - labelDomain = gtk_label_new(_("Domain*")); - labelProxy = gtk_label_new(_("Proxy")); - entryUsername = gtk_entry_new(); - entryDomain = gtk_entry_new(); - entryRoute = gtk_entry_new(); - - gtk_table_attach_defaults(GTK_TABLE(vbox), label, 0, 2, 0, 1); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelUsername, 0, 1, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryUsername, 1, 2, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelPassword, 0, 1, 2, 3); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryPassword, 1, 2, 2, 3); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelDomain, 0, 1, 3, 4); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryDomain, 1, 2, 3, 4); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelProxy, 0, 1, 4, 5); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryRoute, 1, 2, 4, 5); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelEmpty, 0, 2, 5, 6); - gtk_widget_show_all(vbox); - - g_object_set_data(G_OBJECT(vbox), "username", entryUsername); - g_object_set_data(G_OBJECT(vbox), "password", entryPassword); - g_object_set_data(G_OBJECT(vbox), "domain", entryDomain); - g_object_set_data(G_OBJECT(vbox), "proxy", entryRoute); - g_object_set_data(G_OBJECT(vbox), "errorstring", labelEmpty); - g_signal_connect(G_OBJECT(entryUsername), "changed", (GCallback)external_account_configuration_changed, vbox); - g_signal_connect(G_OBJECT(entryDomain), "changed", (GCallback)external_account_configuration_changed, vbox); - g_signal_connect(G_OBJECT(entryRoute), "changed", (GCallback)external_account_configuration_changed, vbox); - - return vbox; +void linphone_gtk_account_configuration_changed(GtkEntry *entry, GtkAssistant *assistant) { + gboolean complete = (gtk_entry_get_text_length(entry) > 0); + GtkWidget *page = gtk_assistant_get_nth_page(assistant, gtk_assistant_get_current_page(assistant)); + gtk_assistant_set_page_complete(assistant, page, complete); } -static void linphone_account_configuration_changed(GtkEntry *entry, GtkWidget *w) { - GtkWidget *assistant = gtk_widget_get_toplevel(w); - GtkEntry* username = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "username")); - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), w, gtk_entry_get_text_length(username) > 0); +static gboolean linphone_account_creation_configuration_correct(GtkWidget *w) { + gint is_username_available = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_username_available")); + gint is_email_correct = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_email_correct")); + gint is_password_correct = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_password_correct")); + return (is_username_available && is_email_correct && is_password_correct); } -static GtkWidget * create_linphone_account_configuration_page(void) { - GtkWidget *vbox = gtk_table_new(3, 2, TRUE); - GtkWidget *label = gtk_label_new(_("Enter your linphone.org username")); - GdkColor color; - GtkWidget *labelEmpty; - GtkWidget *labelUsername; - GtkWidget *entryUsername; - GtkWidget *labelPassword; - GtkWidget *entryPassword; - - gdk_color_parse("red", &color); - labelEmpty = gtk_label_new(NULL); - gtk_widget_modify_fg(labelEmpty, GTK_STATE_NORMAL, &color); - - labelUsername = gtk_label_new(_("Username:")); - entryUsername = gtk_entry_new(); - labelPassword = gtk_label_new(_("Password:")); - entryPassword = gtk_entry_new(); - gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE); - - gtk_table_attach_defaults(GTK_TABLE(vbox), label, 0, 2, 0, 1); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelUsername, 0, 1, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryUsername, 1, 2, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelPassword, 0, 1, 2, 3); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryPassword, 1, 2, 2, 3); - - gtk_widget_show_all(vbox); - g_object_set_data(G_OBJECT(vbox), "username", entryUsername); - g_object_set_data(G_OBJECT(vbox), "password", entryPassword); - g_object_set_data(G_OBJECT(vbox), "errorstring", labelEmpty); - g_signal_connect(G_OBJECT(entryUsername), "changed", (GCallback)linphone_account_configuration_changed, vbox); - return vbox; -} - -static int linphone_account_creation_configuration_correct(GtkWidget *w) { - int is_username_available = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_username_available")); - int is_email_correct = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_email_correct")); - int is_password_correct = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_password_correct")); - if ((is_username_available == 1) && (is_email_correct == 1) && (is_password_correct == 1)) { - return 1; - } - return 0; -} - -static gboolean update_interface_with_username_availability(void *w) { - GtkWidget *assistant = gtk_widget_get_toplevel(GTK_WIDGET(w)); - GtkImage* isUsernameOk = GTK_IMAGE(g_object_get_data(G_OBJECT(w), "usernameOk")); - GtkLabel* usernameError = GTK_LABEL(g_object_get_data(G_OBJECT(w), "error")); - int account_existing = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "is_username_used")); +static gboolean update_interface_with_username_availability(GtkWidget *page) { + GtkWidget *assistant = gtk_widget_get_toplevel(page); + GtkImage* isUsernameOk = GTK_IMAGE(linphone_gtk_get_widget(assistant, "p4_image_username_ok")); + GtkLabel* usernameError = GTK_LABEL(linphone_gtk_get_widget(assistant, "p4_label_error")); + int account_existing = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(page), "is_username_used")); if (account_existing == 0) { - g_object_set_data(G_OBJECT(w), "is_username_available", GINT_TO_POINTER(1)); + g_object_set_data(G_OBJECT(page), "is_username_available", GINT_TO_POINTER(1)); gtk_image_set_from_stock(isUsernameOk, GTK_STOCK_OK, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_label_set_text(usernameError, ""); } else { gtk_label_set_text(usernameError, "Username is already in use!"); - g_object_set_data(G_OBJECT(w), "is_username_available", GINT_TO_POINTER(0)); + g_object_set_data(G_OBJECT(page), "is_username_available", GINT_TO_POINTER(0)); gtk_image_set_from_stock(isUsernameOk, GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); } - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), GTK_WIDGET(w), linphone_account_creation_configuration_correct(GTK_WIDGET(w)) > 0); + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, linphone_account_creation_configuration_correct(page) > 0); return FALSE; } static void linphone_gtk_test_account_existence_cb(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status) { GtkWidget *assistant = (GtkWidget *)linphone_account_creator_get_user_data(creator); - GtkWidget *page = g_object_get_data(G_OBJECT(assistant), "linphone_account_creation_configuration"); - int account_existing = (status != LinphoneAccountCreatorOk); + GtkWidget *page = gtk_assistant_get_nth_page(GTK_ASSISTANT(assistant), gtk_assistant_get_current_page(GTK_ASSISTANT(assistant))); + gboolean account_existing = (status != LinphoneAccountCreatorOk); g_object_set_data(G_OBJECT(page), "is_username_used", GINT_TO_POINTER(account_existing)); - gdk_threads_add_idle((GSourceFunc)update_interface_with_username_availability, (void*)page); + gdk_threads_add_idle((GSourceFunc)update_interface_with_username_availability, page); } static gboolean check_username_availability(GtkWidget *assistant) { LinphoneAccountCreator *creator = linphone_gtk_assistant_get_creator(assistant); - GtkWidget *page = GUINT_TO_POINTER(g_object_get_data(G_OBJECT(assistant), "linphone_account_creation_configuration")); + GtkWidget *page = gtk_assistant_get_nth_page(GTK_ASSISTANT(assistant), gtk_assistant_get_current_page(GTK_ASSISTANT(assistant))); g_object_set_data(G_OBJECT(page), "usernameAvailabilityTimerID", GUINT_TO_POINTER(0)); linphone_account_creator_test_existence(creator); return FALSE; } -static void linphone_account_creation_username_changed(GtkEntry *entry, GtkWidget *w) { - GtkWidget *assistant = gtk_widget_get_toplevel(GTK_WIDGET(w)); - GtkEntry* username = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "username")); - GtkImage* isUsernameOk = GTK_IMAGE(g_object_get_data(G_OBJECT(w), "usernameOk")); - GtkLabel* usernameError = GTK_LABEL(g_object_get_data(G_OBJECT(w), "error")); +void linphone_gtk_account_creation_username_changed(GtkEntry *entry) { + GtkWidget *assistant = gtk_widget_get_toplevel(GTK_WIDGET(entry)); + GtkEntry* username = GTK_ENTRY(linphone_gtk_get_widget(assistant, "p4_entry_username")); + GtkImage* isUsernameOk = GTK_IMAGE(linphone_gtk_get_widget(assistant, "p4_image_username_ok")); + GtkLabel* usernameError = GTK_LABEL(linphone_gtk_get_widget(assistant, "p4_label_error")); + gint current_page_num = gtk_assistant_get_current_page(GTK_ASSISTANT(assistant)); + GtkWidget *page = gtk_assistant_get_nth_page(GTK_ASSISTANT(assistant), current_page_num); LinphoneAccountCreator *creator = linphone_gtk_assistant_get_creator(assistant); linphone_account_creator_set_username(creator, gtk_entry_get_text(username)); @@ -350,49 +254,53 @@ static void linphone_account_creation_username_changed(GtkEntry *entry, GtkWidge linphone_account_creator_set_route(creator, "sip.linphone.org"); if (g_regex_match_simple("^[a-zA-Z]+[a-zA-Z0-9.\\-_]{3,}$", gtk_entry_get_text(username), 0, 0)) { - guint timerID = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(w), "usernameAvailabilityTimerID")); + guint timerID = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(page), "usernameAvailabilityTimerID")); if (timerID > 0) { g_source_remove(timerID); } timerID = g_timeout_add(500, (GSourceFunc)check_username_availability, assistant); - g_object_set_data(G_OBJECT(w), "usernameAvailabilityTimerID", GUINT_TO_POINTER(timerID)); + g_object_set_data(G_OBJECT(page), "usernameAvailabilityTimerID", GUINT_TO_POINTER(timerID)); } else { if (gtk_entry_get_text_length(username) < LOGIN_MIN_SIZE) { gtk_label_set_text(usernameError, "Username is too short"); } else if (!g_regex_match_simple("^[a-zA-Z]+[a-zA-Z0-9.\\-_]{3,}$", gtk_entry_get_text(username), 0, 0)) { gtk_label_set_text(usernameError, "Unauthorized username"); } - g_object_set_data(G_OBJECT(w), "is_username_available", GINT_TO_POINTER(0)); + g_object_set_data(G_OBJECT(page), "is_username_available", GINT_TO_POINTER(0)); gtk_image_set_from_stock(isUsernameOk, GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), w, linphone_account_creation_configuration_correct(w) > 0); + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, linphone_account_creation_configuration_correct(page) > 0); } } -static void linphone_account_creation_email_changed(GtkEntry *entry, GtkWidget *w) { - GtkEntry* email = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "email")); - GtkImage* isEmailOk = GTK_IMAGE(g_object_get_data(G_OBJECT(w), "emailOk")); - GtkWidget *assistant = gtk_widget_get_toplevel(w); +void linphone_gtk_account_creation_email_changed(GtkEntry *entry) { + GtkWidget *assistant = gtk_widget_get_toplevel(GTK_WIDGET(entry)); + GtkEntry* email = GTK_ENTRY(linphone_gtk_get_widget(assistant, "p4_entry_email")); + GtkImage* isEmailOk = GTK_IMAGE(linphone_gtk_get_widget(assistant, "p4_image_email_ok")); + gint current_page_num = gtk_assistant_get_current_page(GTK_ASSISTANT(assistant)); + GtkWidget *page = gtk_assistant_get_nth_page(GTK_ASSISTANT(assistant), current_page_num); if (g_regex_match_simple("^" BC_REGEX_RESTRICTIVE_EMAIL_ADDR "$", gtk_entry_get_text(email), 0, 0)) { - g_object_set_data(G_OBJECT(w), "is_email_correct", GINT_TO_POINTER(1)); + g_object_set_data(G_OBJECT(page), "is_email_correct", GINT_TO_POINTER(1)); gtk_image_set_from_stock(isEmailOk, GTK_STOCK_OK, GTK_ICON_SIZE_LARGE_TOOLBAR); } else { - g_object_set_data(G_OBJECT(w), "is_email_correct", GINT_TO_POINTER(0)); + g_object_set_data(G_OBJECT(page), "is_email_correct", GINT_TO_POINTER(0)); gtk_image_set_from_stock(isEmailOk, GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); } - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), w, linphone_account_creation_configuration_correct(w) > 0); + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, linphone_account_creation_configuration_correct(page) > 0); } -static void linphone_account_creation_password_changed(GtkEntry *entry, GtkWidget *w) { - GtkEntry* password = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "password")); - GtkImage* isPasswordOk = GTK_IMAGE(g_object_get_data(G_OBJECT(w), "passwordOk")); - GtkEntry* password_confirm = GTK_ENTRY(g_object_get_data(G_OBJECT(w), "password_confirm")); - GtkWidget *assistant = gtk_widget_get_toplevel(w); - GtkLabel* passwordError = GTK_LABEL(g_object_get_data(G_OBJECT(w), "error")); +void linphone_gtk_account_creation_password_changed(GtkEntry *entry) { + GtkWidget *assistant = gtk_widget_get_toplevel(GTK_WIDGET(entry)); + GtkEntry* password = GTK_ENTRY(linphone_gtk_get_widget(assistant, "p4_entry_password1")); + GtkEntry* password_confirm = GTK_ENTRY(linphone_gtk_get_widget(assistant, "p4_entry_password2")); + GtkImage* isPasswordOk = GTK_IMAGE(linphone_gtk_get_widget(assistant, "p4_image_password_ok")); + GtkLabel* passwordError = GTK_LABEL(linphone_gtk_get_widget(assistant, "p4_label_error")); + gint current_page_num = gtk_assistant_get_current_page(GTK_ASSISTANT(assistant)); + GtkWidget *page = gtk_assistant_get_nth_page(GTK_ASSISTANT(assistant), current_page_num); if ((gtk_entry_get_text_length(password) >= PASSWORD_MIN_SIZE) && (g_ascii_strcasecmp(gtk_entry_get_text(password), gtk_entry_get_text(password_confirm)) == 0)) { - g_object_set_data(G_OBJECT(w), "is_password_correct", GINT_TO_POINTER(1)); + g_object_set_data(G_OBJECT(page), "is_password_correct", GINT_TO_POINTER(1)); gtk_image_set_from_stock(isPasswordOk, GTK_STOCK_OK, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_label_set_text(passwordError, ""); } else { @@ -401,123 +309,13 @@ static void linphone_account_creation_password_changed(GtkEntry *entry, GtkWidge } else if (!g_ascii_strcasecmp(gtk_entry_get_text(password), gtk_entry_get_text(password_confirm)) == 0) { gtk_label_set_text(passwordError, "Passwords don't match !"); } - g_object_set_data(G_OBJECT(w), "is_password_correct", GINT_TO_POINTER(0)); + g_object_set_data(G_OBJECT(page), "is_password_correct", GINT_TO_POINTER(0)); gtk_image_set_from_stock(isPasswordOk, GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); } - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), w, linphone_account_creation_configuration_correct(w) > 0); + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, linphone_account_creation_configuration_correct(page) > 0); } -static GtkWidget * create_linphone_account_creation_configuration_page(void) { - GtkWidget *vbox = gtk_table_new(7, 3, FALSE); - GtkWidget *label = gtk_label_new(_("(*) Required fields")); - GtkWidget *labelUsername = gtk_label_new(_("Username: (*)")); - GtkWidget *isUsernameOk = gtk_image_new_from_stock(GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); - GtkWidget *labelPassword = gtk_label_new(_("Password: (*)")); - GtkWidget *isPasswordOk = gtk_image_new_from_stock(GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); - GtkWidget *labelEmail = gtk_label_new(_("Email: (*)")); - GtkWidget *isEmailOk = gtk_image_new_from_stock(GTK_STOCK_NO, GTK_ICON_SIZE_LARGE_TOOLBAR); - GtkWidget *labelPassword2 = gtk_label_new(_("Confirm your password: (*)")); - GtkWidget *entryUsername = gtk_entry_new(); - GtkWidget *entryPassword = gtk_entry_new(); - GtkWidget *entryEmail; - GtkWidget *entryPassword2; - GtkWidget *checkNewsletter; - GtkWidget *labelError; - GtkWidget *passwordVbox1; - GtkWidget *passwordVbox2; - GdkColor color; - - gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE); - entryEmail = gtk_entry_new(); - entryPassword2 = gtk_entry_new(); - gtk_entry_set_visibility(GTK_ENTRY(entryPassword2), FALSE); - checkNewsletter = gtk_check_button_new_with_label(_("Keep me informed with linphone updates")); - - gdk_color_parse("red", &color); - labelError = gtk_label_new(NULL); - gtk_widget_modify_fg(labelError, GTK_STATE_NORMAL, &color); - - passwordVbox1 = gtk_vbox_new(FALSE, 2); - passwordVbox2 = gtk_vbox_new(FALSE, 2); - gtk_box_pack_start(GTK_BOX (passwordVbox1), labelPassword, TRUE, FALSE, 2); - gtk_box_pack_start(GTK_BOX (passwordVbox1), labelPassword2, TRUE, FALSE, 2); - gtk_box_pack_start(GTK_BOX (passwordVbox2), entryPassword, TRUE, FALSE, 2); - gtk_box_pack_start(GTK_BOX (passwordVbox2), entryPassword2, TRUE, FALSE, 2); - - gtk_table_attach_defaults(GTK_TABLE(vbox), label, 0, 3, 0, 1); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelEmail, 0, 1, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryEmail, 1, 2, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), isEmailOk, 2, 3, 1, 2); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelUsername, 0, 1, 2, 3); - gtk_table_attach_defaults(GTK_TABLE(vbox), entryUsername, 1, 2, 2, 3); - gtk_table_attach_defaults(GTK_TABLE(vbox), isUsernameOk, 2, 3, 2, 3); - gtk_table_attach_defaults(GTK_TABLE(vbox), passwordVbox1, 0, 1, 3, 4); - gtk_table_attach_defaults(GTK_TABLE(vbox), passwordVbox2, 1, 2, 3, 4); - gtk_table_attach_defaults(GTK_TABLE(vbox), isPasswordOk, 2, 3, 3, 4); - gtk_table_attach_defaults(GTK_TABLE(vbox), labelError, 1, 4, 5, 6); - gtk_table_attach_defaults(GTK_TABLE(vbox), checkNewsletter, 0, 3, 6, 7); - - gtk_widget_show_all(vbox); - g_object_set_data(G_OBJECT(vbox), "username", entryUsername); - g_object_set_data(G_OBJECT(vbox), "password", entryPassword); - g_object_set_data(G_OBJECT(vbox), "email", entryEmail); - g_object_set_data(G_OBJECT(vbox), "usernameOk", isUsernameOk); - g_object_set_data(G_OBJECT(vbox), "passwordOk", isPasswordOk); - g_object_set_data(G_OBJECT(vbox), "emailOk", isEmailOk); - g_object_set_data(G_OBJECT(vbox), "password_confirm", entryPassword2); - g_object_set_data(G_OBJECT(vbox), "newsletter", checkNewsletter); - g_object_set_data(G_OBJECT(vbox), "error", labelError); - g_signal_connect(G_OBJECT(entryUsername), "changed", (GCallback)linphone_account_creation_username_changed, vbox); - g_signal_connect(G_OBJECT(entryPassword), "changed", (GCallback)linphone_account_creation_password_changed, vbox); - g_signal_connect(G_OBJECT(entryEmail), "changed", (GCallback)linphone_account_creation_email_changed, vbox); - g_signal_connect(G_OBJECT(entryPassword2), "changed", (GCallback)linphone_account_creation_password_changed, vbox); - return vbox; -} - -static GtkWidget * create_linphone_account_creation_in_progress_page(void) { - GtkWidget *vbox = gtk_vbox_new(FALSE, 2); - GtkWidget *label = gtk_label_new(_("Your account is being created, please wait.")); - gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 2); - gtk_widget_show_all(vbox); - return vbox; -} - -static GtkWidget * create_linphone_account_validation_wait_page(void) { - GtkWidget *vbox = gtk_table_new(2, 1, FALSE); - GtkWidget *label = gtk_label_new(_("Please validate your account by clicking on the link we just sent you by email.\n" - "Then come back here and press Next button.")); - gtk_table_attach(GTK_TABLE(vbox), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 100); - g_object_set_data(G_OBJECT(vbox), "label", label); - gtk_widget_show_all(vbox); - return vbox; -} - -static GtkWidget * create_linphone_account_validation_check_in_progress_page(void) { - GtkWidget *vbox = gtk_vbox_new(FALSE, 2); - GtkWidget *label = gtk_label_new(_("Checking if your account is been validated, please wait.")); - gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 2); - gtk_widget_show_all(vbox); - return vbox; -} - -static GtkWidget * create_error_page(void) { - GtkWidget *vbox = gtk_table_new(2, 1, FALSE); - GtkWidget *label = gtk_label_new(_("Error, account not validated, username already used or server unreachable.\nPlease go back and try again.")); - gtk_table_attach(GTK_TABLE(vbox), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 100); - g_object_set_data(G_OBJECT(vbox), "label", label); - gtk_widget_show_all(vbox); - return vbox; -} - -static GtkWidget * create_finish_page(void) { - GtkWidget *vbox = gtk_vbox_new(FALSE, 2); - GtkWidget *label = gtk_label_new(_("Thank you. Your account is now configured and ready for use.")); - gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 2); - gtk_widget_show_all(vbox); - return vbox; -} - -static LinphoneAccountCreator * linphone_gtk_assistant_init(GtkWidget *w) { +static void linphone_gtk_assistant_init(GtkWidget *w) { LinphoneAccountCreator *creator = linphone_account_creator_new(linphone_gtk_get_core(), "https://www.linphone.org/wizard.php"); LinphoneAccountCreatorCbs *cbs = linphone_account_creator_get_callbacks(creator); linphone_account_creator_set_user_data(creator, w); @@ -525,92 +323,15 @@ static LinphoneAccountCreator * linphone_gtk_assistant_init(GtkWidget *w) { linphone_account_creator_cbs_set_validation_tested(cbs, linphone_gtk_test_account_validation_cb); linphone_account_creator_cbs_set_create_account(cbs, linphone_gtk_create_account_cb); g_object_set_data(G_OBJECT(w), "creator", creator); - return creator; + + gtk_assistant_set_forward_page_func(GTK_ASSISTANT(w), linphone_gtk_assistant_forward, w, NULL); } -void linphone_gtk_show_assistant(GtkWidget *parent) { - GtkWidget *w; - GtkWidget *page_0_intro; - GtkWidget *page_1_choice; - GtkWidget *page_2_external_account_configuration; - GtkWidget *page_3_linphone_account_configuration; - GtkWidget *page_4_linphone_account_creation_configuration; - GtkWidget *page_5_linphone_account_creation_in_progress; - GtkWidget *page_6_linphone_account_validation_wait; - GtkWidget *page_7_linphone_account_validation_check_in_progress; - GtkWidget *page_8_error; - GtkWidget *page_9_finish; - +void linphone_gtk_show_assistant(void) { if (the_assistant != NULL) return; - - w = the_assistant = gtk_assistant_new(); - gtk_window_set_resizable (GTK_WINDOW(w), FALSE); - gtk_window_set_title(GTK_WINDOW(w), _("SIP account configuration assistant")); - - page_0_intro = create_intro_page(); - page_1_choice = create_choice_page(); - page_2_external_account_configuration = create_external_account_configuration_page(); - page_3_linphone_account_configuration = create_linphone_account_configuration_page(); - page_4_linphone_account_creation_configuration = create_linphone_account_creation_configuration_page(); - page_5_linphone_account_creation_in_progress = create_linphone_account_creation_in_progress_page(); - page_6_linphone_account_validation_wait = create_linphone_account_validation_wait_page(); - page_7_linphone_account_validation_check_in_progress = create_linphone_account_validation_check_in_progress_page(); - page_8_error = create_error_page(); - page_9_finish = create_finish_page(); - - linphone_gtk_assistant_init(w); - gtk_assistant_append_page(GTK_ASSISTANT(w), page_0_intro); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_0_intro, GTK_ASSISTANT_PAGE_INTRO); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_0_intro, _("Welcome to the account setup assistant")); - gtk_assistant_set_page_complete(GTK_ASSISTANT(w), page_0_intro, TRUE); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_1_choice); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_1_choice, GTK_ASSISTANT_PAGE_CONTENT); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_1_choice, _("Account setup assistant")); - gtk_assistant_set_page_complete(GTK_ASSISTANT(w), page_1_choice, TRUE); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_2_external_account_configuration); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_2_external_account_configuration, GTK_ASSISTANT_PAGE_CONFIRM); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_2_external_account_configuration, _("Configure your account (step 1/1)")); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_3_linphone_account_configuration); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_3_linphone_account_configuration, GTK_ASSISTANT_PAGE_CONFIRM); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_3_linphone_account_configuration, _("Enter your sip username (step 1/1)")); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_4_linphone_account_creation_configuration); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_4_linphone_account_creation_configuration, GTK_ASSISTANT_PAGE_CONFIRM); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_4_linphone_account_creation_configuration, _("Enter account information (step 1/2)")); - g_object_set_data(G_OBJECT(w), "linphone_account_creation_configuration", page_4_linphone_account_creation_configuration); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_5_linphone_account_creation_in_progress); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_5_linphone_account_creation_in_progress, GTK_ASSISTANT_PAGE_PROGRESS); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_5_linphone_account_creation_in_progress, _("Account creation in progress")); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_6_linphone_account_validation_wait); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_6_linphone_account_validation_wait, GTK_ASSISTANT_PAGE_CONTENT); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_6_linphone_account_validation_wait, _("Validation (step 2/2)")); - gtk_assistant_set_page_complete(GTK_ASSISTANT(w), page_6_linphone_account_validation_wait, TRUE); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_7_linphone_account_validation_check_in_progress); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_7_linphone_account_validation_check_in_progress, GTK_ASSISTANT_PAGE_PROGRESS); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_7_linphone_account_validation_check_in_progress, _("Account validation check in progress")); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_8_error); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_8_error, GTK_ASSISTANT_PAGE_CONTENT); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_8_error, _("Error")); - - gtk_assistant_append_page(GTK_ASSISTANT(w), page_9_finish); - gtk_assistant_set_page_type(GTK_ASSISTANT(w), page_9_finish, GTK_ASSISTANT_PAGE_SUMMARY); - gtk_assistant_set_page_title(GTK_ASSISTANT(w), page_9_finish, _("Terminating")); - - gtk_assistant_set_forward_page_func(GTK_ASSISTANT(w), linphone_gtk_assistant_forward, w, NULL); - g_signal_connect(G_OBJECT(w), "close", (GCallback)linphone_gtk_assistant_closed, NULL); - g_signal_connect(G_OBJECT(w), "cancel", (GCallback)linphone_gtk_assistant_closed, NULL); - g_signal_connect(G_OBJECT(w), "prepare", (GCallback)linphone_gtk_assistant_prepare, NULL); - - gtk_window_set_transient_for(GTK_WINDOW(the_assistant), GTK_WINDOW(linphone_gtk_get_main_window())); - - gtk_widget_show(w); + the_assistant = linphone_gtk_create_window("setup_wizard", linphone_gtk_get_main_window()); + linphone_gtk_assistant_init(the_assistant); + gtk_widget_show(the_assistant); } void linphone_gtk_close_assistant(void) { diff --git a/gtk/setupwizard.h b/gtk/setupwizard.h new file mode 100644 index 000000000..c88e1ee05 --- /dev/null +++ b/gtk/setupwizard.h @@ -0,0 +1,35 @@ +/* +linphone, gtk-glade interface. +Copyright (C) 2008 Simon MORLAT (simon.morlat@linphone.org) + +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 2 +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, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef SETUP_WIZARD_H +#define SETUP_WIZARD_H + +#include "sipsetup.h" + +LINPHONE_PUBLIC void linphone_gtk_show_assistant(void); +LINPHONE_PUBLIC void linphone_gtk_assistant_prepare(GtkWidget *assistant); +LINPHONE_PUBLIC void linphone_gtk_assistant_closed(GtkWidget *w); + +LINPHONE_PUBLIC void linphone_gtk_external_account_configuration_changed(GtkEntry* entry); +LINPHONE_PUBLIC void linphone_gtk_account_configuration_changed(GtkEntry *entry, GtkAssistant *assistant); +LINPHONE_PUBLIC void linphone_gtk_account_creation_username_changed(GtkEntry *entry); +LINPHONE_PUBLIC void linphone_gtk_account_creation_password_changed(GtkEntry *entry); +LINPHONE_PUBLIC void linphone_gtk_account_creation_email_changed(GtkEntry *entry); + +#endif \ No newline at end of file