Merge master.
[dcpomatic.git] / src / wx / film_editor.cc
index 45c423355e3cc7578de2ef51a7d407045f94b1dc..2cf6a0b6ccc6847a627bfeb63a848a8e407d6ab8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2013 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
 
     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
@@ -92,6 +92,8 @@ FilmEditor::FilmEditor (shared_ptr<Film> 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,19 +270,25 @@ 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);
+               b->Add (_content_remove, 1, wxEXPAND | wxALL, pad);
                _content_earlier = new wxButton (_content_panel, wxID_ANY, _("Up"));
-               b->Add (_content_earlier, 1, wxEXPAND);
+               b->Add (_content_earlier, 1, wxEXPAND | wxALL, pad);
                _content_later = new wxButton (_content_panel, wxID_ANY, _("Down"));
-               b->Add (_content_later, 1, wxEXPAND);
+               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);
 
@@ -795,11 +803,16 @@ FilmEditor::content_add_folder_clicked ()
                return;
        }
 
-       _film->examine_and_add_content (
-               shared_ptr<ImageContent> (
-                       new ImageContent (_film, boost::filesystem::path (wx_to_std (d->GetPath ())))
-                       )
-               );
+       shared_ptr<ImageContent> 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<FFmpegContent> (selection.front()) && _generally_sensitive);
+       _subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast<SubtitleContent> (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 ();
 }
 
@@ -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);
+}