summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-07-24 22:26:01 +0100
committerCarl Hetherington <cth@carlh.net>2013-07-24 22:26:01 +0100
commit4b4faedc4d6b41f1daf913a4540c977b3dbf6a4c (patch)
tree5392b46ebf5aeb8eb8a6776ae4b4f7fa530b1937 /src
parent9ee95f058263c03f5f88a6db31becb8788ee47e8 (diff)
Pulse jobs with no progress reports.
Diffstat (limited to 'src')
-rw-r--r--src/wx/job_manager_view.cc26
-rw-r--r--src/wx/job_manager_view.h2
2 files changed, 25 insertions, 3 deletions
diff --git a/src/wx/job_manager_view.cc b/src/wx/job_manager_view.cc
index d45d6e65d..20f885a9b 100644
--- a/src/wx/job_manager_view.cc
+++ b/src/wx/job_manager_view.cc
@@ -43,6 +43,7 @@ public:
, _window (window)
, _panel (panel)
, _table (table)
+ , _needs_pulse (false)
{
int n = 0;
@@ -83,6 +84,15 @@ public:
panel->FitInside ();
}
+ void maybe_pulse ()
+ {
+ if (_job->running() && _needs_pulse) {
+ _gauge->Pulse ();
+ }
+
+ _needs_pulse = true;
+ }
+
private:
void progress ()
@@ -91,9 +101,7 @@ private:
if (p >= 0) {
checked_set (_message, _job->status ());
_gauge->SetValue (p * 100);
- } else {
- checked_set (_message, wx_to_std (_("Running")));
- _gauge->Pulse ();
+ _needs_pulse = false;
}
_table->Layout ();
@@ -148,6 +156,7 @@ private:
wxButton* _cancel;
wxButton* _pause;
wxButton* _details;
+ bool _needs_pulse;
};
/** Must be called in the GUI thread */
@@ -171,6 +180,10 @@ JobManagerView::JobManagerView (wxWindow* parent, Buttons buttons)
SetScrollRate (0, 32);
+ Bind (wxEVT_TIMER, boost::bind (&JobManagerView::periodic, this));
+ _timer.reset (new wxTimer (this));
+ _timer->Start (1000);
+
JobManager::instance()->JobAdded.connect (bind (&JobManagerView::job_added, this, _1));
}
@@ -183,3 +196,10 @@ JobManagerView::job_added (weak_ptr<Job> j)
}
}
+void
+JobManagerView::periodic ()
+{
+ for (list<shared_ptr<JobRecord> >::iterator i = _job_records.begin(); i != _job_records.end(); ++i) {
+ (*i)->maybe_pulse ();
+ }
+}
diff --git a/src/wx/job_manager_view.h b/src/wx/job_manager_view.h
index 465311837..c4bb1e218 100644
--- a/src/wx/job_manager_view.h
+++ b/src/wx/job_manager_view.h
@@ -42,9 +42,11 @@ public:
private:
void job_added (boost::weak_ptr<Job>);
+ void periodic ();
wxPanel* _panel;
wxFlexGridSizer* _table;
+ boost::shared_ptr<wxTimer> _timer;
std::list<boost::shared_ptr<JobRecord> > _job_records;
Buttons _buttons;