+2017-03-07 Carl Hetherington <cth@carlh.net>
+
+ * Handle failure to write to cinemas file more nicely.
+
2017-02-28 Carl Hetherington <cth@carlh.net>
* Updated de_DE translation from Carsten Kurz.
void
Config::write () const
{
- write_config_xml ();
- write_cinemas_xml ();
+ write_config ();
+ write_cinemas ();
}
void
-Config::write_config_xml () const
+Config::write_config () const
{
xmlpp::Document doc;
xmlpp::Element* root = doc.create_root_node ("Config");
}
void
-Config::write_cinemas_xml () const
+Config::write_cinemas () const
{
xmlpp::Document doc;
xmlpp::Element* root = doc.create_root_node ("Cinemas");
enum Property {
USE_ANY_SERVERS,
SERVERS,
+ CINEMAS,
OTHER
};
void add_cinema (boost::shared_ptr<Cinema> c) {
_cinemas.push_back (c);
- changed ();
+ changed (CINEMAS);
}
void remove_cinema (boost::shared_ptr<Cinema> c) {
_cinemas.remove (c);
- changed ();
+ changed (CINEMAS);
}
void set_allowed_dcp_frame_rates (std::list<int> const & r) {
static boost::signals2::signal<void ()> FailedToLoad;
void write () const;
+ void write_config () const;
+ void write_cinemas () const;
void save_template (boost::shared_ptr<const Film> film, std::string name) const;
bool existing_template (std::string name) const;
void read ();
void set_defaults ();
void set_kdm_email_to_default ();
- void write_config_xml () const;
- void write_cinemas_xml () const;
void read_cinemas (cxml::Document const & f);
boost::shared_ptr<dcp::CertificateChain> create_certificate_chain ();
boost::filesystem::path directory_or (boost::optional<boost::filesystem::path> dir, boost::filesystem::path a) const;
SetIcon (wxIcon (std_to_wx ("id")));
#endif
- _config_changed_connection = Config::instance()->Changed.connect (boost::bind (&DOMFrame::config_changed, this));
- config_changed ();
+ _config_changed_connection = Config::instance()->Changed.connect (boost::bind (&DOMFrame::config_changed, this, _1));
+ config_changed (Config::OTHER);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_new, this), ID_file_new);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_open, this), ID_file_open);
wxAcceleratorTable accel_table (2, accel);
SetAcceleratorTable (accel_table);
- /* Instantly save any config changes when using the DCP-o-matic GUI */
- Config::instance()->Changed.connect (boost::bind (&Config::write, Config::instance ()));
-
UpdateChecker::instance()->StateChanged.connect (boost::bind (&DOMFrame::update_checker_state_changed, this));
}
m->Append (help, _("&Help"));
}
- void config_changed ()
+ void config_changed (Config::Property what)
{
+ /* Instantly save any config changes when using the DCP-o-matic GUI */
+ if (what == Config::CINEMAS) {
+ try {
+ Config::instance()->write_cinemas();
+ } catch (exception& e) {
+ error_dialog (
+ this,
+ wxString::Format (
+ _("Could not write to cinemas file at %s. Your changes have not been saved."),
+ std_to_wx (Config::instance()->cinemas_file().string()).data()
+ )
+ );
+ }
+ } else {
+ 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()
+ )
+ );
+ }
+ }
+
for (int i = 0; i < _history_items; ++i) {
delete _file_menu->Remove (ID_file_history + i);
}
c.second->set_utc_offset_hour (d->utc_offset_hour ());
c.second->set_utc_offset_minute (d->utc_offset_minute ());
_targets->SetItemText (c.first, std_to_wx (d->name()));
- Config::instance()->changed ();
+ Config::instance()->changed (Config::CINEMAS);
}
d->Destroy ();
_targets->Expand (id.get ());
}
- Config::instance()->changed ();
+ Config::instance()->changed (Config::CINEMAS);
d->Destroy ();
}
s.second->recipient = d->recipient ();
s.second->trusted_devices = d->trusted_devices ();
_targets->SetItemText (s.first, std_to_wx (d->name()));
- Config::instance()->changed ();
+ Config::instance()->changed (Config::CINEMAS);
d->Destroy ();
}
_targets->Delete (i->first);
}
- Config::instance()->changed ();
+ Config::instance()->changed (Config::CINEMAS);
}
list<shared_ptr<Screen> >