#include "film_viewer.h"
#include "wx_util.h"
#include "content_view.h"
+#include "dcpomatic_button.h"
+#include "static_text.h"
#include "lib/player_video.h"
#include "lib/dcp_content.h"
#include <wx/listctrl.h>
+#include <wx/progdlg.h>
using std::string;
using std::cout;
SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr<FilmViewer> viewer)
: Controls (parent, viewer, false)
- , _play_button (new wxButton(this, wxID_ANY, _("Play")))
- , _pause_button (new wxButton(this, wxID_ANY, _("Pause")))
- , _stop_button (new wxButton(this, wxID_ANY, _("Stop")))
+ , _play_button (new Button(this, _("Play")))
+ , _pause_button (new Button(this, _("Pause")))
+ , _stop_button (new Button(this, _("Stop")))
+ , _current_disable_timeline (false)
{
_button_sizer->Add (_play_button, 0, wxEXPAND);
_button_sizer->Add (_pause_button, 0, wxEXPAND);
wxBoxSizer* left_sizer = new wxBoxSizer (wxVERTICAL);
wxBoxSizer* e_sizer = new wxBoxSizer (wxHORIZONTAL);
- left_sizer->Add (_spl_view, 1, wxALL | wxEXPAND, DCPOMATIC_SIZER_GAP);
+ wxFont subheading_font (*wxNORMAL_FONT);
+ subheading_font.SetWeight (wxFONTWEIGHT_BOLD);
+
+ wxBoxSizer* spl_header = new wxBoxSizer (wxHORIZONTAL);
+ {
+ wxStaticText* m = new StaticText (this, "Playlists");
+ m->SetFont (subheading_font);
+ spl_header->Add (m, 1, wxALIGN_CENTER_VERTICAL);
+ }
+ _refresh_spl_view = new Button (this, "Refresh");
+ spl_header->Add (_refresh_spl_view, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP / 2);
+
+ left_sizer->Add (spl_header, 0, wxLEFT | wxRIGHT | wxEXPAND, DCPOMATIC_SIZER_GAP);
+ left_sizer->Add (_spl_view, 1, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, DCPOMATIC_SIZER_GAP);
_content_view = new ContentView (this);
- left_sizer->Add (_content_view, 1, wxALL | wxEXPAND, DCPOMATIC_SIZER_GAP);
+
+ wxBoxSizer* content_header = new wxBoxSizer (wxHORIZONTAL);
+ {
+ wxStaticText* m = new StaticText (this, "Content");
+ m->SetFont (subheading_font);
+ content_header->Add (m, 1, wxALIGN_CENTER_VERTICAL);
+ }
+ _refresh_content_view = new Button (this, "Refresh");
+ content_header->Add (_refresh_content_view, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP / 2);
+
+ left_sizer->Add (content_header, 0, wxTOP | wxLEFT | wxRIGHT | wxEXPAND, DCPOMATIC_SIZER_GAP);
+ left_sizer->Add (_content_view, 1, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, DCPOMATIC_SIZER_GAP);
_current_spl_view = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_NO_HEADER);
_current_spl_view->AppendColumn (wxT(""), wxLIST_FORMAT_LEFT, 500);
_spl_view->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind(&SwaroopControls::spl_selection_changed, this));
_spl_view->Bind (wxEVT_LIST_ITEM_DESELECTED, boost::bind(&SwaroopControls::spl_selection_changed, this));
_viewer->ImageChanged.connect (boost::bind(&SwaroopControls::image_changed, this, _1));
+ _refresh_spl_view->Bind (wxEVT_BUTTON, boost::bind(&SwaroopControls::update_playlist_directory, this));
+ _refresh_content_view->Bind (wxEVT_BUTTON, boost::bind(&ContentView::update, _content_view));
_content_view->update ();
update_playlist_directory ();
_play_button->Enable (c && !_viewer->playing());
_pause_button->Enable (c && (!_current_kind || _current_kind != dcp::ADVERTISEMENT) && _viewer->playing());
_stop_button->Enable (c && (!_current_kind || _current_kind != dcp::ADVERTISEMENT));
- _slider->Enable (c && (!_current_kind || _current_kind != dcp::ADVERTISEMENT));
+ _slider->Enable (c && (!_current_kind || _current_kind != dcp::ADVERTISEMENT) && !_current_disable_timeline);
+ _spl_view->Enable (!_viewer->playing());
}
void
return;
}
+ if (c == _current_content.lock()) {
+ return;
+ }
+
+ _current_content = c;
+
+ if (_selected_playlist) {
+ BOOST_FOREACH (SPLEntry i, _playlists[*_selected_playlist].get()) {
+ if (i.content == c) {
+ _current_disable_timeline = i.disable_timeline;
+ setup_sensitivity ();
+ }
+ }
+ }
+
shared_ptr<DCPContent> dc = dynamic_pointer_cast<DCPContent> (c);
if (!dc) {
return;
void
SwaroopControls::spl_selection_changed ()
{
+ _current_spl_view->DeleteAllItems ();
+
long int selected = _spl_view->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
if (selected == -1) {
- _current_spl_view->DeleteAllItems ();
+ _selected_playlist = boost::none;
return;
}
+ wxProgressDialog progress (_("DCP-o-matic"), _("Loading playlist"));
+
shared_ptr<Film> film (new Film(optional<boost::filesystem::path>()));
int N = 0;
_current_spl_view->InsertItem (it);
film->add_content (i.content);
++N;
+ if (!progress.Pulse()) {
+ /* user pressed cancel */
+ return;
+ }
}
+ _selected_playlist = selected;
ResetFilm (film);
}
SwaroopControls::set_film (shared_ptr<Film> film)
{
Controls::set_film (film);
- update_playlist_directory ();
setup_sensitivity ();
}