use new action map API instead of ActionManager::get_action
[ardour.git] / gtk2_ardour / interthread_progress_window.cc
index 6cd1d8686a9eaeec120948eae579aedbed5a58e0..eb32d3e8faac27f6a144fcf7bf322090c3b033fe 100644 (file)
 
 #include <glibmm/main.h>
 #include <gtkmm/stock.h>
+#include "gtkmm2ext/utils.h"
 #include "ardour/import_status.h"
 #include "interthread_progress_window.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace Gtk;
@@ -34,6 +35,8 @@ InterthreadProgressWindow::InterthreadProgressWindow (ARDOUR::InterThreadInfo* i
        : ArdourDialog (t, true)
        , _interthread_info (i)
 {
+       _interthread_info->cancel = false;
+
        _bar.set_orientation (Gtk::PROGRESS_LEFT_TO_RIGHT);
 
        set_border_width (12);
@@ -53,6 +56,15 @@ InterthreadProgressWindow::InterthreadProgressWindow (ARDOUR::InterThreadInfo* i
        Glib::signal_timeout().connect (sigc::mem_fun (*this, &InterthreadProgressWindow::update), 100);
 }
 
+void
+InterthreadProgressWindow::on_hide ()
+{
+       if (_interthread_info && !_interthread_info->done) {
+               //catch user pressing 'esc' or WM close
+               _interthread_info->cancel = true;
+       }
+}
+
 void
 InterthreadProgressWindow::cancel_clicked ()
 {
@@ -86,7 +98,7 @@ bool
 ImportProgressWindow::update ()
 {
        _cancel_button.set_sensitive (!_import_status->freeze);
-       _label.set_markup ("<i>" + _import_status->doing_what + "</i>");
+       _label.set_markup ("<i>" + Gtkmm2ext::markup_escape_text (_import_status->doing_what) + "</i>");
 
        /* use overall progress for the bar, rather than that for individual files */
        _bar.set_fraction ((_import_status->current - 1 + _import_status->progress) / _import_status->total);
@@ -98,7 +110,7 @@ ImportProgressWindow::update ()
        if (c > _import_status->total) {
                c = _import_status->total;
        }
-       
+
        _bar.set_text (string_compose (_("Importing file: %1 of %2"), c, _import_status->total));
 
        return !(_import_status->all_done || _import_status->cancel);