summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-03-15 13:53:51 +0000
committerCarl Hetherington <cth@carlh.net>2014-03-15 13:53:51 +0000
commit5d3ebbb2e7844485e8dddd6471209d56b05633ae (patch)
treeab1190b8789ebda46be3f2fdde05ce3332241940 /src/tools
parent16e8c1c7222796246f74153bf294909c3efe57dc (diff)
Cope with loading films with now-disabled filters.
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/dcpomatic.cc54
1 files changed, 31 insertions, 23 deletions
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<string> const notes = film->read_metadata ();
+ check_film_state_version (film->state_version ());
+ for (list<string>::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<wxMenuItem*, int> 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<shared_ptr<Job> > 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));