From 5d3ebbb2e7844485e8dddd6471209d56b05633ae Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 15 Mar 2014 13:53:51 +0000 Subject: Cope with loading films with now-disabled filters. --- src/tools/dcpomatic.cc | 54 +++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 23 deletions(-) (limited to 'src/tools') diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 6b534f4de..a36c4e240 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -114,7 +114,7 @@ private: }; -void +static void maybe_save_then_delete_film () { if (!film) { @@ -135,6 +135,30 @@ maybe_save_then_delete_film () film.reset (); } +static void +check_film_state_version (int v) +{ + if (v == 4) { + error_dialog ( + 0, + _("This film was created with an old version of DVD-o-matic and may not load correctly " + "in this version. Please check the film's settings carefully.") + ); + } +} + +static void +load_film (boost::filesystem::path file) +{ + film.reset (new Film (file)); + list const notes = film->read_metadata (); + check_film_state_version (film->state_version ()); + for (list::const_iterator i = notes.begin(); i != notes.end(); ++i) { + error_dialog (0, std_to_wx (*i)); + } + film->log()->set_level (log_level); +} + #define ALWAYS 0x0 #define NEEDS_FILM 0x1 #define NOT_DURING_DCP_CREATION 0x2 @@ -142,14 +166,14 @@ maybe_save_then_delete_film () map menu_items; -void +static void add_item (wxMenu* menu, wxString text, int id, int sens) { wxMenuItem* item = menu->Append (id, text); menu_items.insert (make_pair (item, sens)); } -void +static void set_menu_sensitivity () { list > jobs = JobManager::instance()->get (); @@ -194,7 +218,7 @@ enum { ID_tools_check_for_updates }; -void +static void setup_menu (wxMenuBar* m) { wxMenu* file = new wxMenu; @@ -326,17 +350,6 @@ public: overall_panel->SetSizer (main_sizer); } - void check_film_state_version (int v) - { - if (v == 4) { - error_dialog ( - this, - _("This film was created with an old version of DVD-o-matic and may not load correctly " - "in this version. Please check the film's settings carefully.") - ); - } - } - private: void set_film () @@ -416,10 +429,7 @@ private: if (r == wxID_OK) { maybe_save_then_delete_film (); try { - film.reset (new Film (wx_to_std (c->GetPath ()))); - film->read_metadata (); - check_film_state_version (film->state_version ()); - film->log()->set_level (log_level); + load_film (wx_to_std (c->GetPath ())); set_film (); } catch (std::exception& e) { wxString p = c->GetPath (); @@ -645,9 +655,7 @@ class App : public wxApp if (!film_to_load.empty() && boost::filesystem::is_directory (film_to_load)) { try { - film.reset (new Film (film_to_load)); - film->read_metadata (); - film->log()->set_level (log_level); + load_film (film_to_load); } catch (exception& e) { error_dialog (0, std_to_wx (String::compose (wx_to_std (_("Could not load film %1 (%2)")), film_to_load, e.what()))); } @@ -677,7 +685,7 @@ class App : public wxApp _timer->Start (1000); if (film) { - _frame->check_film_state_version (film->state_version ()); + check_film_state_version (film->state_version ()); } UpdateChecker::instance()->StateChanged.connect (boost::bind (&App::update_checker_state_changed, this)); -- cgit v1.2.3