Rename Emailer -> Email.
[dcpomatic.git] / src / tools / dcpomatic.cc
index 6e374d4ae9045598b0e610b2c7e75350808d30fc..1b1ef06294373adaa68443e9909b43981d4cb7a6 100644 (file)
@@ -36,6 +36,7 @@
 #include "wx/full_config_dialog.h"
 #include "wx/hints_dialog.h"
 #include "wx/html_dialog.h"
+#include "wx/file_dialog.h"
 #include "wx/i18n_hook.h"
 #include "wx/id.h"
 #include "wx/job_manager_view.h"
@@ -70,7 +71,7 @@
 #include "lib/dcpomatic_log.h"
 #include "lib/dcpomatic_socket.h"
 #include "lib/dkdm_wrapper.h"
-#include "lib/emailer.h"
+#include "lib/email.h"
 #include "lib/encode_server_finder.h"
 #include "lib/exceptions.h"
 #include "lib/ffmpeg_encoder.h"
@@ -244,6 +245,7 @@ enum {
        ID_tools_system_information,
        ID_tools_restore_default_preferences,
        ID_tools_export_preferences,
+       ID_tools_import_preferences,
        ID_help_report_a_problem,
        /* IDs for shortcuts (with no associated menu item) */
        ID_add_file,
@@ -355,6 +357,7 @@ public:
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_system_information, this),ID_tools_system_information);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_restore_default_preferences, this), ID_tools_restore_default_preferences);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_export_preferences, this), ID_tools_export_preferences);
+               Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_import_preferences, this), ID_tools_import_preferences);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_about, this),              wxID_ABOUT);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_report_a_problem, this),   ID_help_report_a_problem);
 
@@ -757,9 +760,8 @@ private:
 
        void tools_export_preferences ()
        {
-               wxFileDialog dialog(
-                       this, _("Specify ZIP file"), wxEmptyString, wxT("dcpomatic_config.zip"), wxT("ZIP files (*.zip)|*.zip"),
-                       wxFD_SAVE | wxFD_OVERWRITE_PROMPT
+               FileDialog dialog(
+                       this, _("Specify ZIP file"), wxT("ZIP files (*.zip)|*.zip"), wxFD_SAVE | wxFD_OVERWRITE_PROMPT, "Preferences", string("dcpomatic_config.zip")
                        );
 
                if (dialog.ShowModal() == wxID_OK) {
@@ -777,6 +779,15 @@ private:
                }
        }
 
+       void tools_import_preferences()
+       {
+               FileDialog dialog(this, _("Specify ZIP file"), wxT("ZIP files (*.zip)|*.zip"), wxFD_OPEN, "Preferences");
+
+               if (dialog.show()) {
+                       Config::instance()->load_from_zip(dialog.path());
+               }
+       }
+
        void jobs_make_dcp ()
        {
                double required;
@@ -1116,9 +1127,9 @@ private:
                        error_dialog (this, _("You must enter a valid email address when sending translations, "
                                              "otherwise the DCP-o-matic maintainers cannot credit you or contact you with questions."));
                } else {
-                       Emailer emailer(dialog.email(), { "carl@dcpomatic.com" }, "DCP-o-matic translations", body);
+                       Email email(dialog.email(), { "carl@dcpomatic.com" }, "DCP-o-matic translations", body);
                        try {
-                               emailer.send ("main.carlh.net", 2525, EmailProtocol::STARTTLS);
+                               email.send("main.carlh.net", 2525, EmailProtocol::STARTTLS);
                        } catch (NetworkError& e) {
                                error_dialog (this, _("Could not send translations"), std_to_wx(e.what()));
                        }
@@ -1394,6 +1405,7 @@ private:
                add_item (tools, _("Restore default preferences"), ID_tools_restore_default_preferences, ALWAYS);
                tools->AppendSeparator ();
                add_item (tools, _("Export preferences..."), ID_tools_export_preferences, ALWAYS);
+               add_item (tools, _("Import preferences..."), ID_tools_import_preferences, ALWAYS);
 
                wxMenu* help = new wxMenu;
 #ifdef __WXOSX__
@@ -1414,7 +1426,8 @@ private:
        void config_changed (Config::Property what)
        {
                /* Instantly save any config changes when using the DCP-o-matic GUI */
-               if (what == Config::CINEMAS) {
+               switch (what) {
+               case Config::CINEMAS:
                        try {
                                Config::instance()->write_cinemas();
                        } catch (exception& e) {
@@ -1426,7 +1439,21 @@ private:
                                                )
                                        );
                        }
-               } else {
+                       break;
+               case Config::DKDM_RECIPIENTS:
+                       try {
+                               Config::instance()->write_dkdm_recipients();
+                       } catch (exception& e) {
+                               error_dialog (
+                                       this,
+                                       wxString::Format (
+                                               _("Could not write to DKDM recipients file at %s.  Your changes have not been saved."),
+                                               std_to_wx(Config::instance()->dkdm_recipients_file().string()).data()
+                                               )
+                                       );
+                       }
+                       break;
+               default:
                        try {
                                Config::instance()->write_config();
                        } catch (exception& e) {