Support CPL metadata.
[dcpomatic.git] / src / wx / dcp_panel.cc
index b3eac1268d25690ee4eb1ee37840814b81bb09c2..4e023db325972c0c21fc486dd681e76c99708c13 100644 (file)
@@ -28,7 +28,8 @@
 #include "check_box.h"
 #include "dcpomatic_button.h"
 #include "markers_dialog.h"
-#include "metadata_dialog.h"
+#include "interop_metadata_dialog.h"
+#include "smpte_metadata_dialog.h"
 #include "lib/ratio.h"
 #include "lib/config.h"
 #include "lib/dcp_content_type.h"
@@ -59,12 +60,16 @@ using std::make_pair;
 using boost::lexical_cast;
 using boost::shared_ptr;
 using boost::weak_ptr;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 using dcp::locale_convert;
 
 DCPPanel::DCPPanel (wxNotebook* n, shared_ptr<Film> film, weak_ptr<FilmViewer> viewer)
        : _audio_dialog (0)
        , _markers_dialog (0)
-       , _metadata_dialog (0)
+       , _interop_metadata_dialog (0)
+       , _smpte_metadata_dialog (0)
        , _film (film)
        , _viewer (viewer)
        , _generally_sensitive (true)
@@ -335,13 +340,23 @@ DCPPanel::markers_clicked ()
 void
 DCPPanel::metadata_clicked ()
 {
-       if (_metadata_dialog) {
-               _metadata_dialog->Destroy ();
-               _metadata_dialog = 0;
-       }
+       if (_film->interop()) {
+               if (_interop_metadata_dialog) {
+                       _interop_metadata_dialog->Destroy ();
+                       _interop_metadata_dialog = 0;
+               }
 
-       _metadata_dialog = new MetadataDialog (_panel, _film);
-       _metadata_dialog->Show ();
+               _interop_metadata_dialog = new InteropMetadataDialog (_panel, _film);
+               _interop_metadata_dialog->Show ();
+       } else {
+               if (_smpte_metadata_dialog) {
+                       _smpte_metadata_dialog->Destroy ();
+                       _smpte_metadata_dialog = 0;
+               }
+
+               _smpte_metadata_dialog = new SMPTEMetadataDialog (_panel, _film);
+               _smpte_metadata_dialog->Show ();
+       }
 }
 
 void
@@ -451,6 +466,7 @@ DCPPanel::film_changed (int p)
                break;
        case Film::CONTENT:
                setup_dcp_name ();
+               setup_sensitivity ();
                break;
        default:
                break;
@@ -538,9 +554,13 @@ DCPPanel::set_film (shared_ptr<Film> film)
                _markers_dialog->Destroy ();
                _markers_dialog = 0;
        }
-       if (_metadata_dialog) {
-               _metadata_dialog->Destroy ();
-               _metadata_dialog = 0;
+       if (_interop_metadata_dialog) {
+               _interop_metadata_dialog->Destroy ();
+               _interop_metadata_dialog = 0;
+       }
+       if (_smpte_metadata_dialog) {
+               _smpte_metadata_dialog->Destroy ();
+               _smpte_metadata_dialog = 0;
        }
 
        _film = film;
@@ -594,16 +614,30 @@ DCPPanel::setup_sensitivity ()
        _reel_length->Enable            (_generally_sensitive && _film && _film->reel_type() == REELTYPE_BY_LENGTH);
        _markers->Enable                (_generally_sensitive && _film && !_film->interop());
        _metadata->Enable               (_generally_sensitive);
-       _frame_rate_choice->Enable      (_generally_sensitive && _film && !_film->references_dcp_video());
-       _frame_rate_spin->Enable        (_generally_sensitive && _film && !_film->references_dcp_video());
-       _audio_channels->Enable         (_generally_sensitive && _film && !_film->references_dcp_audio());
+       _frame_rate_choice->Enable      (_generally_sensitive && _film && !_film->references_dcp_video() && !_film->contains_atmos_content());
+       _frame_rate_spin->Enable        (_generally_sensitive && _film && !_film->references_dcp_video() && !_film->contains_atmos_content());
+       _audio_channels->Enable         (_generally_sensitive && _film && !_film->references_dcp_audio() && !_film->contains_atmos_content());
        _audio_processor->Enable        (_generally_sensitive && _film && !_film->references_dcp_audio());
        _j2k_bandwidth->Enable          (_generally_sensitive && _film && !_film->references_dcp_video());
        _container->Enable              (_generally_sensitive && _film && !_film->references_dcp_video());
-       _best_frame_rate->Enable        (_generally_sensitive && _film && _film->best_video_frame_rate () != _film->video_frame_rate ());
+       _best_frame_rate->Enable (
+               _generally_sensitive &&
+               _film &&
+               _film->best_video_frame_rate () != _film->video_frame_rate() &&
+               !_film->references_dcp_video() &&
+               !_film->contains_atmos_content()
+               );
        _resolution->Enable             (_generally_sensitive && _film && !_film->references_dcp_video());
        _three_d->Enable                (_generally_sensitive && _film && !_film->references_dcp_video());
-       _standard->Enable               (_generally_sensitive && _film && !_film->references_dcp_video() && !_film->references_dcp_audio());
+
+       _standard->Enable (
+               _generally_sensitive &&
+               _film &&
+               !_film->references_dcp_video() &&
+               !_film->references_dcp_audio() &&
+               !_film->contains_atmos_content()
+               );
+
        _reencode_j2k->Enable           (_generally_sensitive && _film);
        _show_audio->Enable             (_generally_sensitive && _film);
 }