X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_properties_dialog.cc;h=7dcc6f8f1060ce4c5636bf7195facb0f2d6db903;hb=a713e8258acc3f0e960c4e87ba8684902d29a591;hp=37f96c156aeeef50977198ea7313f00b7742c247;hpb=cc0ac806a2dc698d9c20b24498bc865e2d9798ad;p=dcpomatic.git diff --git a/src/wx/content_properties_dialog.cc b/src/wx/content_properties_dialog.cc index 37f96c156..7dcc6f8f1 100644 --- a/src/wx/content_properties_dialog.cc +++ b/src/wx/content_properties_dialog.cc @@ -1,29 +1,29 @@ /* - Copyright (C) 2015 Carl Hetherington + Copyright (C) 2015-2018 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ #include "content_properties_dialog.h" #include "wx_util.h" -#include "lib/raw_convert.h" +#include "static_text.h" #include "lib/content.h" #include "lib/video_content.h" #include "lib/audio_content.h" -#include "lib/single_stream_audio_content.h" #include #include @@ -34,39 +34,65 @@ using std::map; using boost::shared_ptr; using boost::dynamic_pointer_cast; -ContentPropertiesDialog::ContentPropertiesDialog (wxWindow* parent, shared_ptr content) +ContentPropertiesDialog::ContentPropertiesDialog (wxWindow* parent, shared_ptr film, shared_ptr content) : TableDialog (parent, _("Content Properties"), 2, 1, false) { - string n = content->path(0).string(); - boost::algorithm::replace_all (n, "&", "&&"); - add (_("Filename"), true); - add (new wxStaticText (this, wxID_ANY, std_to_wx (n))); - - map > grouped; - BOOST_FOREACH (Content::UserProperty i, content->user_properties()) { + map > grouped; + BOOST_FOREACH (UserProperty i, content->user_properties(film)) { if (grouped.find(i.category) == grouped.end()) { - grouped[i.category] = list (); + grouped[i.category] = list (); } grouped[i.category].push_back (i); } - for (map >::const_iterator i = grouped.begin(); i != grouped.end(); ++i) { + maybe_add_group (grouped, UserProperty::GENERAL); + maybe_add_group (grouped, UserProperty::VIDEO); + maybe_add_group (grouped, UserProperty::AUDIO); + maybe_add_group (grouped, UserProperty::LENGTH); - wxStaticText* m = new wxStaticText (this, wxID_ANY, std_to_wx (i->first)); - wxFont font (*wxNORMAL_FONT); - font.SetWeight (wxFONTWEIGHT_BOLD); - m->SetFont (font); + /* Nasty hack to stop the bottom property being cut off on Windows / OS X */ + add (wxString (), false); + add (wxString (), false); - add_spacer (); - add_spacer (); - add (m, false); - add_spacer (); + layout (); +} - BOOST_FOREACH (Content::UserProperty j, i->second) { - add (std_to_wx (j.key), true); - add (new wxStaticText (this, wxID_ANY, std_to_wx (j.value + " " + j.unit))); - } +void +ContentPropertiesDialog::maybe_add_group (map > const & groups, UserProperty::Category category) +{ + map >::const_iterator i = groups.find (category); + if (i == groups.end()) { + return; } - layout (); + wxString category_name; + switch (i->first) { + case UserProperty::GENERAL: + category_name = _("General"); + break; + case UserProperty::VIDEO: + category_name = _("Video"); + break; + case UserProperty::AUDIO: + category_name = _("Audio"); + break; + case UserProperty::LENGTH: + category_name = _("Length"); + break; + } + + wxStaticText* m = new StaticText (this, category_name); + wxFont font (*wxNORMAL_FONT); + font.SetWeight (wxFONTWEIGHT_BOLD); + m->SetFont (font); + + add_spacer (); + add_spacer (); + add (m, false); + add_spacer (); + + BOOST_FOREACH (UserProperty j, i->second) { + add (std_to_wx (j.key), true); + add (new StaticText (this, std_to_wx (j.value + " " + j.unit))); + } }