diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-11-20 16:30:54 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-11-20 16:30:54 +0000 |
| commit | ce835adf99ec81ea182ac151f6e0d1cc3376d175 (patch) | |
| tree | d529edaff1c75194fe41d70877db292d49217246 /src/wx | |
| parent | d324fc102df00d6dc62614938f78cf983a101dd4 (diff) | |
Add primitive hints dialogue box.
Diffstat (limited to 'src/wx')
| -rw-r--r-- | src/wx/hints_dialog.cc | 99 | ||||
| -rw-r--r-- | src/wx/hints_dialog.h | 36 | ||||
| -rw-r--r-- | src/wx/wscript | 5 |
3 files changed, 138 insertions, 2 deletions
diff --git a/src/wx/hints_dialog.cc b/src/wx/hints_dialog.cc new file mode 100644 index 000000000..df22500d2 --- /dev/null +++ b/src/wx/hints_dialog.cc @@ -0,0 +1,99 @@ +/* + Copyright (C) 2012-2013 Carl Hetherington <cth@carlh.net> + + This program 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, + 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. + +*/ + +#include <boost/algorithm/string.hpp> +#include <wx/richtext/richtextctrl.h> +#include "lib/film.h" +#include "hints_dialog.h" + +HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> f) + : wxDialog (parent, wxID_ANY, _("Hints")) + , _film (f) +{ + wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); + _text = new wxRichTextCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (400, 300), wxRE_READONLY); + sizer->Add (_text, 1, wxEXPAND | wxALL, 6); + + wxSizer* buttons = CreateSeparatedButtonSizer (wxOK); + if (buttons) { + sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); + } + + SetSizer (sizer); + sizer->Layout (); + sizer->SetSizeHints (this); + + _text->GetCaret()->Hide (); + + boost::shared_ptr<Film> film = _film.lock (); + if (film) { + film->Changed.connect (boost::bind (&HintsDialog::film_changed, this)); + } + + film_changed (); +} + +void +HintsDialog::film_changed () +{ + _text->Clear (); + bool hint = false; + + boost::shared_ptr<Film> film = _film.lock (); + if (!film) { + return; + } + + _text->BeginStandardBullet (N_("standard/circle"), 1, 50); + if (film->audio_channels() % 2) { + hint = true; + _text->WriteText (_("Your DCP has an odd number of audio channels. This is very likely to cause problems on playback.")); + _text->Newline (); + } else if (film->audio_channels() < 6) { + hint = true; + _text->WriteText (_("Your DCP has fewer than 6 audio channels. This may cause problems on some projectors.")); + _text->Newline (); + } + + if (film->video_frame_rate() != 24 && film->video_frame_rate() != 48) { + hint = true; + _text->WriteText (wxString::Format (_("Your DCP frame rate (%d fps) may cause problems in a few (mostly older) projectors. Use 24 or 48 frames per second to be on the safe side."), film->video_frame_rate())); + _text->Newline (); + } + + ContentList content = film->content (); + int vob = 0; + for (ContentList::const_iterator i = content.begin(); i != content.end(); ++i) { + if (boost::algorithm::starts_with ((*i)->path().filename().string(), "VTS_")) { + ++vob; + } + } + + if (vob > 1) { + hint = true; + _text->WriteText (wxString::Format (_("You have %d files that look like they are VOB files from DVD. You should coalesce them to ensure smooth joins between the files."), vob)); + _text->Newline (); + } + + _text->EndSymbolBullet (); + + if (!hint) { + _text->WriteText (_("There are no hints: everything looks good!")); + } +} diff --git a/src/wx/hints_dialog.h b/src/wx/hints_dialog.h new file mode 100644 index 000000000..810791453 --- /dev/null +++ b/src/wx/hints_dialog.h @@ -0,0 +1,36 @@ +/* + Copyright (C) 2012-2013 Carl Hetherington <cth@carlh.net> + + This program 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, + 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. + +*/ + +#include <boost/weak_ptr.hpp> +#include <wx/wx.h> + +class wxRichTextCtrl; +class Film; + +class HintsDialog : public wxDialog +{ +public: + HintsDialog (wxWindow* parent, boost::weak_ptr<Film>); + +private: + void film_changed (); + + boost::weak_ptr<Film> _film; + wxRichTextCtrl* _text; +}; diff --git a/src/wx/wscript b/src/wx/wscript index c86188c6a..64b82d534 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -22,6 +22,7 @@ sources = """ filter_dialog.cc filter_editor.cc gain_calculator_dialog.cc + hints_dialog.cc job_manager_view.cc job_wrapper.cc kdm_dialog.cc @@ -45,7 +46,7 @@ sources = """ def configure(conf): args = '--cppflags --cxxflags' if not conf.env.STATIC: - args += ' --libs' + args += ' --libs std,richtext' conf.check_cfg(msg='Checking for wxWidgets', package='', path=conf.options.wx_config, args=args, uselib_store='WXWIDGETS', mandatory=True) @@ -53,7 +54,7 @@ def configure(conf): if conf.env.STATIC: # wx-config returns its static libraries as full paths, without -l prefixes, which confuses # check_cfg(), so just hard-code it all. - conf.env.STLIB_WXWIDGETS = ['wx_gtk2u_xrc-2.9', 'wx_gtk2u_qa-2.9', 'wx_baseu_net-2.9', 'wx_gtk2u_html-2.9', + conf.env.STLIB_WXWIDGETS = ['wx_gtk2u_richtext-2.9', 'wx_gtk2u_xrc-2.9', 'wx_gtk2u_qa-2.9', 'wx_baseu_net-2.9', 'wx_gtk2u_html-2.9', 'wx_gtk2u_adv-2.9', 'wx_gtk2u_core-2.9', 'wx_baseu_xml-2.9', 'wx_baseu-2.9'] conf.env.LIB_WXWIDGETS = ['tiff', 'SM', 'dl', 'jpeg', 'png', 'X11'] |
