X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_properties_dialog.cc;h=5df9ea5cf3f70a1e1d3b7673d5b051a2154a10d7;hb=a938cc151afdfc9962af3e318d6e9b81ca00563b;hp=45593fd5b84921982d4658e948d7c5d19a50762a;hpb=387304bc9147933b68eda2b38ba8cac0d250e87e;p=dcpomatic.git diff --git a/src/wx/content_properties_dialog.cc b/src/wx/content_properties_dialog.cc index 45593fd5b..5df9ea5cf 100644 --- a/src/wx/content_properties_dialog.cc +++ b/src/wx/content_properties_dialog.cc @@ -1,19 +1,20 @@ /* Copyright (C) 2015 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 . */ @@ -24,52 +25,54 @@ #include "lib/video_content.h" #include "lib/audio_content.h" #include +#include using std::string; +using std::list; +using std::pair; +using std::map; using boost::shared_ptr; using boost::dynamic_pointer_cast; ContentPropertiesDialog::ContentPropertiesDialog (wxWindow* parent, shared_ptr content) - : TableDialog (parent, _("Content Properties"), 2, false) + : TableDialog (parent, _("Content Properties"), 2, 1, false) { - string n = content->path(0).string(); - boost::algorithm::replace_all (n, "&", "&&"); - add_property (_("Filename"), std_to_wx (n)); - - shared_ptr video = dynamic_pointer_cast (content); - if (video) { - add_property ( - _("Video length"), - std_to_wx (raw_convert (video->video_length ())) + " " + _("video frames") - ); - add_property ( - _("Video size"), - std_to_wx (raw_convert (video->video_size().width) + "x" + raw_convert (video->video_size().height)) - ); - add_property ( - _("Video frame rate"), - std_to_wx (raw_convert (video->video_frame_rate())) + " " + _("frames per second") - ); + map > grouped; + BOOST_FOREACH (UserProperty i, content->user_properties()) { + if (grouped.find(i.category) == grouped.end()) { + grouped[i.category] = list (); + } + grouped[i.category].push_back (i); } - shared_ptr audio = dynamic_pointer_cast (content); - if (audio) { - add_property ( - _("Audio channels"), - std_to_wx (raw_convert (audio->audio_channels ())) - ); - add_property ( - _("Audio length"), - std_to_wx (raw_convert (audio->audio_length())) + " " + _("audio frames") - ); - } - + maybe_add_group (grouped, wx_to_std (_("General"))); + maybe_add_group (grouped, wx_to_std (_("Video"))); + maybe_add_group (grouped, wx_to_std (_("Audio"))); + maybe_add_group (grouped, wx_to_std (_("Length"))); + layout (); } void -ContentPropertiesDialog::add_property (wxString k, wxString v) +ContentPropertiesDialog::maybe_add_group (map > const & groups, string name) { - add (k, true); - add (new wxStaticText (this, wxID_ANY, v)); + map >::const_iterator i = groups.find (name); + if (i == groups.end()) { + return; + } + + wxStaticText* m = new wxStaticText (this, wxID_ANY, std_to_wx (i->first)); + 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 wxStaticText (this, wxID_ANY, std_to_wx (j.value + " " + j.unit))); + } }