, _window (window)
, _panel (panel)
, _table (table)
- , _needs_pulse (false)
{
int n = 0;
- wxStaticText* m = new wxStaticText (panel, wxID_ANY, std_to_wx (_job->name ()));
- table->Insert (n, m, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ _name = new wxStaticText (panel, wxID_ANY, "");
+ _name->SetLabelMarkup ("<b>" + _job->name () + "</b>");
+ table->Insert (n, _name, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
++n;
_gauge = new wxGauge (panel, wxID_ANY, 100);
+ /* This seems to be required to allow the gauge to shrink under OS X */
+ _gauge->SetMinSize (wxSize (0, -1));
table->Insert (n, _gauge, 1, wxEXPAND | wxLEFT | wxRIGHT);
++n;
void maybe_pulse ()
{
- if (_job->running() && _needs_pulse) {
+ if (_job->running() && _job->progress_unknown ()) {
_gauge->Pulse ();
}
-
- _needs_pulse = true;
}
private:
void progress ()
{
- float const p = _job->overall_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;
+ }
_gauge->SetValue (p * 100);
- _needs_pulse = false;
}
_table->Layout ();
wxScrolledWindow* _window;
wxPanel* _panel;
wxFlexGridSizer* _table;
+ wxStaticText* _name;
wxGauge* _gauge;
wxStaticText* _message;
wxButton* _cancel;
wxButton* _pause;
wxButton* _details;
- bool _needs_pulse;
+ std::string _last_name;
};
/** Must be called in the GUI thread */