diff --git a/configure.ac b/configure.ac index 9144cfc1c7c3bb27444077ed0ab4480f0d92c3ec..45cdc5b0d3e66353c66c0cc2759f23b8752202c7 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ dnl Improve make variable MAKE AC_PROG_MAKE_SET dnl Where to find configure files -AC_CONFIG_SRCDIR([config.h.in]) +dnl AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_MACRO_DIR([m4]) dnl What to generate diff --git a/sflphone-gtk/src/Makefile.am b/sflphone-gtk/src/Makefile.am index 838bc8de0378dbd695f180cd97edfe2747d44a21..0813772403b3efe40dd6dc0219425971484d1f65 100644 --- a/sflphone-gtk/src/Makefile.am +++ b/sflphone-gtk/src/Makefile.am @@ -5,7 +5,7 @@ sflphone_gtk_SOURCES = \ errors.c \ dbus.c \ sflnotify.c \ - druid.c \ + assistant.c \ mainwindow.c \ calllist.c \ dialpad.c \ @@ -23,7 +23,7 @@ sflphone_gtk_SOURCES = \ glwidget.c \ MemManager.c -noinst_HEADERS = actions.h dbus.h sflnotify.h mainwindow.h calllist.h dialpad.h codeclist.h druid.h\ +noinst_HEADERS = actions.h dbus.h sflnotify.h mainwindow.h calllist.h dialpad.h codeclist.h assistant.h\ callmanager-glue.h errors.h sflphone_const.h configurationmanager-glue.h instance-glue.h menus.h calltab.h calltree.h configwindow.h \ accountlist.h accountwindow.h marshaller.h sliders.h statusicon.h EXTRA_DIST = marshaller.list diff --git a/sflphone-gtk/src/assistant.c b/sflphone-gtk/src/assistant.c new file mode 100644 index 0000000000000000000000000000000000000000..bfd4f994886f93dc08b42518c0e4df2395bbe5aa --- /dev/null +++ b/sflphone-gtk/src/assistant.c @@ -0,0 +1,382 @@ +/* + * Copyright (C) 2008 Savoir-Faire Linux inc. + * Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com> + * + * 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 3 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <assistant.h> + +struct _wizard *wiz; +static int account_type; +account_t* current; + +void +set_account_type( GtkWidget* widget , gpointer data ) +{ + + if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget )) ){ + account_type = _SIP; + }else{ + account_type = _IAX ; + } +} + +static void close_callback(gpointer data) +{ + gtk_widget_destroy(wiz->assistant); +} + +static void cancel_callback(gpointer data) +{ + gtk_widget_destroy(wiz->assistant); +} + +static void +apply_callback( gpointer data ) +{ + if( account_type == _SIP ) + { + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_alias)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE")); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888")); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP")); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_server)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_password)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_username)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->enable)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->addr)))); + } + else + { + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_alias)))); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE")); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888")); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX")); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username)))); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); + } + + dbus_add_account( current ); +} + +void +enable_stun( GtkWidget* widget ) +{ + gtk_widget_set_sensitive( GTK_WIDGET( wiz->addr ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); +} + +void +build_wizard( void ) +{ + wiz = ( struct _wizard* )g_malloc( sizeof( struct _wizard)); + current = g_new0(account_t, 1); + current->properties = g_hash_table_new(NULL, g_str_equal); + current ->accountID = "test"; + + wiz->assistant = gtk_assistant_new( ); + gtk_window_set_title( GTK_WINDOW(wiz->assistant), "SFLphone configuration wizard" ); + gtk_window_set_position(GTK_WINDOW(wiz->assistant), GTK_WIN_POS_CENTER); + gtk_assistant_set_forward_page_func( GTK_ASSISTANT( wiz->assistant ), (GtkAssistantPageFunc) forward_page_func , NULL , NULL ); + + build_intro(); + build_select_account(); + build_sip_account_configuration(); + build_nat_settings(); + build_iax_account_configuration(); + build_summary(); + + g_signal_connect(G_OBJECT(wiz->assistant), "close" , G_CALLBACK(close_callback), NULL); + g_signal_connect(G_OBJECT(wiz->assistant), "cancel" , G_CALLBACK(cancel_callback), NULL); + + gtk_widget_show_all(wiz->assistant); + + gtk_assistant_update_buttons_state(GTK_ASSISTANT(wiz->assistant)); + +} + +GtkWidget* +build_intro() +{ + GtkWidget *label; + + wiz->intro = create_vbox( GTK_ASSISTANT_PAGE_INTRO , "SFLphone 0.8" , "Welcome"); + + label = gtk_label_new(" This installation wizard will help you configure an account.") ; + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_widget_set_size_request(GTK_WIDGET(label), 380, -1); + gtk_box_pack_start(GTK_BOX(wiz->intro), label, FALSE, TRUE, 0); + + return wiz->intro; +} + +GtkWidget* +build_select_account() +{ + GtkWidget* sip; + GtkWidget* iax; + + wiz->protocols = create_vbox( GTK_ASSISTANT_PAGE_CONTENT , "VoIP Protocols" , "Select an account type:"); + + sip = gtk_radio_button_new_with_label(NULL,"SIP (Session Initiation Protocol)"); + gtk_box_pack_start( GTK_BOX(wiz->protocols) , sip , TRUE, TRUE, 0); + iax = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sip), "IAX2 (InterAsterix Exchange)"); + gtk_box_pack_start( GTK_BOX(wiz->protocols) , iax , TRUE, TRUE, 0); + + g_signal_connect(G_OBJECT( sip ) , "clicked" , G_CALLBACK( set_account_type ) , NULL ); + + return wiz->protocols; +} + + +GtkWidget* +build_sip_account_configuration( void ) +{ + GtkWidget* table; + GtkWidget* label; + + wiz->sip_account = create_vbox( GTK_ASSISTANT_PAGE_CONTENT , "SIP account configuration" , "Fill the following information:"); + // table + table = gtk_table_new ( 4, 2 , FALSE/* homogeneous */); + gtk_table_set_row_spacings( GTK_TABLE(table), 10); + gtk_table_set_col_spacings( GTK_TABLE(table), 10); + gtk_box_pack_start( GTK_BOX(wiz->sip_account) , table , TRUE, TRUE, 0); + + // alias field + label = gtk_label_new_with_mnemonic ("_Alias"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->sip_alias = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->sip_alias); + gtk_table_attach ( GTK_TABLE( table ), wiz->sip_alias, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // server field + label = gtk_label_new_with_mnemonic ("_Host name"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->sip_server = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->sip_server); + gtk_table_attach ( GTK_TABLE( table ), wiz->sip_server, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // username field + label = gtk_label_new_with_mnemonic ("_User name"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->sip_username = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->sip_username); + gtk_table_attach ( GTK_TABLE( table ), wiz->sip_username, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // password field + label = gtk_label_new_with_mnemonic ("_Password"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->sip_password = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->sip_password); + gtk_entry_set_visibility(GTK_ENTRY(wiz->sip_password), FALSE); + gtk_table_attach ( GTK_TABLE( table ), wiz->sip_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + + + current -> state = ACCOUNT_STATE_UNREGISTERED; + + return wiz->sip_account; +} + +GtkWidget* +build_iax_account_configuration( void ) +{ + GtkWidget* label; + GtkWidget* table; + + wiz->iax_account = create_vbox( GTK_ASSISTANT_PAGE_CONFIRM , "IAX2 account configuration" , "Fill the following information:"); + + table = gtk_table_new ( 4, 2 , FALSE/* homogeneous */); + gtk_table_set_row_spacings( GTK_TABLE(table), 10); + gtk_table_set_col_spacings( GTK_TABLE(table), 10); + gtk_box_pack_start( GTK_BOX(wiz->iax_account) , table , TRUE, TRUE, 0); + + // alias field + label = gtk_label_new_with_mnemonic ("_Alias"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->iax_alias = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->iax_alias); + gtk_table_attach ( GTK_TABLE( table ), wiz->iax_alias, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // server field + label = gtk_label_new_with_mnemonic ("_Host name"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->iax_server = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->iax_server); + gtk_table_attach ( GTK_TABLE( table ), wiz->iax_server, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // username field + label = gtk_label_new_with_mnemonic ("_User name"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->iax_username = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->iax_username); + gtk_table_attach ( GTK_TABLE( table ), wiz->iax_username, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // password field + label = gtk_label_new_with_mnemonic ("_Password"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->iax_password = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->iax_password); + gtk_entry_set_visibility(GTK_ENTRY(wiz->iax_password), FALSE); + gtk_table_attach ( GTK_TABLE( table ), wiz->iax_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + + current -> state = ACCOUNT_STATE_UNREGISTERED; + + g_signal_connect( G_OBJECT( wiz->assistant ) , "apply" , G_CALLBACK( apply_callback ), NULL); + + return wiz->iax_account; +} + +GtkWidget* +build_nat_settings( void ) +{ + GtkWidget* label; + GtkWidget* table; + + wiz->nat = create_vbox( GTK_ASSISTANT_PAGE_CONFIRM , "Network Address Translation" , "You should probably enable this if you are behind a firewall."); + + // table + table = gtk_table_new ( 2, 2 , FALSE/* homogeneous */); + gtk_table_set_row_spacings( GTK_TABLE(table), 10); + gtk_table_set_col_spacings( GTK_TABLE(table), 10); + gtk_box_pack_start( GTK_BOX(wiz->nat), table , TRUE, TRUE, 0); + + // enable + wiz->enable = gtk_check_button_new_with_mnemonic("_Enabled"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wiz->enable), FALSE); + gtk_table_attach ( GTK_TABLE( table ), wiz->enable, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_sensitive( GTK_WIDGET( wiz->enable ) , TRUE ); + g_signal_connect( G_OBJECT( GTK_TOGGLE_BUTTON(wiz->enable)) , "toggled" , G_CALLBACK( enable_stun ), NULL); + + // server address + label = gtk_label_new_with_mnemonic ("_Server address"); + gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); + wiz->addr = gtk_entry_new(); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), wiz->addr); + gtk_table_attach ( GTK_TABLE( table ), wiz->addr, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_sensitive( GTK_WIDGET( wiz->addr ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wiz->enable))); + + + g_signal_connect( G_OBJECT( wiz->assistant ) , "apply" , G_CALLBACK( apply_callback ), NULL); + + return wiz->nat; +} + +GtkWidget* +build_summary() +{ + GtkWidget *label; + wiz->summary = create_vbox( GTK_ASSISTANT_PAGE_SUMMARY , "Congratulations" , "You have been successfully registered"); + + label = gtk_label_new(" Answer the call!") ; + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_widget_set_size_request(GTK_WIDGET(label), 380, -1); + gtk_box_pack_start(GTK_BOX(wiz->summary), label, FALSE, TRUE, 0); + + return wiz->summary; +} + +void +update_account_parameters( int type ) +{ + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_alias)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE")); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888")); + + if( type == _SIP ){ + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP")); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); + g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username)))); + //g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_enable)))); + //g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_addr)))); + + } + else if( type == _IAX ){ + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX")); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username)))); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); + g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); + } + current -> state = ACCOUNT_STATE_UNREGISTERED; +} + +static gint +forward_page_func( gint current , gpointer data ) +{ + switch( current ){ + case 0: + return 1; + case 1: + if( account_type == _SIP) + return 2; + return 4; + case 2: + return 3; + case 3: + return 5; + case 4: + return 5; + } +} + +static GtkWidget* +create_vbox(GtkAssistantPageType type, const gchar *title, const gchar *section) +{ + GtkWidget *vbox; + GtkWidget *label; + GdkPixbuf *pixbuf; + gchar *str; + + vbox = gtk_vbox_new(FALSE, 6); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); + + gtk_assistant_append_page(GTK_ASSISTANT(wiz->assistant), vbox); + gtk_assistant_set_page_type(GTK_ASSISTANT(wiz->assistant), vbox, type); + str = g_strdup_printf(" %s", title); + gtk_assistant_set_page_title(GTK_ASSISTANT(wiz->assistant), vbox, str); + + g_free(str); + + gtk_assistant_set_page_complete(GTK_ASSISTANT(wiz->assistant), vbox, TRUE); + + wiz->logo = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL); + gtk_assistant_set_page_header_image(GTK_ASSISTANT(wiz->assistant),vbox, wiz->logo); + g_object_unref(wiz->logo); + + if (section) { + label = gtk_label_new(NULL); + str = g_strdup_printf("<b>%s</b>\n", section); + gtk_label_set_markup(GTK_LABEL(label), str); + g_free(str); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); + } + return vbox; +} + diff --git a/sflphone-gtk/src/druid.h b/sflphone-gtk/src/assistant.h similarity index 74% rename from sflphone-gtk/src/druid.h rename to sflphone-gtk/src/assistant.h index be9620a5335c397842388d8a658df88a3d170f70..7cf3520592ec5b9d6307fded2837f13ea43c4c90 100644 --- a/sflphone-gtk/src/druid.h +++ b/sflphone-gtk/src/assistant.h @@ -17,10 +17,9 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifndef __DRUID_H -#define __DRUID_H +#ifndef __ASSISTANT_H +#define __ASSISTANT_H -#include <libgnomeui/libgnomeui.h> #include <accountlist.h> #include <sflphone_const.h> @@ -30,9 +29,9 @@ struct _wizard { GtkWidget *window; - GtkWidget *druid; + GtkWidget *assistant; GdkPixbuf *logo; - GtkWidget *first_page; + GtkWidget *intro; /** Page 1 - Protocol selection */ GtkWidget *account_type; GtkWidget *protocols; @@ -40,8 +39,6 @@ struct _wizard GtkWidget *iax; /** Page 2 - SIP account creation */ GtkWidget *sip_account; - GtkWidget *sip_table; - GtkWidget *label; GtkWidget *sip_alias; GtkWidget *sip_server; GtkWidget *sip_username; @@ -51,7 +48,6 @@ struct _wizard GtkWidget *mailbox; /** Page 3 - IAX account creation */ GtkWidget *iax_account; - GtkWidget *iax_table; GtkWidget *iax_alias; GtkWidget *iax_server; GtkWidget *iax_username; @@ -59,10 +55,9 @@ struct _wizard /** Page 4 - Nat detection */ GtkWidget *nat; GtkWidget *enable; - GtkWidget *nat_table; GtkWidget *addr; /** Page 5 - Test registration */ - GtkWidget *page_end; + GtkWidget *summary; }; @@ -73,18 +68,26 @@ struct _wizard void set_account_state( account_state_t state ); void set_account_type( GtkWidget* widget , gpointer data ); +static void cancel_callback(gpointer data); +static void close_callback(gpointer data); +static void apply_callback( gpointer data ); void enable_stun( GtkWidget *widget ); -void goto_right_account( void ); -void goto_accounts_page( void ); -void goto_nat_page( void ); -void goto_end_page( void ); -void goto_sip_account_page( void ); -void quit_wizard( void ); -void update_account_parameters( int type ); -void build_nat_window( void ); -void build_sip_configuration_account( int type ); -void build_iax_configuration_account( int type ); + +/** + * Related-pages function + */ void build_wizard(); +GtkWidget* build_intro( void ); +GtkWidget* build_select_account( void ); +GtkWidget* build_sip_account_configuration( void ); +GtkWidget* build_nat_settings( void ); +GtkWidget* build_iax_account_configuration( void ); +GtkWidget* build_summary( void ); +/** + * Forward function + */ +static gint forward_page_func( gint current , gpointer data ); +static GtkWidget* create_vbox(GtkAssistantPageType type, const gchar *title, const gchar *section); #endif diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c index 58ac1108a4fc3ddb63740c9043566661439e54ae..33e9063a75e58898641d768a7c1b127bdc58a78b 100644 --- a/sflphone-gtk/src/dbus.c +++ b/sflphone-gtk/src/dbus.c @@ -30,7 +30,7 @@ #include <marshaller.h> #include <sliders.h> #include <statusicon.h> -#include <druid.h> +#include <assistant.h> #include <dbus.h> #include <actions.h> diff --git a/sflphone-gtk/src/druid.c b/sflphone-gtk/src/druid.c deleted file mode 100644 index 6c86232fb9ae5feb18713be139281180b86c6376..0000000000000000000000000000000000000000 --- a/sflphone-gtk/src/druid.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (C) 2008 Savoir-Faire Linux inc. - * Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com> - * - * 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 3 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., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include <druid.h> - -struct _wizard *wiz; -static int account_type; -account_t* current; - -void -build_sip_account_configuration( void ) -{ - // table - wiz->sip_table = gtk_table_new ( 4, 2 , FALSE/* homogeneous */); - gtk_table_set_row_spacings( GTK_TABLE(wiz->sip_table), 10); - gtk_table_set_col_spacings( GTK_TABLE(wiz->sip_table), 10); - gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->sip_account)->vbox),wiz->sip_table, TRUE, TRUE, 2); - - // alias field - wiz->label = gtk_label_new_with_mnemonic ("_Alias"); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->sip_alias = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_alias); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_alias, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - // server field - wiz->label = gtk_label_new_with_mnemonic ("_Host name"); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->sip_server = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_server); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_server, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - // username field - wiz->label = gtk_label_new_with_mnemonic ("_User name"); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->sip_username = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_username); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_username, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - // password field - wiz->label = gtk_label_new_with_mnemonic ("_Password"); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->sip_password = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->sip_password); - gtk_table_attach ( GTK_TABLE( wiz->sip_table ), wiz->sip_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_alias)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE")); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888")); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP")); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_server)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_password)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->sip_username)))); - - current -> state = ACCOUNT_STATE_UNREGISTERED; -} - -void -build_iax_account_configuration( void ) -{ - // table - wiz->iax_table = gtk_table_new ( 4, 2 , FALSE/* homogeneous */); - gtk_table_set_row_spacings( GTK_TABLE(wiz->iax_table), 10); - gtk_table_set_col_spacings( GTK_TABLE(wiz->iax_table), 10); - gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->iax_account)->vbox),wiz->iax_table, TRUE, TRUE, 2); - - // alias field - wiz->label = gtk_label_new_with_mnemonic ("_Alias"); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->iax_alias = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_alias); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_alias, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - // server field - wiz->label = gtk_label_new_with_mnemonic ("_Host name"); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->iax_server = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_server); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_server, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - // username field - wiz->label = gtk_label_new_with_mnemonic ("_User name"); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->iax_username = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_username); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_username, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - // password field - wiz->label = gtk_label_new_with_mnemonic ("_Password"); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->iax_password = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->iax_password); - gtk_table_attach ( GTK_TABLE( wiz->iax_table ), wiz->iax_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_alias)))); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE")); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888")); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX")); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username)))); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); - - current -> state = ACCOUNT_STATE_UNREGISTERED; -} -void -update_account_parameters( int type ) -{ - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_alias)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_ENABLED), g_strdup("TRUE")); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_MAILBOX), g_strdup("888")); - - if( type == _SIP ){ - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("SIP")); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username)))); - //g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_enable)))); - //g_hash_table_replace(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_addr)))); - - } - else if( type == _IAX ){ - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_TYPE), g_strdup("IAX")); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_USER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_username)))); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_HOST), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); - g_hash_table_replace(current->properties, g_strdup(ACCOUNT_IAX_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); - } - current -> state = ACCOUNT_STATE_UNREGISTERED; -} - -void -build_nat_window( void ) -{ - // table - wiz->nat_table = gtk_table_new ( 2, 2 , FALSE/* homogeneous */); - gtk_table_set_row_spacings( GTK_TABLE(wiz->nat_table), 10); - gtk_table_set_col_spacings( GTK_TABLE(wiz->nat_table), 10); - gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->nat)->vbox),wiz->nat_table, TRUE, TRUE, 2); - - // enable - wiz->enable = gtk_check_button_new_with_mnemonic("_Enabled"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wiz->enable), FALSE); - gtk_table_attach ( GTK_TABLE( wiz->nat_table ), wiz->enable, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_sensitive( GTK_WIDGET( wiz->enable ) , TRUE ); - g_signal_connect( G_OBJECT( GTK_TOGGLE_BUTTON(wiz->enable)) , "toggled" , G_CALLBACK( enable_stun ), NULL); - - // server address - wiz->label = gtk_label_new_with_mnemonic ("_Server address"); - gtk_table_attach ( GTK_TABLE( wiz->nat_table ), wiz->label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment(GTK_MISC (wiz->label), 0, 0.5); - wiz->addr = gtk_entry_new(); - gtk_label_set_mnemonic_widget (GTK_LABEL (wiz->label), wiz->addr); - gtk_table_attach ( GTK_TABLE( wiz->nat_table ), wiz->addr, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_sensitive( GTK_WIDGET( wiz->addr ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wiz->enable))); - - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_ENABLED), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->enable)))); - g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->addr)))); -} - -void -set_account_type( GtkWidget* widget , gpointer data ) -{ - - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget )) ){ - account_type = _SIP; - }else{ - account_type = _IAX ; - } -} - -void -enable_stun( GtkWidget* widget ) -{ - gtk_widget_set_sensitive( GTK_WIDGET( wiz->addr ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); -} - -void -goto_right_account( void ) -{ - if( account_type == _SIP ) - gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->sip_account)); - else - gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->iax_account)); -} - -void -goto_accounts_page( void ) -{ - gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->account_type)); -} - -void -goto_nat_page( void ) -{ - gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->nat)); -} - -void -goto_end_page( void ) -{ - gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->page_end)); -} - -void -goto_sip_account_page( void ) -{ - gnome_druid_set_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->sip_account)); -} - -void -quit_wizard( void ) -{ - return; -} - -void -send_registration( void ) -{ - dbus_add_account( current ); - //sleep(1); - switch( current->state ) - { - case ACCOUNT_STATE_REGISTERED: - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end )," Congratulations! \n\n You have been successfully registered. Answer the call! " ); - break; - case ACCOUNT_STATE_UNREGISTERED: - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end )," You are not registered! \n\n And we don't know why! " ); - break; - case ACCOUNT_STATE_ERROR_AUTH: - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end )," You are not registered! \n\n Authentification error. Please try again " ); - break; - case ACCOUNT_STATE_ERROR_HOST: - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end )," You are not registered! \n\n The host name you specified is unreachable. Please try again " ); - break; - case ACCOUNT_STATE_ERROR_NETWORK: - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end )," You are not registered! \n\n The network is unreachable. Check the plug " ); - break; - default: - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end )," Sorry we cannot status your case " ); - - } - goto_end_page(); -} - -void -build_wizard( void ) -{ - wiz = ( struct _wizard* )g_malloc( sizeof( struct _wizard)); - current = g_new0(account_t, 1); - current->properties = g_hash_table_new(NULL, g_str_equal); - current ->accountID = "test"; - wiz->logo = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL); - - wiz->druid = gnome_druid_new_with_window( "SFLphone" , NULL , TRUE , &wiz->window ); - wiz->first_page = gnome_druid_page_edge_new( GNOME_EDGE_START ); - gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->first_page ) ); - gnome_druid_page_edge_set_title( GNOME_DRUID_PAGE_EDGE( wiz->first_page ), "SFLphone 0.8-5"); - gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->first_page ), - " Welcome. \n\n\n This wizard will help you configure an account.\n\n\n Answer the call ! " ); - - /** Page 1 */ - wiz->account_type = gnome_druid_page_standard_new(); - gnome_druid_page_standard_set_title( GNOME_DRUID_PAGE_STANDARD( wiz->account_type), "Select a VoIP protocol"); - gnome_druid_page_standard_set_logo( GNOME_DRUID_PAGE_STANDARD( wiz->account_type) , wiz->logo ); - gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->account_type )); - wiz->protocols = gtk_vbox_new(FALSE , 10); - gtk_box_pack_start(GTK_BOX(GNOME_DRUID_PAGE_STANDARD(wiz->account_type)->vbox),wiz->protocols, TRUE, TRUE, 2); - wiz->sip = gtk_radio_button_new_with_label(NULL,"SIP (Session Initiation Protocol)"); - gtk_box_pack_start( GTK_BOX(wiz->protocols) , wiz->sip , TRUE, TRUE, 0); - wiz->iax = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(wiz->sip), "IAX2 (InterAsterix Exchange)"); - gtk_box_pack_start( GTK_BOX(wiz->protocols) , wiz->iax , TRUE, TRUE, 0); - g_signal_connect(G_OBJECT( wiz->sip ) , "clicked" , G_CALLBACK( set_account_type ) , NULL ); - - /** Page 2 */ - wiz->sip_account = gnome_druid_page_standard_new(); - gnome_druid_page_standard_set_title( GNOME_DRUID_PAGE_STANDARD( wiz->sip_account), "SIP account configuration"); - gnome_druid_page_standard_set_logo( GNOME_DRUID_PAGE_STANDARD( wiz->sip_account) , wiz->logo ); - gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->sip_account )); - build_sip_account_configuration( ); - - /** Page 3 */ - wiz->iax_account = gnome_druid_page_standard_new(); - gnome_druid_page_standard_set_title( GNOME_DRUID_PAGE_STANDARD( wiz->iax_account), "IAX2 account configuration"); - gnome_druid_page_standard_set_logo( GNOME_DRUID_PAGE_STANDARD( wiz->iax_account) , wiz->logo ); - gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->iax_account )); - build_iax_account_configuration( ); - - /** Page 4 */ - wiz->nat = gnome_druid_page_standard_new(); - gnome_druid_page_standard_set_title( GNOME_DRUID_PAGE_STANDARD( wiz->nat), "Nat detection"); - gnome_druid_page_standard_set_logo( GNOME_DRUID_PAGE_STANDARD( wiz->nat) , wiz->logo ); - gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->nat )); - build_nat_window(); - - /** Page 5 */ - wiz->page_end = gnome_druid_page_edge_new( GNOME_EDGE_FINISH ); - gnome_druid_page_edge_set_title( GNOME_DRUID_PAGE_EDGE( wiz->page_end), "Account Registration"); - gnome_druid_page_edge_set_logo( GNOME_DRUID_PAGE_EDGE( wiz->page_end) , wiz->logo ); - gnome_druid_append_page( GNOME_DRUID( wiz->druid ) , GNOME_DRUID_PAGE( wiz->page_end )); - //gnome_druid_page_edge_set_text( GNOME_DRUID_PAGE_EDGE( wiz->page_end ), -// " Congratulations! \n\n You have been successfully registered " ); - - /** Events */ - g_signal_connect( G_OBJECT( wiz->account_type ) , "next" , G_CALLBACK( goto_right_account ) , NULL ); - g_signal_connect( G_OBJECT( wiz->iax_account ) , "back" , G_CALLBACK( goto_accounts_page ), NULL ); - g_signal_connect( G_OBJECT( wiz->sip_account ) , "next" , G_CALLBACK( goto_nat_page ), NULL ); - g_signal_connect( G_OBJECT( wiz->iax_account ) , "next" , G_CALLBACK( goto_end_page ), NULL ); - g_signal_connect( G_OBJECT( wiz->nat ) , "back" , G_CALLBACK( goto_sip_account_page ), NULL ); - g_signal_connect( G_OBJECT( wiz->nat ) , "next" , G_CALLBACK( send_registration ) , NULL ); - g_signal_connect( G_OBJECT( wiz->page_end ) , "finish" , G_CALLBACK( quit_wizard ), NULL ); - - - gtk_widget_show_all(wiz->window); -} - -void -set_account_state( account_state_t state ) -{ - g_print("state %i\n" , state); - current->state = state; -} -