remove space in front of colon
[claws.git] / src / importldif.c
index e58b42b287e8960f7c8c1675a55c0a34fd0cabe8..242edd931838e76cc00773fcb3d7800205cd90df 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2001-2003 Match Grun
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2001-2015 Match Grun and the Claws Mail team
  *
  * 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
+ * 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,
@@ -13,8 +13,7 @@
  * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -23,6 +22,7 @@
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include "defs.h"
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <gdk/gdkkeysyms.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtktable.h>
-#include <gtk/gtkbutton.h>
+#include <gtk/gtk.h>
 
 #include "addrbook.h"
 #include "addressbook.h"
@@ -89,6 +84,7 @@ static struct _ImpLdif_Dlg {
        GtkWidget *labelRecords;
        GtkWidget *btnPrev;
        GtkWidget *btnNext;
+       GtkWidget *btnProceed;
        GtkWidget *btnCancel;
        GtkWidget *statusbar;
        gint      status_cid;
@@ -104,8 +100,7 @@ static AddressBookFile *_importedBook_;
 static AddressIndex *_imp_addressIndex_;
 static LdifFile *_ldifFile_ = NULL;
 
-static GdkPixmap *markxpm;
-static GdkBitmap *markxpmmask;
+static GdkPixbuf *markxpm;
 
 /**
  * Structure of error message table.
@@ -202,7 +197,7 @@ static void imp_ldif_message( void ) {
  * Update list with data for current row.
  * \param clist List to update.
  */
-static void imp_ldif_update_row( GtkCList *clist ) {
+static void imp_ldif_update_row( GtkCMCList *clist ) {
        Ldif_FieldRec *rec;
        gchar *text[ FIELDS_N_COLS ];
        gint row;
@@ -210,31 +205,34 @@ static void imp_ldif_update_row( GtkCList *clist ) {
        if( impldif_dlg.rowIndSelect < 0 ) return;
        row = impldif_dlg.rowIndSelect;
 
-       rec = gtk_clist_get_row_data( clist, row );
+       rec = gtk_cmclist_get_row_data( clist, row );
+       if (!rec)
+               return;
+
        text[ FIELD_COL_RESERVED ] = "";
        text[ FIELD_COL_SELECT   ] = "";
        text[ FIELD_COL_FIELD    ] = rec->tagName;
        text[ FIELD_COL_ATTRIB   ] = rec->userName;
 
-       gtk_clist_freeze( clist );
-       gtk_clist_remove( clist, row );
+       gtk_cmclist_freeze( clist );
+       gtk_cmclist_remove( clist, row );
        if( row == impldif_dlg.rowCount - 1 ) {
-               gtk_clist_append( clist, text );
+               gtk_cmclist_append( clist, text );
        }
        else {
-               gtk_clist_insert( clist, row, text );
+               gtk_cmclist_insert( clist, row, text );
        }
        if( rec->selected ) {
-               gtk_clist_set_pixmap(
-                       clist, row, FIELD_COL_SELECT, markxpm, markxpmmask );
+               gtk_cmclist_set_pixbuf(
+                       clist, row, FIELD_COL_SELECT, markxpm );
        }
        if( rec->reserved ) {
-               gtk_clist_set_pixmap(
-                       clist, row, FIELD_COL_RESERVED, markxpm, markxpmmask );
+               gtk_cmclist_set_pixbuf(
+                       clist, row, FIELD_COL_RESERVED, markxpm );
        }
 
-       gtk_clist_set_row_data( clist, row, rec );
-       gtk_clist_thaw( clist );
+       gtk_cmclist_set_row_data( clist, row, rec );
+       gtk_cmclist_thaw( clist );
 }
 
 /**
@@ -242,14 +240,14 @@ static void imp_ldif_update_row( GtkCList *clist ) {
  * \param ldf LDIF control data.
  */
 static void imp_ldif_load_fields( LdifFile *ldf ) {
-       GtkCList *clist = GTK_CLIST(impldif_dlg.clist_field);
+       GtkCMCList *clist = GTK_CMCLIST(impldif_dlg.clist_field);
        GList *node, *list;
        gchar *text[ FIELDS_N_COLS ];
 
        impldif_dlg.rowIndSelect = -1;
        impldif_dlg.rowCount = 0;
        if( ! ldf->accessFlag ) return;
-       gtk_clist_clear( clist );
+       gtk_cmclist_clear( clist );
        list = ldif_get_fieldlist( ldf );
        node = list;
        while( node ) {
@@ -260,15 +258,15 @@ static void imp_ldif_load_fields( LdifFile *ldf ) {
                text[ FIELD_COL_SELECT   ] = "";
                text[ FIELD_COL_FIELD    ] = rec->tagName;
                text[ FIELD_COL_ATTRIB   ] = rec->userName;
-               row = gtk_clist_append( clist, text );
-               gtk_clist_set_row_data( clist, row, rec );
+               row = gtk_cmclist_append( clist, text );
+               gtk_cmclist_set_row_data( clist, row, rec );
                if( rec->selected ) {
-                       gtk_clist_set_pixmap( clist, row,
-                               FIELD_COL_SELECT, markxpm, markxpmmask );
+                       gtk_cmclist_set_pixbuf( clist, row,
+                               FIELD_COL_SELECT, markxpm );
                }
                if( rec->reserved ) {
-                       gtk_clist_set_pixmap( clist, row,
-                               FIELD_COL_RESERVED, markxpm, markxpmmask );
+                       gtk_cmclist_set_pixbuf( clist, row,
+                               FIELD_COL_RESERVED, markxpm );
                }
                impldif_dlg.rowCount++;
                node = g_list_next( node );
@@ -279,7 +277,7 @@ static void imp_ldif_load_fields( LdifFile *ldf ) {
 }
 
 /**
- * Callback function when list iterm selected.
+ * Callback function when list item is selected.
  * \param clist List widget.
  * \param row   Row.
  * \param col   Column.
@@ -287,10 +285,10 @@ static void imp_ldif_load_fields( LdifFile *ldf ) {
  * \param data  User data.
  */
 static void imp_ldif_field_list_selected(
-               GtkCList *clist, gint row, gint column, GdkEvent *event,
+               GtkCMCList *clist, gint row, gint column, GdkEvent *event,
                gpointer data )
 {
-       Ldif_FieldRec *rec = gtk_clist_get_row_data( clist, row );
+       Ldif_FieldRec *rec = gtk_cmclist_get_row_data( clist, row );
 
        impldif_dlg.rowIndSelect = row;
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryAttrib), "" );
@@ -323,7 +321,7 @@ static void imp_ldif_field_list_selected(
  * \param data  Data.
  */
 static gboolean imp_ldif_field_list_toggle(
-               GtkCList *clist, GdkEventButton *event, gpointer data )
+               GtkCMCList *clist, GdkEventButton *event, gpointer data )
 {
        Ldif_FieldRec *rec;
        gboolean toggle = FALSE;
@@ -337,7 +335,8 @@ static gboolean imp_ldif_field_list_toggle(
                        gint y = event->y;
                        gint row, col;
 
-                       gtk_clist_get_selection_info( clist, x, y, &row, &col );
+                       if (!gtk_cmclist_get_selection_info( clist, x, y, &row, &col ))
+                               return FALSE;
                        if( col != FIELD_COL_SELECT ) return FALSE;
                        if( row > impldif_dlg.rowCount ) return FALSE;
 
@@ -353,7 +352,7 @@ static gboolean imp_ldif_field_list_toggle(
        }
        /* Toggle field selection */
        if( toggle ) {
-               rec = gtk_clist_get_row_data(
+               rec = gtk_cmclist_get_row_data(
                        clist, impldif_dlg.rowIndSelect );
                if( rec ) {
                        ldif_field_toggle( rec );
@@ -369,20 +368,20 @@ static gboolean imp_ldif_field_list_toggle(
  * \param data   User data.
  */
 static void imp_ldif_modify_pressed( GtkWidget *widget, gpointer data ) {
-       GtkCList *clist = GTK_CLIST(impldif_dlg.clist_field);
+       GtkCMCList *clist = GTK_CMCLIST(impldif_dlg.clist_field);
        Ldif_FieldRec *rec;
        gint row;
 
        if( impldif_dlg.rowIndSelect < 0 ) return;
        row = impldif_dlg.rowIndSelect;
-       rec = gtk_clist_get_row_data( clist, impldif_dlg.rowIndSelect );
+       rec = gtk_cmclist_get_row_data( clist, impldif_dlg.rowIndSelect );
 
        ldif_field_set_name( rec, gtk_editable_get_chars(
                GTK_EDITABLE(impldif_dlg.entryAttrib), 0, -1 ) );
        ldif_field_set_selected( rec, gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON( impldif_dlg.checkSelect) ) );
        imp_ldif_update_row( clist );
-       gtk_clist_select_row( clist, row, 0 );
+       gtk_cmclist_select_row( clist, row, 0 );
        gtk_label_set_text( GTK_LABEL(impldif_dlg.entryField), "" );
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryAttrib), "" );
        gtk_toggle_button_set_active(
@@ -434,10 +433,10 @@ static gboolean imp_ldif_file_move() {
        gboolean errFlag = FALSE;
 
        sFile = gtk_editable_get_chars( GTK_EDITABLE(impldif_dlg.entryFile), 0, -1 );
-       g_strchug( sFile ); g_strchomp( sFile );
+       g_strstrip( sFile );
 
        sName = gtk_editable_get_chars( GTK_EDITABLE(impldif_dlg.entryName), 0, -1 );
-       g_strchug( sName ); g_strchomp( sName );
+       g_strstrip( sName );
 
        g_free( impldif_dlg.nameBook );
        g_free( impldif_dlg.fileName );
@@ -447,14 +446,14 @@ static gboolean imp_ldif_file_move() {
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryFile), sFile );
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryName), sName );
 
-       if( *sFile == '\0'|| strlen( sFile ) < 1 ) {
+       if( *sFile == '\0' ) {
                sMsg = _( "Please select a file." );
                gtk_widget_grab_focus(impldif_dlg.entryFile);
                errFlag = TRUE;
        }
 
-       if( *sName == '\0'|| strlen( sName ) < 1 ) {
-               if( ! errFlag ) sMsg = _( "Address book name must be supplied." );
+       if( ! errFlag && *sName == '\0' ) {
+               sMsg = _( "Address book name must be supplied." );
                gtk_widget_grab_focus(impldif_dlg.entryName);
                errFlag = TRUE;
        }
@@ -469,7 +468,7 @@ static gboolean imp_ldif_file_move() {
                        retVal = TRUE;
                }
                else {
-                       sMsg = _( "Error reading LDIF fields." );
+                       sMsg = imp_ldif_err2string( _lutErrorsLDIF_, _ldifFile_->retVal );
                }
        }
        imp_ldif_status_show( sMsg );
@@ -490,7 +489,9 @@ static void imp_ldif_finish_show() {
        gtk_label_set_text( GTK_LABEL(impldif_dlg.labelFile), _ldifFile_->path );
        gtk_label_set_text( GTK_LABEL(impldif_dlg.labelRecords), itos( _ldifFile_->importCount ) );
        gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
-       gtk_widget_set_sensitive( impldif_dlg.btnNext, FALSE );
+       gtk_widget_hide( impldif_dlg.btnNext );
+       gtk_widget_show( impldif_dlg.btnProceed );
+       gtk_widget_set_sensitive( impldif_dlg.btnProceed, FALSE );
        if( _ldifFile_->retVal == MGU_SUCCESS ) {
                sMsg = _( "LDIF file imported successfully." );
        }
@@ -514,6 +515,8 @@ static void imp_ldif_prev( GtkWidget *widget ) {
                gtk_notebook_set_current_page(
                        GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
                gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
+               gtk_widget_hide( impldif_dlg.btnProceed );
+               gtk_widget_show( impldif_dlg.btnNext );
        }
        imp_ldif_message();
 }
@@ -533,9 +536,13 @@ static void imp_ldif_next( GtkWidget *widget ) {
                                GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_ATTRIBUTES );
                        imp_ldif_message();
                        gtk_widget_set_sensitive( impldif_dlg.btnPrev, TRUE );
+                       gtk_widget_hide( impldif_dlg.btnNext );
+                       gtk_widget_show( impldif_dlg.btnProceed );
+                       gtk_widget_set_sensitive( impldif_dlg.btnProceed, TRUE );
                }
                else {
                        gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
+                       _ldifFile_->dirtyFlag = TRUE;
                }
        }
        else if( pageNum == PAGE_ATTRIBUTES ) {
@@ -572,7 +579,7 @@ static void imp_ldif_cancel( GtkWidget *widget, gpointer data ) {
  */
 static void imp_ldif_file_select_create( AddressFileSelection *afs ) {
        gchar *file = filesel_select_file_open(_("Select LDIF File"), NULL);
-       
+
        if (file == NULL)
                afs->cancelled = TRUE;
        else {
@@ -607,7 +614,7 @@ static gint imp_ldif_delete_event( GtkWidget *widget, GdkEventAny *event, gpoint
  * \param data   User data.
  */
 static gboolean imp_ldif_key_pressed( GtkWidget *widget, GdkEventKey *event, gpointer data ) {
-       if (event && event->keyval == GDK_Escape) {
+       if (event && event->keyval == GDK_KEY_Escape) {
                imp_ldif_cancel( widget, data );
        }
        return FALSE;
@@ -625,7 +632,6 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
        GtkWidget *entryFile;
        GtkWidget *entryName;
        GtkWidget *btnFile;
-       GtkTooltips *toolTip;
        gint top;
 
        vbox = gtk_vbox_new(FALSE, 8);
@@ -657,11 +663,9 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
        gtk_table_attach(GTK_TABLE(table), entryName, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
 
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, entryName, _( 
+       CLAWS_SET_TIP(entryName, _( 
                "Specify the name for the address book that will " \
-               "be created from the LDIF file data." ),
-               NULL );
+               "be created from the LDIF file data." ));
 
        /* Second row */
        top = 1;
@@ -674,19 +678,15 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
        gtk_table_attach(GTK_TABLE(table), entryFile, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
 
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, entryFile,
-               _( "The full file specification of the LDIF file to import." ),
-               NULL );
+       CLAWS_SET_TIP(entryFile,
+               _( "The full file specification of the LDIF file to import." ));
 
        btnFile = gtkut_get_browse_file_btn(_("B_rowse"));
        gtk_table_attach(GTK_TABLE(table), btnFile, 2, 3, top, (top + 1),
                GTK_FILL, 0, 3, 0);
 
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, btnFile,
-               _( "Select the LDIF file to import." ),
-               NULL );
+       CLAWS_SET_TIP(btnFile,
+               _( "Select the LDIF file to import." ));
 
        gtk_widget_show_all(vbox);
 
@@ -696,6 +696,7 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
 
        impldif_dlg.entryFile = entryFile;
        impldif_dlg.entryName = entryName;
+
 }
 
 /**
@@ -716,7 +717,6 @@ static void imp_ldif_page_fields( gint pageNum, gchar *pageLbl ) {
        GtkWidget *checkSelect;
        GtkWidget *btnModify;
        GtkWidget *eventBox;
-       GtkTooltips *toolTip;
        gint top;
 
        gchar *titles[ FIELDS_N_COLS ];
@@ -748,24 +748,24 @@ static void imp_ldif_page_fields( gint pageNum, gchar *pageLbl ) {
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
 
-       clist_field = gtk_clist_new_with_titles( FIELDS_N_COLS, titles );
+       clist_field = gtk_cmclist_new_with_titles( FIELDS_N_COLS, titles );
        gtk_container_add( GTK_CONTAINER(clist_swin), clist_field );
-       gtk_clist_set_selection_mode(
-               GTK_CLIST(clist_field), GTK_SELECTION_BROWSE );
-       gtk_clist_set_column_width( GTK_CLIST(clist_field),
+       gtk_cmclist_set_selection_mode(
+               GTK_CMCLIST(clist_field), GTK_SELECTION_BROWSE );
+       gtk_cmclist_set_column_width( GTK_CMCLIST(clist_field),
                FIELD_COL_RESERVED, FIELDS_COL_WIDTH_RESERVED );
-       gtk_clist_set_column_width( GTK_CLIST(clist_field),
+       gtk_cmclist_set_column_width( GTK_CMCLIST(clist_field),
                FIELD_COL_SELECT, FIELDS_COL_WIDTH_SELECT );
-       gtk_clist_set_column_width( GTK_CLIST(clist_field),
+       gtk_cmclist_set_column_width( GTK_CMCLIST(clist_field),
                FIELD_COL_FIELD, FIELDS_COL_WIDTH_FIELD );
-       gtk_clist_set_column_width( GTK_CLIST(clist_field),
+       gtk_cmclist_set_column_width( GTK_CMCLIST(clist_field),
                FIELD_COL_ATTRIB, FIELDS_COL_WIDTH_ATTRIB );
 
        /* Remove focus capability for column headers */
        for( i = 0; i < FIELDS_N_COLS; i++ ) {
-               GTK_WIDGET_UNSET_FLAGS(
-                       GTK_CLIST(clist_field)->column[i].button,
-                       GTK_CAN_FOCUS);
+               gtkut_widget_set_can_focus(
+                       GTK_CMCLIST(clist_field)->column[i].button,
+                       FALSE);
        }
 
        /* Lower area - Edit area */
@@ -793,39 +793,17 @@ static void imp_ldif_page_fields( gint pageNum, gchar *pageLbl ) {
        /* Second row */
        ++top;
        label = gtk_label_new(_("Attribute"));
-       gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1),
-               GTK_FILL, 0, 0, 0);
-       gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-
-       entryAttrib = gtk_entry_new();
-       gtk_table_attach(GTK_TABLE(table), entryAttrib, 1, 3, top, (top + 1),
-               GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
-
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, entryAttrib,
-               _( "The LDIF field can be renamed to the User Attribute name." ),
-               NULL );
-
-       /* Next row */
-       ++top;
-       label = gtk_label_new( _( "???" ) );
-       /*
-       gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1),
-               GTK_FILL, 0, 0, 0);
-       */
-       gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
-
        /*
         * Use an event box to attach some help in the form of a tooltip.
         * Tried this for the clist but it looked bad.
         */
        eventBox = gtk_event_box_new();
        gtk_container_add( GTK_CONTAINER(eventBox), label );
+       gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
        gtk_table_attach(GTK_TABLE(table), eventBox, 0, 1, top, (top + 1),
                GTK_FILL, 0, 0, 0);
 
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, eventBox, _(
+       CLAWS_SET_TIP(eventBox, _(
                "Choose the LDIF field that will be renamed or selected " \
                "for import in the list above. Reserved fields (marked " \
                "with a tick in the \"R\" column), are automatically " \
@@ -834,27 +812,31 @@ static void imp_ldif_page_fields( gint pageNum, gchar *pageLbl ) {
                "with a tick. A single click anywhere in the row will " \
                "select that field for rename in the input area below " \
                "the list. A double click anywhere in the row will also " \
-               "select the field for import."
-               ), NULL );
+               "select the field for import."));
+
+       entryAttrib = gtk_entry_new();
+       gtk_table_attach(GTK_TABLE(table), entryAttrib, 1, 3, top, (top + 1),
+               GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
+
+       CLAWS_SET_TIP(entryAttrib,
+               _( "The LDIF field can be renamed to the User Attribute name." ));
 
+       /* Next row */
+       ++top;
 
        checkSelect = gtk_check_button_new_with_label( _( "Select for Import" ) );
        gtk_table_attach(GTK_TABLE(table), checkSelect, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
 
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, checkSelect,
-               _( "Select the LDIF field for import into the address book." ),
-               NULL );
+       CLAWS_SET_TIP(checkSelect,
+               _( "Select the LDIF field for import into the address book." ));
 
        btnModify = gtk_button_new_with_label( _(" Modify "));
        gtk_table_attach(GTK_TABLE(table), btnModify, 2, 3, top, (top + 1),
                GTK_FILL, 0, 3, 0);
 
-       toolTip = gtk_tooltips_new();
-       gtk_tooltips_set_tip( toolTip, btnModify,
-               _( "This button will update the list above with the data supplied." ),
-               NULL );
+       CLAWS_SET_TIP(btnModify,
+               _( "This button will update the list above with the data supplied." ));
 
        gtk_widget_show_all(vbox);
 
@@ -906,7 +888,7 @@ static void imp_ldif_page_finish( gint pageNum, gchar *pageLbl ) {
 
        /* First row */
        top = 0;
-       label = gtk_label_new( _( "Address Book :" ) );
+       label = gtk_label_new( _( "Address Book:" ) );
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
 
@@ -916,7 +898,7 @@ static void imp_ldif_page_finish( gint pageNum, gchar *pageLbl ) {
 
        /* Second row */
        top++;
-       label = gtk_label_new( _( "File Name :" ) );
+       label = gtk_label_new( _( "File Name:" ) );
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
 
@@ -926,7 +908,7 @@ static void imp_ldif_page_finish( gint pageNum, gchar *pageLbl ) {
 
        /* Third row */
        top++;
-       label = gtk_label_new( _("Records Imported :") );
+       label = gtk_label_new( _("Records Imported:") );
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
 
@@ -950,16 +932,16 @@ static void imp_ldif_dialog_create() {
        GtkWidget *hbbox;
        GtkWidget *btnPrev;
        GtkWidget *btnNext;
+       GtkWidget *btnProceed;
        GtkWidget *btnCancel;
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
-       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "importldif");
        gtk_widget_set_size_request(window, IMPORTLDIF_WIDTH, IMPORTLDIF_HEIGHT );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import LDIF file into Address Book") );
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
-       gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        g_signal_connect(G_OBJECT(window), "delete_event",
                         G_CALLBACK(imp_ldif_delete_event),
                         NULL );
@@ -990,9 +972,18 @@ static void imp_ldif_dialog_create() {
        gtk_box_pack_start(GTK_BOX(hsbox), statusbar, TRUE, TRUE, BORDER_WIDTH);
 
        /* Button panel */
-       gtkut_stock_button_set_create(&hbbox, &btnPrev, GTK_STOCK_GO_BACK,
-                                     &btnNext, GTK_STOCK_GO_FORWARD,
-                                     &btnCancel, GTK_STOCK_CANCEL);
+       gtkut_stock_button_set_create(&hbbox,
+                                     &btnCancel, GTK_STOCK_CANCEL, 
+                                     &btnPrev, GTK_STOCK_GO_BACK,
+                                     &btnNext, GTK_STOCK_GO_FORWARD);
+
+       btnProceed = gtk_button_new_with_mnemonic(_("Proceed"));
+       gtk_button_set_image(GTK_BUTTON(btnProceed),
+                       gtk_image_new_from_stock(GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON));
+       gtkut_widget_set_can_default(btnProceed, TRUE);
+       gtk_box_pack_start(GTK_BOX(hbbox), btnProceed, TRUE, TRUE, 0);
+       gtk_widget_hide(btnProceed);
+
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_container_set_border_width(GTK_CONTAINER(hbbox), 2);
        gtk_widget_grab_default(btnNext);
@@ -1002,6 +993,8 @@ static void imp_ldif_dialog_create() {
                         G_CALLBACK(imp_ldif_prev), NULL);
        g_signal_connect(G_OBJECT(btnNext), "clicked",
                         G_CALLBACK(imp_ldif_next), NULL);
+       g_signal_connect(G_OBJECT(btnProceed), "clicked",
+                        G_CALLBACK(imp_ldif_next), NULL);
        g_signal_connect(G_OBJECT(btnCancel), "clicked",
                         G_CALLBACK(imp_ldif_cancel), NULL);
 
@@ -1011,6 +1004,7 @@ static void imp_ldif_dialog_create() {
        impldif_dlg.notebook   = notebook;
        impldif_dlg.btnPrev    = btnPrev;
        impldif_dlg.btnNext    = btnNext;
+       impldif_dlg.btnProceed = btnProceed;
        impldif_dlg.btnCancel  = btnCancel;
        impldif_dlg.statusbar  = statusbar;
        impldif_dlg.status_cid = gtk_statusbar_get_context_id(
@@ -1041,25 +1035,28 @@ AddressBookFile *addressbook_imp_ldif( AddressIndex *addrIndex ) {
 
        if( ! impldif_dlg.window )
                imp_ldif_create();
-               
+
        gtk_button_set_label(GTK_BUTTON(impldif_dlg.btnCancel),
                             GTK_STOCK_CANCEL);
+       gtk_widget_hide(impldif_dlg.btnProceed);
+       gtk_widget_show(impldif_dlg.btnNext);
 
        impldif_dlg.cancelled = FALSE;
        gtk_widget_show(impldif_dlg.window);
        manage_window_set_transient(GTK_WINDOW(impldif_dlg.window));
        gtk_widget_grab_default(impldif_dlg.btnNext);
+       gtk_window_set_modal(GTK_WINDOW(impldif_dlg.window), TRUE);
 
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryName), IMPORTLDIF_GUESS_NAME );
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryFile), "" );
        gtk_label_set_text( GTK_LABEL(impldif_dlg.entryField), "" );
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryAttrib), "" );
-       gtk_clist_clear( GTK_CLIST(impldif_dlg.clist_field) );
+       gtk_cmclist_clear( GTK_CMCLIST(impldif_dlg.clist_field) );
        gtk_notebook_set_current_page( GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
        gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
        gtk_widget_set_sensitive( impldif_dlg.btnNext, TRUE );
-       stock_pixmap_gdk( impldif_dlg.window, STOCK_PIXMAP_MARK,
-                         &markxpm, &markxpmmask );
+       stock_pixbuf_gdk( impldif_dlg.window, STOCK_PIXMAP_MARK,
+                         &markxpm );
        imp_ldif_message();
        gtk_widget_grab_focus(impldif_dlg.entryFile);
 
@@ -1073,6 +1070,7 @@ AddressBookFile *addressbook_imp_ldif( AddressIndex *addrIndex ) {
        _ldifFile_ = ldif_create();
        gtk_main();
        gtk_widget_hide(impldif_dlg.window);
+       gtk_window_set_modal(GTK_WINDOW(impldif_dlg.window), FALSE);
        ldif_free( _ldifFile_ );
        _ldifFile_ = NULL;
        _imp_addressIndex_ = NULL;