X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ffilm_editor.cc;h=2cf6a0b6ccc6847a627bfeb63a848a8e407d6ab8;hb=7f2e74604a51b984e4c8cbb5d5f4bb642677ec00;hp=728098b934ab331e3c10956f8abc22c973df9c90;hpb=c94f29d333e1b81aabbc396920250844460d46f6;p=dcpomatic.git diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index 728098b93..2cf6a0b6c 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2013 Carl Hetherington + Copyright (C) 2012-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,7 +72,7 @@ using boost::lexical_cast; /** @param f Film to edit */ FilmEditor::FilmEditor (shared_ptr f, wxWindow* parent) : wxPanel (parent) - , _menu (f, this) + , _menu (this) , _generally_sensitive (true) , _timeline_dialog (0) { @@ -92,6 +92,8 @@ FilmEditor::FilmEditor (shared_ptr f, wxWindow* parent) JobManager::instance()->ActiveJobsChanged.connect ( bind (&FilmEditor::active_jobs_changed, this, _1) ); + + Config::instance()->Changed.connect (boost::bind (&FilmEditor::config_changed, this)); SetSizerAndFit (s); } @@ -177,7 +179,7 @@ FilmEditor::make_dcp_panel () wxSizer* s = new wxBoxSizer (wxHORIZONTAL); _j2k_bandwidth = new wxSpinCtrl (_dcp_panel, wxID_ANY); s->Add (_j2k_bandwidth, 1); - add_label_to_sizer (s, _dcp_panel, _("MBps"), false); + add_label_to_sizer (s, _dcp_panel, _("Mbit/s"), false); grid->Add (s, wxGBPosition (r, 1)); } ++r; @@ -213,7 +215,7 @@ FilmEditor::make_dcp_panel () } _audio_channels->SetRange (0, MAX_AUDIO_CHANNELS); - _j2k_bandwidth->SetRange (1, 250); + _j2k_bandwidth->SetRange (1, Config::instance()->maximum_j2k_bandwidth() / 1000000); _resolution->Append (_("2K")); _resolution->Append (_("4K")); @@ -268,23 +270,29 @@ FilmEditor::make_content_panel () _content->InsertColumn (0, wxT("")); _content->SetColumnWidth (0, 512); +#ifdef DCPOMATIC_OSX + int const pad = 2; +#else + int const pad = 0; +#endif + wxBoxSizer* b = new wxBoxSizer (wxVERTICAL); _content_add_file = new wxButton (_content_panel, wxID_ANY, _("Add file(s)...")); - b->Add (_content_add_file, 1, wxEXPAND | wxLEFT | wxRIGHT); + b->Add (_content_add_file, 1, wxEXPAND | wxALL, pad); _content_add_folder = new wxButton (_content_panel, wxID_ANY, _("Add folder...")); - b->Add (_content_add_folder, 1, wxEXPAND | wxLEFT | wxRIGHT); + b->Add (_content_add_folder, 1, wxEXPAND | wxALL, pad); _content_remove = new wxButton (_content_panel, wxID_ANY, _("Remove")); - b->Add (_content_remove, 1, wxEXPAND | wxLEFT | wxRIGHT); - _content_earlier = new wxButton (_content_panel, wxID_UP); - b->Add (_content_earlier, 1, wxEXPAND); - _content_later = new wxButton (_content_panel, wxID_DOWN); - b->Add (_content_later, 1, wxEXPAND); + b->Add (_content_remove, 1, wxEXPAND | wxALL, pad); + _content_earlier = new wxButton (_content_panel, wxID_ANY, _("Up")); + b->Add (_content_earlier, 1, wxEXPAND | wxALL, pad); + _content_later = new wxButton (_content_panel, wxID_ANY, _("Down")); + b->Add (_content_later, 1, wxEXPAND | wxALL, pad); _content_timeline = new wxButton (_content_panel, wxID_ANY, _("Timeline...")); - b->Add (_content_timeline, 1, wxEXPAND | wxLEFT | wxRIGHT); + b->Add (_content_timeline, 1, wxEXPAND | wxALL, pad); s->Add (b, 0, wxALL, 4); - _content_sizer->Add (s, 0.75, wxEXPAND | wxALL, 6); + _content_sizer->Add (s, 0, wxEXPAND | wxALL, 6); } _sequence_video = new wxCheckBox (_content_panel, wxID_ANY, _("Keep video in sequence")); @@ -734,7 +742,7 @@ FilmEditor::setup_content () ContentList content = _film->content (); for (ContentList::iterator i = content.begin(); i != content.end(); ++i) { int const t = _content->GetItemCount (); - bool const valid = (*i)->path_valid (); + bool const valid = (*i)->paths_valid (); string s = (*i)->summary (); if (!valid) { @@ -795,11 +803,16 @@ FilmEditor::content_add_folder_clicked () return; } - _film->examine_and_add_content ( - shared_ptr ( - new ImageContent (_film, boost::filesystem::path (wx_to_std (d->GetPath ()))) - ) - ); + shared_ptr ic; + + try { + ic.reset (new ImageContent (_film, boost::filesystem::path (wx_to_std (d->GetPath ())))); + } catch (FileError& e) { + error_dialog (this, std_to_wx (e.what ())); + return; + } + + _film->examine_and_add_content (ic); } void @@ -841,7 +854,7 @@ FilmEditor::setup_content_sensitivity () _video_panel->Enable (video_selection.size() > 0 && _generally_sensitive); _audio_panel->Enable (audio_selection.size() > 0 && _generally_sensitive); - _subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast (selection.front()) && _generally_sensitive); + _subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast (selection.front()) && _generally_sensitive); _timing_panel->Enable (selection.size() == 1 && _generally_sensitive); } @@ -936,7 +949,7 @@ FilmEditor::content_timeline_clicked () _timeline_dialog = 0; } - _timeline_dialog = new DCPTimelineDialog (this, _film); + _timeline_dialog = new TimelineDialog (this, _film); _timeline_dialog->Show (); } @@ -966,7 +979,7 @@ FilmEditor::sequence_video_changed () void FilmEditor::content_right_click (wxListEvent& ev) { - _menu.popup (selected_content (), ev.GetPoint ()); + _menu.popup (_film, selected_content (), ev.GetPoint ()); } void @@ -998,3 +1011,9 @@ FilmEditor::content_later_clicked () content_selection_changed (); } } + +void +FilmEditor::config_changed () +{ + _j2k_bandwidth->SetRange (1, Config::instance()->maximum_j2k_bandwidth() / 1000000); +}