summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-02-06 10:37:31 +0000
committerCarl Hetherington <cth@carlh.net>2017-02-06 13:23:54 +0000
commit80f6d818e43d3ce2bd2d81f1bd3bbd4160c28aea (patch)
tree93a13d96ca599e44ae32eb598a56c772643d9e00
parentd1711d4d91322c8559a1adbe53434a25b17b4f7e (diff)
Fix display of progress meter (and crash) when sending emails from the KDM
creator (#1045).
-rw-r--r--ChangeLog5
-rw-r--r--src/wx/job_view.cc3
-rw-r--r--src/wx/job_view_dialog.cc15
-rw-r--r--src/wx/job_view_dialog.h2
4 files changed, 24 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 28316e12e..b00037241 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-02-06 Carl Hetherington <cth@carlh.net>
+
+ * Fix display of progress meter (and crash) when sending emails
+ from the KDM creator (#1045).
+
2017-01-28 Carl Hetherington <cth@carlh.net>
* Add priority control buttons to batch converter (#961).
diff --git a/src/wx/job_view.cc b/src/wx/job_view.cc
index 13c3bc7ab..4aa2e3c2b 100644
--- a/src/wx/job_view.cc
+++ b/src/wx/job_view.cc
@@ -33,6 +33,7 @@ JobView::JobView (shared_ptr<Job> job, wxWindow* parent, wxWindow* container, wx
, _table (table)
, _parent (parent)
, _container (container)
+ , _gauge (0)
{
}
@@ -78,7 +79,7 @@ JobView::setup ()
void
JobView::maybe_pulse ()
{
- if (_job->running() && !_job->progress ()) {
+ if (_gauge && _job->running() && !_job->progress()) {
_gauge->Pulse ();
}
}
diff --git a/src/wx/job_view_dialog.cc b/src/wx/job_view_dialog.cc
index c1c1c0c55..a49818cc8 100644
--- a/src/wx/job_view_dialog.cc
+++ b/src/wx/job_view_dialog.cc
@@ -20,19 +20,28 @@
#include "job_view_dialog.h"
#include "normal_job_view.h"
+#include "lib/job.h"
using boost::shared_ptr;
JobViewDialog::JobViewDialog (wxWindow* parent, wxString title, shared_ptr<Job> job)
: TableDialog (parent, title, 4, 0, false)
+ , _job (job)
{
_view = new NormalJobView (job, this, this, _table);
+ _view->setup ();
layout ();
SetMinSize (wxSize (960, -1));
Bind (wxEVT_TIMER, boost::bind (&JobViewDialog::periodic, this));
_timer.reset (new wxTimer (this));
_timer->Start (1000);
+
+ /* Start off with OK disabled and it will be enabled when the job is finished */
+ wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
+ if (ok) {
+ ok->Enable (false);
+ }
}
JobViewDialog::~JobViewDialog ()
@@ -44,4 +53,10 @@ void
JobViewDialog::periodic ()
{
_view->maybe_pulse ();
+
+ shared_ptr<Job> job = _job.lock ();
+ wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
+ if (job && ok) {
+ ok->Enable (job->finished ());
+ }
}
diff --git a/src/wx/job_view_dialog.h b/src/wx/job_view_dialog.h
index ae22aba73..54a6c1636 100644
--- a/src/wx/job_view_dialog.h
+++ b/src/wx/job_view_dialog.h
@@ -20,6 +20,7 @@
#include "table_dialog.h"
#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
class JobView;
class Job;
@@ -34,5 +35,6 @@ private:
void periodic ();
JobView* _view;
+ boost::weak_ptr<Job> _job;
boost::shared_ptr<wxTimer> _timer;
};