/** Must be called in the GUI thread */
JobManagerView::JobManagerView (wxWindow* parent)
- : wxPanel (parent)
+ : wxScrolledWindow (parent)
{
- _sizer = new wxFlexGridSizer (3, 6, 6);
- _sizer->AddGrowableCol (1, 1);
- SetSizer (_sizer);
+ _panel = new wxPanel (this);
+ wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+ sizer->Add (_panel, 1, wxEXPAND);
+ SetSizer (sizer);
+
+ _table = new wxFlexGridSizer (3, 6, 6);
+ _table->AddGrowableCol (1, 1);
+ _panel->SetSizer (_table);
+
+ SetScrollRate (0, 32);
Connect (wxID_ANY, wxEVT_TIMER, wxTimerEventHandler (JobManagerView::periodic), 0, this);
_timer.reset (new wxTimer (this));
{
list<shared_ptr<Job> > jobs = JobManager::instance()->get ();
+ int index = 0;
+
for (list<shared_ptr<Job> >::iterator i = jobs.begin(); i != jobs.end(); ++i) {
if (_job_records.find (*i) == _job_records.end ()) {
- add_label_to_sizer (_sizer, this, (*i)->name ());
-
+ wxStaticText* m = new wxStaticText (_panel, wxID_ANY, std_to_wx ((*i)->name ()));
+ _table->Insert (index, m, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+
JobRecord r;
- r.gauge = new wxGauge (this, wxID_ANY, 100);
- _sizer->Add (r.gauge, 1, wxEXPAND);
+ r.gauge = new wxGauge (_panel, wxID_ANY, 100);
+ _table->Insert (index + 1, r.gauge, 1, wxEXPAND | wxLEFT | wxRIGHT);
+
r.informed_of_finish = false;
- r.message = add_label_to_sizer (_sizer, this, "", 1);
+ r.message = new wxStaticText (_panel, wxID_ANY, std_to_wx (""));
+ _table->Insert (index + 2, r.message, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
_job_records[*i] = r;
- _sizer->Layout ();
}
string const st = (*i)->status ();
try {
(*i)->emit_finished ();
} catch (OpenFileError& e) {
- stringstream s;
- s << "Error: " << e.what();
- error_dialog (this, s.str ());
+ error_dialog (this, String::compose ("Error: %1", e.what ()));
}
_job_records[*i].informed_of_finish = true;
}
+
+ index += 3;
}
- _sizer->Layout ();
+ _table->Layout ();
+ FitInside ();
}