-FilmViewer::FilmViewer (shared_ptr<Film> f, wxWindow* p)
- : wxPanel (p)
- , _panel (new wxPanel (this))
- , _slider (new wxSlider (this, wxID_ANY, 0, 0, 4096))
- , _back_button (new wxButton (this, wxID_ANY, wxT("<")))
- , _forward_button (new wxButton (this, wxID_ANY, wxT(">")))
- , _frame_number (new wxStaticText (this, wxID_ANY, wxT("")))
- , _timecode (new wxStaticText (this, wxID_ANY, wxT("")))
- , _play_button (new wxToggleButton (this, wxID_ANY, _("Play")))
- , _got_frame (false)
-{
-#ifndef __WXOSX__
- _panel->SetDoubleBuffered (true);
-#endif
-
- _panel->SetBackgroundStyle (wxBG_STYLE_PAINT);
-
- _v_sizer = new wxBoxSizer (wxVERTICAL);
- SetSizer (_v_sizer);
-
- _v_sizer->Add (_panel, 1, wxEXPAND);
-
- wxBoxSizer* h_sizer = new wxBoxSizer (wxHORIZONTAL);
-
- wxBoxSizer* time_sizer = new wxBoxSizer (wxVERTICAL);
- time_sizer->Add (_frame_number, 0, wxEXPAND);
- time_sizer->Add (_timecode, 0, wxEXPAND);
-
- h_sizer->Add (_back_button, 0, wxALL, 2);
- h_sizer->Add (time_sizer, 0, wxEXPAND);
- h_sizer->Add (_forward_button, 0, wxALL, 2);
- h_sizer->Add (_play_button, 0, wxEXPAND);
- h_sizer->Add (_slider, 1, wxEXPAND);
-
- _v_sizer->Add (h_sizer, 0, wxEXPAND | wxALL, 6);
-
- _frame_number->SetMinSize (wxSize (84, -1));
- _back_button->SetMinSize (wxSize (32, -1));
- _forward_button->SetMinSize (wxSize (32, -1));
-
- _panel->Bind (wxEVT_PAINT, boost::bind (&FilmViewer::paint_panel, this));
- _panel->Bind (wxEVT_SIZE, boost::bind (&FilmViewer::panel_sized, this, _1));
- _slider->Bind (wxEVT_SCROLL_THUMBTRACK, boost::bind (&FilmViewer::slider_moved, this));
- _slider->Bind (wxEVT_SCROLL_PAGEUP, boost::bind (&FilmViewer::slider_moved, this));
- _slider->Bind (wxEVT_SCROLL_PAGEDOWN, boost::bind (&FilmViewer::slider_moved, this));
- _play_button->Bind (wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, boost::bind (&FilmViewer::play_clicked, this));
- _timer.Bind (wxEVT_TIMER, boost::bind (&FilmViewer::timer, this));
- _back_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmViewer::back_clicked, this));
- _forward_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmViewer::forward_clicked, this));
-
- set_film (f);
-
- JobManager::instance()->ActiveJobsChanged.connect (
- bind (&FilmViewer::active_jobs_changed, this, _1)
- );