From: Paul Mangan Date: Thu, 24 Nov 2005 12:37:29 +0000 (+0000) Subject: 2005-11-24 [paul] 1.9.100cvs31 X-Git-Tag: rel_2_0_0~190 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=b36b10febd08330f654b60c752593ba1b90bcae3 2005-11-24 [paul] 1.9.100cvs31 * manual/addrbook.xml * manual/starting.xml written by Colin, proofread, edited, adapted by me * manual/advanced.xml add some Actions examples * src/importldif.c use a Save button instead of a Close button * src/wizard.c indicate mandatory fields fix page display Thanks to Colin --- diff --git a/ChangeLog b/ChangeLog index e55cae153..4b4ab37fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2005-11-24 [paul] 1.9.100cvs31 + + * manual/addrbook.xml + * manual/starting.xml + written by Colin, proofread, edited, adapted by me + * manual/advanced.xml + add some Actions examples + * src/importldif.c + use a Save button instead of a Close button + * src/wizard.c + indicate mandatory fields + fix page display + Thanks to Colin + 2005-11-23 [colin] 1.9.100cvs30 * src/addressbook.c diff --git a/PATCHSETS b/PATCHSETS index 619f695b4..8cba6639c 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -1014,3 +1014,4 @@ ( cvs diff -u -r 1.83.2.51 -r 1.83.2.52 src/mimeview.c; ) > 1.9.100cvs28.patchset ( cvs diff -u -r 1.1.2.4 -r 1.1.2.5 manual/advanced.xml; ) > 1.9.100cvs29.patchset ( cvs diff -u -r 1.60.2.39 -r 1.60.2.40 src/addressbook.c; cvs diff -u -r 1.28.2.12 -r 1.28.2.13 src/addrindex.c; cvs diff -u -r 1.2.4.9 -r 1.2.4.10 src/browseldap.c; cvs diff -u -r 1.1.2.24 -r 1.1.2.25 src/wizard.c; ) > 1.9.100cvs30.patchset +( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 manual/addrbook.xml; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 manual/advanced.xml; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 manual/starting.xml; cvs diff -u -r 1.14.2.7 -r 1.14.2.8 src/importldif.c; cvs diff -u -r 1.1.2.25 -r 1.1.2.26 src/wizard.c; ) > 1.9.100cvs31.patchset diff --git a/configure.ac b/configure.ac index f32db35c2..936c1efb1 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=9 MICRO_VERSION=100 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=30 +EXTRA_VERSION=31 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/manual/addrbook.xml b/manual/addrbook.xml index b6e98f905..840691acc 100644 --- a/manual/addrbook.xml +++ b/manual/addrbook.xml @@ -5,12 +5,21 @@
Basic management + The address book is accessible via the Tools/Address book menu. It is arranged in different sections: the Address Book and its subsections, which contain the contacts that you added locally; the vCard sections, which contain imported vCards; and, if support for them was built into Sylpheed-Claws, the LDAP and jPilot sections, containing contacts from your LDAP servers or handheld devices. + + In the Address Book section, you can create multiple address books, each one being able to contain addresses and/or folders. This can help you organizing your contacts per category. In addition to this, you can create groups of addresses, which can then be used from the composition window to send mails to multiple people at once. + The menus in the address book's window allow you to do all of this. For example, you can create a Family folder inside your Personal Addresses address book, using the Book/New folder menu when Personal Addresses is selected, or by right-clicking on it. In the same way, you can add contacts to an address book or folder by using the Address menu, or by right-clicking an item in the list in the right-hand part of the window. + When adding a contact, a new window will popup, where you'll be able to specify the details of the contact in the first tab (Display Name, First Name, ...), and a list of email addresses in the second tab. + + A simpler way to save your contacts to your address book is to save them when reading one of their emails, using the Tools/Add sender to address book menu, or by right-clicking on an email address in the message view.
Exporting and importing addresses + Sylpheed-Claws can import address books easily from the majority of email programs. From the Tools menu in the address book, you will be able to import Pine or Mutt address books. As these formats are not so widespread, you can also import LDIF files. LDIF is a widely-used format, so most other email programs can export their address book to this format. + Importing an LDIF file is done via Tools/Import LDIF file and is a three-step operation: select the file to import and an address book name, check the fields you want to import if the defaults do not please you, then use the Save button.
@@ -20,18 +29,22 @@
Using LDAP servers + LDAP servers are used to share address books across networks. They are often available in companies. Enabling an LDAP server in Sylpheed-Claws is quite straight forward. Choose Book/New LDAP server in the Book menu, then choose a name for this LDAP server. Enter the hostname of the server (e.g. ldap.sylpheed.org), its port, if necessary (the standard port is 389). You can then either fill in the Search Base yourself if you know what to use, or click on Check Server to have Sylpheed-Claws attempt to guess it automatically. If your server requires authentication, you can set it in the Extended tab. + When you close this window by clicking Ok, the server appears in the address book's sources list on the left-hand side. When selecting the server, you will see an empty list of contacts at the right, which can be surprising at first. This is to avoid doing full searches on the server without you explicitly asking for it. You can now search for names using the Lookup form at the bottom of this list. If you want a full listing, just search for *.
- Integration with JPilot + Integration with jPilot + Sylpheed-Claws can use addresses stored on your handheld device.
- VCard support + vCard support + Sylpheed-Claws can import vCards of your contacts by using Book/New vCard.
diff --git a/manual/advanced.xml b/manual/advanced.xml index 0706d12fe..43c977fdd 100644 --- a/manual/advanced.xml +++ b/manual/advanced.xml @@ -6,6 +6,36 @@ Actions allow you to use all the power of the Unix command-line with your emails. You can define various commands, taking parameters such as the current email file, a list of emails, the currently selected text, and so on. In this way, you'll be able to perform various tasks such as editing a raw mail in your text editor, "hide" what you mean using ROT-13, apply patches contained in emails directly, and so on. The only limit is your imagination. You can configure Actions via the Tools menu. +
+ Simple <quote>Open With...</quote> + + Menu name: Open with/kate Command Line: kate%p + Opens the file of the selected decoded MIME part (%p) with the kate text editor. + + + + + Spam management using <ulink url="http://bogofilter.sourceforge.net/">Bogofilter</ulink> + + Menu name: Bogofilter/Mark as Ham Command Line: bogofilter -n -v -B "%f" + Marks the currently selected mails (%f) as 'not spam' using Bogofilter. + + + Menu name: Bogofilter/Mark as Spam Command Line: bogofilter -s -v -B "%f" + Marks the currently selected mails (%f) as 'spam' using Bogofilter. + + + + + Search google using an external script + + Menu name: Search/Google Command Line: |/path/to/google_search.pl + Searches google for the currently selected text (|) using the external script google_search.pl. + + + + +
Templates diff --git a/manual/starting.xml b/manual/starting.xml index 22f54e130..33619e787 100644 --- a/manual/starting.xml +++ b/manual/starting.xml @@ -5,32 +5,66 @@
The initial wizard + The first time that you start Sylpheed-Claws, you will be asked a few questions in order to set up an account. These questions are easy to answer and grouped in several short pages. + + First you will be asked to fill in your name, (usually guessed from the operating system), your email address, and the name of your organisation, (optional). + + On the next page you will enter the address of your SMTP server, (sometimes referred to as Outgoing server). + The following page will allow you to enter details of how to retrieve your mail. The format of the page will be determined by the Server type: + +
+ POP3 + If you choose POP3, you will need to enter the server address, username, and password. The password is optional, if you don't provide it here then you will be prompted for it each time it is needed. + + + IMAP + If you choose IMAP, you will need to enter the server address, username, password, and IMAP server directory. The password is optional, if you don't provide it here then you will be prompted for it each time it is needed. The IMAP server directory is also optional, often it is not needed and can be left empty. + + + Local mbox file + If you choose Local mbox file, you will need to enter the location of your local mailbox file. + + +
+If you chose either POP3 or Local mbox file, the next page will ask you where to save your mail on disk. The default, Mail, is usually ok and will save your mails in a directory called Mail in your home directory. + If Sylpheed-Claws is built with support for OpenSSL, you will next see the Security page, here you will be able to choose to use SSL encryption to send and receive your emails. Most ISPs do not enable this, but many companies do; if you're unsure about it, you can leave them unselected. + + You can now click on the Save button, and start enjoying Sylpheed-Claws.
Getting mail + Retrieving your email can be done from the toolbar button named Get mail or from the Receive submenu of the Message menu. + + If you want Sylpheed-Claws to check your mail automatically at regular intervals, you can ask it to do so from the Mail handling: Receive preference page which you'll find in the Configuration/Preferences... menu. Just click the Auto-check new mail every [...] minutes checkbox, and set the interval to your liking.
- Reading mail + Reading your mail + Once you have retrieved your emails, the Inbox folder will contain them. The total number of emails in a folder is shown at the right of the folder's name, along with the number of unread and new emails in it. To see them, click on the folder row in the folder list, and the list of emails in that folder will be displayed in the message list pane. You can then select an email using the mouse, or by using the Up and Down keys to navigate through the list, and the Space bar to display and scroll emails. You can use other keys to navigate through emails, like P and N (previous and next).
-
- Writting first mail +
+ Writing your first mail + When clicking on the Compose button of the toolbar, a composition window will open. This window contains different fields which you should be able to recognise easily: the From field can be used to select which account you want to use with this email, in the case that you have multiple accounts; the To field is for recipient of the email. When you fill it up, a second To field will appear, so that you can send the email to multiple recipients. You can also change the To field to a Cc field or other types of fields, by using its dropdown menu. After that, you will be able to set the subject of your email, then type its body. + + A little note about an email's subject: Sylpheed-Claws will ask you for confirmation if you attempt to send an email with an empty subject. This is because it can be annoying for the recipient to receive emails with no subjects, as it doesn't help him to quickly handle his emails.
- Send first mail + Sending the first mail + When you have finished writing your first email, you can either click the Send button to send your email immediately, or use the Send later button. When using Send, the composition window will close itself when the mail has been sent; it will stay open if there is an error. When using Send later, the composition window will immediately close, and your email will be stored in your Queue folder. It will then be sent when you click the Send button in the main window's toolbar. + + The emails you send are saved in the Sent folder of your mailbox, so that you can remember what you wrote to whom, or use an already sent email as a template to write another one.
-
diff --git a/src/importldif.c b/src/importldif.c index e58b42b28..9570218ee 100644 --- a/src/importldif.c +++ b/src/importldif.c @@ -544,7 +544,7 @@ static void imp_ldif_next( GtkWidget *widget ) { gtk_notebook_set_current_page( GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FINISH ); gtk_button_set_label(GTK_BUTTON(impldif_dlg.btnCancel), - GTK_STOCK_CLOSE); + GTK_STOCK_SAVE); imp_ldif_finish_show(); } } diff --git a/src/wizard.c b/src/wizard.c index 89d119863..ee76d7648 100644 --- a/src/wizard.c +++ b/src/wizard.c @@ -55,6 +55,7 @@ #include "stock_pixmap.h" #include "setup.h" #include "folder.h" +#include "alertpanel.h" #ifdef USE_OPENSSL #include "ssl.h" #endif @@ -68,6 +69,14 @@ typedef enum FINISHED } PageNavigation; +int WELCOME_PAGE = -1; +int USER_PAGE = -1; +int SMTP_PAGE = -1; +int RECV_PAGE = -1; +int MAILBOX_PAGE = -1; +int SSL_PAGE = -1; +int DONE_PAGE = -1; + typedef struct { GtkWidget *window; @@ -239,6 +248,16 @@ static gboolean wizard_write_config(WizardWindow *wizard) (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID)); + if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4 && + !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name)))) { + alertpanel_error(_("Please enter the mailbox name.")); + g_free(prefs_account); + gtk_notebook_set_current_page ( + GTK_NOTEBOOK(wizard->notebook), + MAILBOX_PAGE); + return FALSE; + } + if (!mailbox_ok) { if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4) { mailbox_ok = setup_write_mailbox_path(wizard->mainwin, @@ -253,48 +272,48 @@ static gboolean wizard_write_config(WizardWindow *wizard) g_free(prefs_account); gtk_notebook_set_current_page ( GTK_NOTEBOOK(wizard->notebook), - 4); + MAILBOX_PAGE); return FALSE; } if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->full_name))) || !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->email)))) { - alertpanel_error(_("Please fill in your name and email address.")); + alertpanel_error(_("Please enter your name and email address.")); g_free(prefs_account); gtk_notebook_set_current_page ( GTK_NOTEBOOK(wizard->notebook), - 1); + USER_PAGE); return FALSE; } if (prefs_account->protocol != A_LOCAL) { if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_username))) || !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)))) { - alertpanel_error(_("Please fill in your reception server " + alertpanel_error(_("Please enter your receiving server " "and username.")); g_free(prefs_account); gtk_notebook_set_current_page ( GTK_NOTEBOOK(wizard->notebook), - 3); + RECV_PAGE); return FALSE; } } else { if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)))) { - alertpanel_error(_("Please fill in your username.")); + alertpanel_error(_("Please enter your username.")); g_free(prefs_account); gtk_notebook_set_current_page ( GTK_NOTEBOOK(wizard->notebook), - 3); + RECV_PAGE); return FALSE; } } if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_server)))) { - alertpanel_error(_("Please fill in your SMTP server.")); + alertpanel_error(_("Please enter your SMTP server.")); g_free(prefs_account); gtk_notebook_set_current_page ( GTK_NOTEBOOK(wizard->notebook), - 2); + SMTP_PAGE); return FALSE; } @@ -395,10 +414,11 @@ static GtkWidget* create_page (WizardWindow *wizard, const char * title) return vbox; } -#define GTK_TABLE_ADD_ROW_AT(table,text,entry,i) { \ +#define GTK_TABLE_ADD_ROW_AT(table,text,entry,i) { \ GtkWidget *label = gtk_label_new(text); \ gtk_table_attach(GTK_TABLE(table), label, \ 0,1,i,i+1, GTK_EXPAND|GTK_FILL, 0, 0, 0); \ + gtk_label_set_use_markup(GTK_LABEL(label), TRUE); \ if (GTK_IS_MISC(label)) \ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); \ gtk_table_attach(GTK_TABLE(table), entry, \ @@ -498,18 +518,18 @@ static GtkWidget* user_page (WizardWindow * wizard) wizard->full_name = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(wizard->full_name), g_get_real_name()); - GTK_TABLE_ADD_ROW_AT(table, _("Your name:"), + GTK_TABLE_ADD_ROW_AT(table, _("Your name:"), wizard->full_name, i); i++; wizard->email = gtk_entry_new(); text = get_default_email_addr(); gtk_entry_set_text(GTK_ENTRY(wizard->email), text); g_free(text); - GTK_TABLE_ADD_ROW_AT(table, _("Your email address:"), + GTK_TABLE_ADD_ROW_AT(table, _("Your email address:"), wizard->email, i); i++; wizard->organization = gtk_entry_new(); - GTK_TABLE_ADD_ROW_AT(table, _("Your organization:"), + GTK_TABLE_ADD_ROW_AT(table, _("Your organization:"), wizard->organization, i); i++; g_signal_connect(G_OBJECT(wizard->email), "changed", @@ -528,7 +548,7 @@ static GtkWidget* mailbox_page (WizardWindow * wizard) wizard->mailbox_name = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(wizard->mailbox_name), "Mail"); - GTK_TABLE_ADD_ROW_AT(table, _("Mailbox name:"), + GTK_TABLE_ADD_ROW_AT(table, _("Mailbox name:"), wizard->mailbox_name, i); i++; return table; @@ -547,7 +567,7 @@ static GtkWidget* smtp_page (WizardWindow * wizard) text = get_default_server(wizard, "smtp"); gtk_entry_set_text(GTK_ENTRY(wizard->smtp_server), text); g_free(text); - GTK_TABLE_ADD_ROW_AT(table, _("SMTP server address:"), + GTK_TABLE_ADD_ROW_AT(table, _("SMTP server address:"), wizard->smtp_server, i); i++; return table; } @@ -569,7 +589,8 @@ static void wizard_protocol_changed(GtkMenuItem *menuitem, gpointer data) gtk_widget_show(wizard->recv_password); gtk_widget_show(wizard->recv_username_label); gtk_widget_show(wizard->recv_password_label); - gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("Server address:")); + gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("Server address:")); + gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE); g_free(text); } else if (protocol == A_IMAP4) { text = get_default_server(wizard, "imap"); @@ -580,13 +601,15 @@ static void wizard_protocol_changed(GtkMenuItem *menuitem, gpointer data) gtk_widget_show(wizard->recv_password); gtk_widget_show(wizard->recv_username_label); gtk_widget_show(wizard->recv_password_label); - gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("Server address:")); + gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("Server address:")); + gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE); g_free(text); } else if (protocol == A_LOCAL) { gchar *mbox = g_strdup_printf("/var/mail/%s", g_get_user_name()); gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), mbox); g_free(mbox); - gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("Local mailbox:")); + gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("Local mailbox:")); + gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE); gtk_widget_hide(wizard->recv_imap_label); gtk_widget_hide(wizard->recv_imap_subdir); gtk_widget_hide(wizard->recv_username); @@ -623,7 +646,7 @@ static GtkWidget* recv_page (WizardWindow * wizard) wizard); gtk_option_menu_set_menu (GTK_OPTION_MENU (wizard->recv_type), menu); - GTK_TABLE_ADD_ROW_AT(table, _("Server type:"), + GTK_TABLE_ADD_ROW_AT(table, _("Server type:"), wizard->recv_type, i); i++; wizard->recv_server = gtk_entry_new(); @@ -631,7 +654,8 @@ static GtkWidget* recv_page (WizardWindow * wizard) gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text); g_free(text); - wizard->recv_label = gtk_label_new(_("Server address:")); + wizard->recv_label = gtk_label_new(_("Server address:")); + gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE); gtk_table_attach(GTK_TABLE(table), wizard->recv_label, 0,1,i,i+1, GTK_EXPAND|GTK_FILL, 0, 0, 0); if (GTK_IS_MISC(wizard->recv_label)) @@ -641,7 +665,8 @@ static GtkWidget* recv_page (WizardWindow * wizard) i++; wizard->recv_username = gtk_entry_new(); - wizard->recv_username_label = gtk_label_new(_("Username:")); + wizard->recv_username_label = gtk_label_new(_("Username:")); + gtk_label_set_use_markup(GTK_LABEL(wizard->recv_username_label), TRUE); gtk_table_attach(GTK_TABLE(table), wizard->recv_username_label, 0,1,i,i+1, GTK_EXPAND|GTK_FILL, 0, 0, 0); if (GTK_IS_MISC(wizard->recv_username_label)) @@ -745,7 +770,7 @@ wizard_response_cb (GtkDialog * dialog, int response, gpointer data) { if (current_page > 0) { current_page--; - if (current_page == 4 && skip_mailbox_page) { + if (current_page == MAILBOX_PAGE && skip_mailbox_page) { /* mailbox */ current_page--; } @@ -758,7 +783,7 @@ wizard_response_cb (GtkDialog * dialog, int response, gpointer data) { if (current_page < (num_pages-1)) { current_page++; - if (current_page == 4 && skip_mailbox_page) { + if (current_page == MAILBOX_PAGE && skip_mailbox_page) { /* mailbox */ current_page++; } @@ -787,14 +812,21 @@ static gint wizard_close_cb(GtkWidget *widget, GdkEventAny *event, return FALSE; } +#define PACK_WARNING(text) { \ + label = gtk_label_new(text); \ + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); \ + gtk_box_pack_end(GTK_BOX(widget), label, FALSE, FALSE, 0); \ +} + gboolean run_wizard(MainWindow *mainwin, gboolean create_mailbox) { WizardWindow *wizard = g_new0(WizardWindow, 1); GtkWidget *page; GtkWidget *widget; + GtkWidget *label; gchar *text; GSList *cur; gboolean result; - + gint i = 0; wizard->mainwin = mainwin; wizard->create_mailbox = create_mailbox; @@ -831,6 +863,7 @@ gboolean run_wizard(MainWindow *mainwin, gboolean create_mailbox) { wizard->pages = NULL; /*welcome page: 0 */ + WELCOME_PAGE = i; page = create_page(wizard, _("Welcome to Sylpheed-Claws")); wizard->pages = g_slist_append(wizard->pages, page); @@ -850,34 +883,56 @@ gboolean run_wizard(MainWindow *mainwin, gboolean create_mailbox) { g_free(text); /* user page: 1 */ + i++; + USER_PAGE = i; widget = create_page (wizard, _("About You")); gtk_box_pack_start (GTK_BOX(widget), user_page(wizard), FALSE, FALSE, 0); + PACK_WARNING(_("Bold fields must be completed")); + wizard->pages = g_slist_append(wizard->pages, widget); /*smtp page: 2 */ + i++; + SMTP_PAGE = i; widget = create_page (wizard, _("Sending mail")); gtk_box_pack_start (GTK_BOX(widget), smtp_page(wizard), FALSE, FALSE, 0); + PACK_WARNING(_("Bold fields must be completed")); + wizard->pages = g_slist_append(wizard->pages, widget); /* recv+auth page: 3 */ + i++; + RECV_PAGE = i; widget = create_page (wizard, _("Receiving mail")); gtk_box_pack_start (GTK_BOX(widget), recv_page(wizard), FALSE, FALSE, 0); + PACK_WARNING(_("Bold fields must be completed")); + wizard->pages = g_slist_append(wizard->pages, widget); /* mailbox page: 4 */ if (create_mailbox) { + i++; + MAILBOX_PAGE = i; widget = create_page (wizard, _("Saving mail on disk")); gtk_box_pack_start (GTK_BOX(widget), mailbox_page(wizard), FALSE, FALSE, 0); + PACK_WARNING(_("Bold fields must be completed")); + wizard->pages = g_slist_append(wizard->pages, widget); } /* ssl page: 5 */ #ifdef USE_OPENSSL + i++; + SSL_PAGE = i; widget = create_page (wizard, _("Security")); gtk_box_pack_start (GTK_BOX(widget), ssl_page(wizard), FALSE, FALSE, 0); + PACK_WARNING(_("Bold fields must be completed")); + wizard->pages = g_slist_append(wizard->pages, widget); #endif /* done page: 6 */ + i++; + DONE_PAGE = i; page = create_page(wizard, _("Configuration finished")); wizard->pages = g_slist_append(wizard->pages, page);