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 1e73418b64bf8be7fdf6a2d63d2b6857c4301774..b288580cb11d94f461f66c600a00c99c21ba62ae 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 bb66bc1416233c322705fd6f07e4969182dd752c..55cf4acaef643114ab5de6c7c672438243bdc378 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 419ffe69c4b7eef417598ee34d01fad25274f9d1..8a2e2050d295547320ca9f4def69aee4eb3fb268 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 f4e4beba923cf4aed67b634831dc334c97ca74d2..02d7a9ff68cf9b85607f81f65d7251f5cef4cdb2 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 8902798a4c4f1d4187d1cc6a6fa095b71ef28de2..1515c8b7618522a50c0a7be5e521e6484dda3f98 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 e2a2ec36623b40faa6a7b69baca72e698d0a01d5..959923a51db83e0e1c4851d9fa95a39c161a7c2d 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 9d2af1a32923c966e08c1b85343de6b24af17276..436046890bb9c709497450ac6d1e5de7d070bed0 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 25da0def4976e605258ea83f16e33843a55cfc7e..27dce1fb7db2f977b8f86aa0c82ff00cd4d6407e 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 017d2c659ba97abac31a9b70a9b4b46facb63c7d..19c54abcc33529375563d6c452df17fdc5670f41 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 efc0e6ef15ae9069182ba0a45a6ac26860a1df17..7dcc6f8f1060ce4c5636bf7195facb0f2d6db903 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 92aa5c6d739b51e9619273cb0cdd6c5106b7d0e3..5d0cd4630272867c0b4acbecaf0586e7f69e746e 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);