X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_playlist.cc;h=1dca8c182f53e19d0320b911c86e971b7c41d105;hb=cb6729aa79b555b219974207fbe2ff0510f9d3ea;hp=b2b5c458a915b96dd263bf0882658009757f1ff1;hpb=2da4caba7871455c097c0ed940dd6f2332dbda5d;p=dcpomatic.git diff --git a/src/tools/dcpomatic_playlist.cc b/src/tools/dcpomatic_playlist.cc index b2b5c458a..1dca8c182 100644 --- a/src/tools/dcpomatic_playlist.cc +++ b/src/tools/dcpomatic_playlist.cc @@ -36,7 +36,6 @@ #include #include #include -#include using std::exception; using std::cout; @@ -45,10 +44,13 @@ using std::map; using std::make_pair; using std::vector; using boost::optional; -using boost::shared_ptr; -using boost::weak_ptr; +using std::shared_ptr; +using std::weak_ptr; using boost::bind; -using boost::dynamic_pointer_cast; +using std::dynamic_pointer_cast; +#if BOOST_VERSION >= 106100 +using namespace boost::placeholders; +#endif class ContentDialog : public wxDialog, public ContentStore { @@ -70,6 +72,8 @@ public: } overall_sizer->Layout (); + + _config_changed_connection = Config::instance()->Changed.connect(boost::bind(&ContentView::update, _content_view)); } shared_ptr selected () const @@ -84,6 +88,7 @@ public: private: ContentView* _content_view; + boost::signals2::scoped_connection _config_changed_connection; }; @@ -165,7 +170,7 @@ private: } int N = 0; - BOOST_FOREACH (shared_ptr i, _playlists) { + for (auto i: _playlists) { if (i == playlist) { _list->SetItem (N, 0, std_to_wx(i->name())); } @@ -190,7 +195,7 @@ private: } catch (...) {} } - BOOST_FOREACH (shared_ptr i, _playlists) { + for (auto i: _playlists) { add_playlist_to_view (i); } } @@ -270,15 +275,8 @@ public: wxImageList* images = new wxImageList (16, 16); wxIcon tick_icon; wxIcon no_tick_icon; -#ifdef DCPOMATIC_OSX - tick_icon.LoadFile ("tick.png", wxBITMAP_TYPE_PNG_RESOURCE); - no_tick_icon.LoadFile ("no_tick.png", wxBITMAP_TYPE_PNG_RESOURCE); -#else - boost::filesystem::path tick_path = shared_path() / "tick.png"; - tick_icon.LoadFile (std_to_wx(tick_path.string()), wxBITMAP_TYPE_PNG); - boost::filesystem::path no_tick_path = shared_path() / "no_tick.png"; - no_tick_icon.LoadFile (std_to_wx(no_tick_path.string()), wxBITMAP_TYPE_PNG); -#endif + tick_icon.LoadFile (bitmap_path("tick"), wxBITMAP_TYPE_PNG); + no_tick_icon.LoadFile (bitmap_path("no_tick"), wxBITMAP_TYPE_PNG); images->Add (tick_icon); images->Add (no_tick_icon); @@ -319,7 +317,7 @@ public: _playlist = playlist; _list->DeleteAllItems (); if (_playlist) { - BOOST_FOREACH (SPLEntry i, _playlist->get()) { + for (auto i: _playlist->get()) { add (i); } _name->SetValue (std_to_wx(_playlist->name())); @@ -477,6 +475,8 @@ public: Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_exit, this), wxID_EXIT); Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_about, this), wxID_ABOUT); Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_preferences, this), wxID_PREFERENCES); + + _config_changed_connection = Config::instance()->Changed.connect(boost::bind(&DOMFrame::config_changed, this)); } private: @@ -515,7 +515,7 @@ private: { optional dir = Config::instance()->player_playlist_directory(); if (!dir) { - error_dialog (this, _("No playlist folder is specified in preferences. Please set on and then try again.")); + error_dialog (this, _("No playlist folder is specified in preferences. Please set one and then try again.")); return; } playlist->write (*dir / (playlist->id() + ".xml")); @@ -549,10 +549,28 @@ private: m->Append (help, _("&Help")); } + + void config_changed () + { + try { + Config::instance()->write_config(); + } catch (exception& e) { + error_dialog ( + this, + wxString::Format ( + _("Could not write to config file at %s. Your changes have not been saved."), + std_to_wx (Config::instance()->cinemas_file().string()).data() + ) + ); + } + } + + ContentDialog* _content_dialog; PlaylistList* _playlist_list; PlaylistContent* _playlist_content; wxPreferencesEditor* _config_dialog; + boost::signals2::scoped_connection _config_changed_connection; }; /** @class App