Merge master.
[dcpomatic.git] / src / wx / job_manager_view.cc
index 7cfcf3423ce9d2fdaba23d90290a1920011c32a9..df9c6f5f1d996dfcbccff08753d71b5789c007c6 100644 (file)
@@ -44,11 +44,13 @@ public:
                , _window (window)
                , _panel (panel)
                , _table (table)
+               , _pause (0)
        {
                int n = 0;
                
                _name = new wxStaticText (panel, wxID_ANY, "");
-               _name->SetLabelMarkup ("<b>" + _job->name () + "</b>");
+               string const jn = "<b>" + _job->name () + "</b>";
+               _name->SetLabelMarkup (std_to_wx (jn));
                table->Insert (n, _name, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
                ++n;
        
@@ -96,16 +98,25 @@ public:
 
 private:
 
+       void update_job_name ()
+       {
+               string n = "<b>" + _job->name () + "</b>";
+               if (!_job->sub_name().empty ()) {
+                       n += "\n" + _job->sub_name ();
+               }
+               
+               if (n != _last_name) {
+                       _name->SetLabelMarkup (std_to_wx (n));
+                       _last_name = n;
+               }
+       }
+
        void progress ()
        {
                float const p = _job->progress ();
                if (p >= 0) {
                        checked_set (_message, _job->status ());
-                       string const n = "<b>" + _job->name () + "</b>\n" + _job->sub_name ();
-                       if (n != _last_name) {
-                               _name->SetLabelMarkup (std_to_wx (n));
-                               _last_name = n;
-                       }
+                       update_job_name ();
                        int const pp = min (100.0f, p * 100);
                        _gauge->SetValue (pp);
                }
@@ -117,11 +128,16 @@ private:
        void finished ()
        {
                checked_set (_message, _job->status ());
+               update_job_name ();
+               
                if (!_job->finished_cancelled ()) {
                        _gauge->SetValue (100);
                }
                
                _cancel->Enable (false);
+               if (_pause) {
+                       _pause->Enable (false);
+               }
                if (!_job->error_details().empty ()) {
                        _details->Enable (true);
                }