Fix content properties (#1428).
authorCarl Hetherington <cth@carlh.net>
Wed, 12 Dec 2018 00:30:33 +0000 (00:30 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 12 Dec 2018 00:30:33 +0000 (00:30 +0000)
src/lib/content.cc
src/lib/content.h
src/lib/dcp_content.cc
src/lib/ffmpeg_content.cc
src/lib/image_content.cc
src/lib/image_content.h
src/lib/video_mxf_content.cc
src/lib/video_mxf_content.h
src/wx/content_menu.cc
src/wx/content_properties_dialog.cc
src/wx/content_properties_dialog.h

index 1e73418..b288580 100644 (file)
@@ -356,10 +356,10 @@ Content::path_summary () const
 
 /** @return a list of properties that might be interesting to the user */
 list<UserProperty>
-Content::user_properties () const
+Content::user_properties (shared_ptr<const Film> film) const
 {
        list<UserProperty> p;
-       add_properties (p);
+       add_properties (film, p);
        return p;
 }
 
@@ -423,7 +423,7 @@ Content::active_video_frame_rate (shared_ptr<const Film> film) const
 }
 
 void
-Content::add_properties (list<UserProperty>& p) const
+Content::add_properties (shared_ptr<const Film>, list<UserProperty>& p) const
 {
        p.push_back (UserProperty (UserProperty::GENERAL, _("Filename"), path(0).string ()));
 
index bb66bc1..55cf4ac 100644 (file)
@@ -180,7 +180,7 @@ public:
                _change_signals_frequent = f;
        }
 
-       std::list<UserProperty> user_properties () const;
+       std::list<UserProperty> user_properties (boost::shared_ptr<const Film> film) const;
 
        std::string calculate_digest () const;
 
@@ -196,7 +196,7 @@ public:
 
 protected:
 
-       virtual void add_properties (std::list<UserProperty> &) const;
+       virtual void add_properties (boost::shared_ptr<const Film> film, std::list<UserProperty> &) const;
 
        /** _mutex which should be used to protect accesses, as examine
         *  jobs can update content state in threads other than the main one.
index 419ffe6..8a2e205 100644 (file)
@@ -421,7 +421,7 @@ DCPContent::directories () const
 void
 DCPContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const
 {
-       Content::add_properties (p);
+       Content::add_properties (film, p);
        if (video) {
                video->add_properties (p);
        }
index f4e4beb..02d7a9f 100644 (file)
@@ -507,7 +507,7 @@ FFmpegContent::set_default_colour_conversion ()
 void
 FFmpegContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const
 {
-       Content::add_properties (p);
+       Content::add_properties (film, p);
 
        if (video) {
                video->add_properties (p);
index 8902798..1515c8b 100644 (file)
@@ -182,8 +182,8 @@ ImageContent::set_default_colour_conversion ()
 }
 
 void
-ImageContent::add_properties (list<UserProperty>& p) const
+ImageContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const
 {
-       Content::add_properties (p);
+       Content::add_properties (film, p);
        video->add_properties (p);
 }
index e2a2ec3..959923a 100644 (file)
@@ -51,7 +51,7 @@ public:
        bool still () const;
 
 private:
-       void add_properties (std::list<UserProperty>& p) const;
+       void add_properties (boost::shared_ptr<const Film> film, std::list<UserProperty>& p) const;
 
        boost::optional<boost::filesystem::path> _path_to_scan;
 };
index 9d2af1a..4360468 100644 (file)
@@ -130,7 +130,8 @@ VideoMXFContent::approximate_length () const
 }
 
 void
-VideoMXFContent::add_properties (list<UserProperty>& p) const
+VideoMXFContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const
 {
+       Content::add_properties (film, p);
        video->add_properties (p);
 }
index 25da0de..27dce1f 100644 (file)
@@ -41,7 +41,7 @@ public:
        void as_xml (xmlpp::Node* node, bool with_paths) const;
        DCPTime full_length (boost::shared_ptr<const Film> film) const;
        DCPTime approximate_length () const;
-       void add_properties (std::list<UserProperty>& p) const;
+       void add_properties (boost::shared_ptr<const Film> film, std::list<UserProperty>& p) const;
 
        static bool valid_mxf (boost::filesystem::path path);
 };
index 017d2c6..19c54ab 100644 (file)
@@ -415,7 +415,9 @@ ContentMenu::ov ()
 void
 ContentMenu::properties ()
 {
-       ContentPropertiesDialog* d = new ContentPropertiesDialog (_parent, _content.front ());
+       shared_ptr<Film> film = _film.lock ();
+       DCPOMATIC_ASSERT (film);
+       ContentPropertiesDialog* d = new ContentPropertiesDialog (_parent, film, _content.front());
        d->ShowModal ();
        d->Destroy ();
 }
index efc0e6e..7dcc6f8 100644 (file)
@@ -34,11 +34,11 @@ using std::map;
 using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
 
-ContentPropertiesDialog::ContentPropertiesDialog (wxWindow* parent, shared_ptr<Content> content)
+ContentPropertiesDialog::ContentPropertiesDialog (wxWindow* parent, shared_ptr<const Film> film, shared_ptr<Content> content)
        : TableDialog (parent, _("Content Properties"), 2, 1, false)
 {
        map<UserProperty::Category, list<UserProperty> > grouped;
-       BOOST_FOREACH (UserProperty i, content->user_properties()) {
+       BOOST_FOREACH (UserProperty i, content->user_properties(film)) {
                if (grouped.find(i.category) == grouped.end()) {
                        grouped[i.category] = list<UserProperty> ();
                }
index 92aa5c6..5d0cd46 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2015-2016 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2015-2018 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 #include <map>
 
 class Content;
+class Film;
 class UserProperty;
 
 class ContentPropertiesDialog : public TableDialog
 {
 public:
-       ContentPropertiesDialog (wxWindow* parent, boost::shared_ptr<Content> content);
+       ContentPropertiesDialog (wxWindow* parent, boost::shared_ptr<const Film> film, boost::shared_ptr<Content> content);
 
 private:
        void maybe_add_group (std::map<UserProperty::Category, std::list<UserProperty> > const & groups, UserProperty::Category category);