/*
Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
- This program is free software; you can redistribute it and/or modify
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
- This program is distributed in the hope that it will be useful,
+ DCP-o-matic is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
*/
_remove->SetToolTip (_("Remove the selected piece of content from the film."));
b->Add (_remove, 0, wxEXPAND | wxALL, DCPOMATIC_BUTTON_STACK_GAP);
- _earlier = new wxButton (_panel, wxID_ANY, _("Up"));
+ _earlier = new wxButton (_panel, wxID_ANY, _("Earlier"));
_earlier->SetToolTip (_("Move the selected piece of content earlier in the film."));
b->Add (_earlier, 0, wxEXPAND | wxALL, DCPOMATIC_BUTTON_STACK_GAP);
- _later = new wxButton (_panel, wxID_ANY, _("Down"));
+ _later = new wxButton (_panel, wxID_ANY, _("Later"));
_later->SetToolTip (_("Move the selected piece of content later in the film."));
b->Add (_later, 0, wxEXPAND | wxALL, DCPOMATIC_BUTTON_STACK_GAP);
_timing_panel = new TimingPanel (this, _film_viewer);
_panels.push_back (_timing_panel);
- _content->Bind (wxEVT_COMMAND_LIST_ITEM_SELECTED, boost::bind (&ContentPanel::selection_changed, this));
- _content->Bind (wxEVT_COMMAND_LIST_ITEM_DESELECTED, boost::bind (&ContentPanel::selection_changed, this));
- _content->Bind (wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, boost::bind (&ContentPanel::right_click, this, _1));
+ _content->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind (&ContentPanel::selection_changed, this));
+ _content->Bind (wxEVT_LIST_ITEM_DESELECTED, boost::bind (&ContentPanel::selection_changed, this));
+ _content->Bind (wxEVT_LIST_ITEM_RIGHT_CLICK, boost::bind (&ContentPanel::right_click, this, _1));
_content->Bind (wxEVT_DROP_FILES, boost::bind (&ContentPanel::files_dropped, this, _1));
- _add_file->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ContentPanel::add_file_clicked, this));
- _add_folder->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ContentPanel::add_folder_clicked, this));
- _remove->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ContentPanel::remove_clicked, this, false));
- _earlier->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ContentPanel::earlier_clicked, this));
- _later->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ContentPanel::later_clicked, this));
- _timeline->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ContentPanel::timeline_clicked, this));
+ _add_file->Bind (wxEVT_BUTTON, boost::bind (&ContentPanel::add_file_clicked, this));
+ _add_folder->Bind (wxEVT_BUTTON, boost::bind (&ContentPanel::add_folder_clicked, this));
+ _remove->Bind (wxEVT_BUTTON, boost::bind (&ContentPanel::remove_clicked, this, false));
+ _earlier->Bind (wxEVT_BUTTON, boost::bind (&ContentPanel::earlier_clicked, this));
+ _later->Bind (wxEVT_BUTTON, boost::bind (&ContentPanel::later_clicked, this));
+ _timeline->Bind (wxEVT_BUTTON, boost::bind (&ContentPanel::timeline_clicked, this));
}
ContentList
return;
}
- ic->video->set_frame_rate (frame_rate);
+ ic->set_video_frame_rate (frame_rate);
}
_film->examine_and_add_content (content);
void
ContentPanel::set_film (shared_ptr<Film> film)
{
+ _audio_panel->set_film (film);
+
_film = film;
film_changed (Film::CONTENT);
film_changed (Film::AUDIO_CHANNELS);
selection_changed ();
+ setup_sensitivity ();
}
void
}
}
+void
+ContentPanel::set_selection (ContentList cl)
+{
+ ContentList content = _film->content ();
+ for (size_t i = 0; i < content.size(); ++i) {
+ if (find(cl.begin(), cl.end(), content[i]) != cl.end()) {
+ _content->SetItemState (i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
+ } else {
+ _content->SetItemState (i, 0, wxLIST_STATE_SELECTED);
+ }
+ }
+}
+
void
ContentPanel::film_content_changed (int property)
{
- if (property == ContentProperty::PATH || property == DCPContentProperty::CAN_BE_PLAYED) {
+ if (
+ property == ContentProperty::PATH ||
+ property == DCPContentProperty::NEEDS_ASSETS ||
+ property == DCPContentProperty::NEEDS_KDM ||
+ property == DCPContentProperty::NAME
+ ) {
+
setup ();
}
int const t = _content->GetItemCount ();
bool const valid = i->paths_valid ();
shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (i);
- bool const needs_kdm = dcp && !dcp->can_be_played ();
+ bool const needs_kdm = dcp && dcp->needs_kdm ();
+ bool const needs_assets = dcp && dcp->needs_assets ();
- string s = i->summary ();
+ wxString s = std_to_wx (i->summary ());
if (!valid) {
s = _("MISSING: ") + s;
s = _("NEEDS KDM: ") + s;
}
+ if (needs_assets) {
+ s = _("NEEDS OV: ") + s;
+ }
+
wxListItem item;
item.SetId (t);
- item.SetText (std_to_wx (s));
+ item.SetText (s);
item.SetData (i.get ());
_content->InsertItem (item);
_content->SetItemState (t, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}
- if (!valid || needs_kdm) {
+ if (!valid || needs_kdm || needs_assets) {
_content->SetItemTextColour (t, *wxRED);
}
}