diff --git a/src/gnome/dialog-progress.c b/src/gnome/dialog-progress.c index 434996d6c7..b3e29f9241 100644 --- a/src/gnome/dialog-progress.c +++ b/src/gnome/dialog-progress.c @@ -46,6 +46,7 @@ struct _GNCProgressDialog SCM cancel_scm_func; + gboolean use_ok_button; gboolean closed; gboolean finished; gboolean destroyed; @@ -184,6 +185,9 @@ gnc_progress_dialog_create(GtkWidget * parent, GNCProgressDialog *progress) gtk_signal_connect(GTK_OBJECT(progress->ok_button), "clicked", GTK_SIGNAL_FUNC(ok_cb), progress); + if (!progress->use_ok_button) + gtk_widget_hide (progress->ok_button); + progress->cancel_button = gtk_object_get_data(tdo, "cancel_button"); gtk_signal_connect(GTK_OBJECT(progress->cancel_button), "clicked", @@ -201,12 +205,14 @@ gnc_progress_dialog_create(GtkWidget * parent, GNCProgressDialog *progress) } GNCProgressDialog * -gnc_progress_dialog_new (GtkWidget * parent) +gnc_progress_dialog_new (GtkWidget * parent, gboolean use_ok_button) { GNCProgressDialog *progress; progress = g_new0(GNCProgressDialog, 1); + progress->use_ok_button = use_ok_button; + gnc_progress_dialog_create(parent, progress); gtk_widget_show(progress->dialog); @@ -322,6 +328,12 @@ gnc_progress_dialog_finish (GNCProgressDialog *progress) if (progress == NULL) return; + if (!progress->use_ok_button) + { + gtk_widget_hide (progress->dialog); + progress->closed = TRUE; + } + gtk_progress_set_percentage (GTK_PROGRESS (progress->progress_bar), 1.0); gtk_widget_set_sensitive (progress->ok_button, TRUE); diff --git a/src/gnome/dialog-progress.h b/src/gnome/dialog-progress.h index 73c646cd44..33422b1ccc 100644 --- a/src/gnome/dialog-progress.h +++ b/src/gnome/dialog-progress.h @@ -34,7 +34,8 @@ typedef gboolean (*GNCProgressCancelFunc) (gpointer user_data); /* Create and return a dialog for displaying the progress of * an activity. Useful for long-running operations. */ -GNCProgressDialog * gnc_progress_dialog_new (GtkWidget *parent); +GNCProgressDialog * gnc_progress_dialog_new (GtkWidget *parent, + gboolean use_ok_button); /* Set the title of the progress dialog. */ void gnc_progress_dialog_set_title (GNCProgressDialog *progress, diff --git a/src/scm/extensions.scm b/src/scm/extensions.scm index 21565f062a..e7dd5b561d 100644 --- a/src/scm/extensions.scm +++ b/src/scm/extensions.scm @@ -68,13 +68,13 @@ (list "Extensions" "") (lambda () (gnc:main-win-account-group-write win)))) - (define export-item + (define progress-item (gnc:make-menu-item "Test progress dialog" "Test progress dialog" (list "Extensions" "") (lambda () (let ((dialog (gnc:progress-dialog-new - (gnc:get-ui-data))) + (gnc:get-ui-data) #f)) (canceled #f)) (gnc:progress-dialog-set-cancel-scm-func dialog @@ -104,6 +104,7 @@ (gnc:add-extension menu) (gnc:add-extension export-item) + (gnc:add-extension progress-item) (if (gnc:debugging?) (gnc:add-extension strings-item))) diff --git a/src/scm/qif-import/qif-file.scm b/src/scm/qif-import/qif-file.scm index bf9060778f..bc13957263 100644 --- a/src/scm/qif-import/qif-file.scm +++ b/src/scm/qif-import/qif-file.scm @@ -44,15 +44,15 @@ (file-size (stat:size file-stats)) (bytes-read 0)) (set! start-time (gettimeofday)) - + (if (> file-size 10000) (begin - (set! progress-dialog (gnc:progress-dialog-new #f)) + (set! progress-dialog (gnc:progress-dialog-new #f #f)) (gnc:progress-dialog-set-title progress-dialog "Progress") (gnc:progress-dialog-set-heading progress-dialog "Loading QIF file...") (gnc:progress-dialog-set-limits progress-dialog 0.0 100.0))) - + (with-input-from-file path (lambda () ;; loop over lines diff --git a/src/scm/qif-import/qif-to-gnc.scm b/src/scm/qif-import/qif-to-gnc.scm index 0f6e19f28f..7fc3f8d8be 100644 --- a/src/scm/qif-import/qif-to-gnc.scm +++ b/src/scm/qif-import/qif-to-gnc.scm @@ -225,7 +225,7 @@ (if (> work-to-do 100) (begin - (set! progress-dialog (gnc:progress-dialog-new #f)) + (set! progress-dialog (gnc:progress-dialog-new #f #f)) (gnc:progress-dialog-set-title progress-dialog "Progress") (gnc:progress-dialog-set-heading progress-dialog "Importing transactions...")