std::shared_ptr
[dcpomatic.git] / src / wx / job_view.cc
index 174c9967dab4b95cfdd482da76562b68109df824..52c975beefaa38d5754d7292dfbba1b535b28260 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 #include "lib/transcode_job.h"
 #include "lib/analyse_audio_job.h"
 #include <wx/wx.h>
+#include <boost/algorithm/string.hpp>
 
 using std::string;
 using std::min;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::bind;
-using boost::dynamic_pointer_cast;
+using std::dynamic_pointer_cast;
 
 JobView::JobView (shared_ptr<Job> job, wxWindow* parent, wxWindow* container, wxFlexGridSizer* table)
        : _job (job)
@@ -60,7 +61,7 @@ JobView::setup ()
        _gauge->SetMinSize (wxSize (0, -1));
        _gauge_message->Add (_gauge, 0, wxEXPAND | wxLEFT | wxRIGHT);
        _message = new StaticText (_container, wxT(" \n "), wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_MIDDLE);
-       _gauge_message->Add (_message, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL | wxALL, 6);
+       _gauge_message->Add (_message, 1, wxEXPAND | wxALL, 6);
        _table->Insert (n, _gauge_message, 1, wxEXPAND | wxLEFT | wxRIGHT);
        ++n;
 
@@ -68,12 +69,12 @@ JobView::setup ()
 
        _cancel = new Button (_container, _("Cancel"));
        _cancel->Bind (wxEVT_BUTTON, &JobView::cancel_clicked, this);
-       _buttons->Add (_cancel, 1, wxALIGN_CENTER_VERTICAL);
+       _buttons->Add (_cancel, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, DCPOMATIC_BUTTON_STACK_GAP);
 
        _details = new Button (_container, _("Details..."));
        _details->Bind (wxEVT_BUTTON, &JobView::details_clicked, this);
        _details->Enable (false);
-       _buttons->Add (_details, 1, wxALIGN_CENTER_VERTICAL);
+       _buttons->Add (_details, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, DCPOMATIC_BUTTON_STACK_GAP);
 
        finish_setup (_container, _buttons);
 
@@ -82,7 +83,7 @@ JobView::setup ()
        _notify = new CheckBox (_container, _("Notify when complete"));
        _notify->Bind (wxEVT_CHECKBOX, bind (&JobView::notify_clicked, this));
        _notify->SetValue (Config::instance()->default_notify());
-       _controls->Add (_notify);
+       _controls->Add (_notify, 0, wxTOP, DCPOMATIC_BUTTON_STACK_GAP);
 
        _table->Insert (n, _controls, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3);
 
@@ -109,7 +110,11 @@ JobView::progress ()
        if (!_job->sub_name().empty ()) {
                whole += _job->sub_name() + " ";
        }
-       whole += _job->status ();
+       string s = _job->status ();
+       /* Watch out for < > in the error string */
+       boost::algorithm::replace_all (s, "<", "&lt;");
+       boost::algorithm::replace_all (s, ">", "&gt;");
+       whole += s;
        if (whole != _last_message) {
                _message->SetLabelMarkup (std_to_wx (whole));
                /* This hack fixes the size of _message on OS X */