Remember paths in the add input dir picker in the combiner.
[dcpomatic.git] / src / tools / dcpomatic_combiner.cc
index 40587e23ad4b5f9fae1ea114fadc7ca824751d6b..8e7337f65b06e95748ec78c21f22bd129ba6c410 100644 (file)
 */
 
 
+#include "wx/dir_dialog.h"
 #include "wx/dir_picker_ctrl.h"
 #include "wx/editable_list.h"
 #include "wx/wx_signal_manager.h"
 #include "lib/combine_dcp_job.h"
 #include "lib/config.h"
+#include "lib/constants.h"
 #include "lib/cross.h"
 #include "lib/job_manager.h"
-#include "lib/util.h"
 #include <dcp/combine.h>
 LIBDCP_DISABLE_WARNINGS
 #include <wx/filepicker.h>
@@ -56,18 +57,23 @@ display_string (boost::filesystem::path p, int)
 }
 
 
-class DirDialogWrapper : public wxDirDialog
+class DirDialogWrapper : public DirDialog
 {
 public:
        DirDialogWrapper (wxWindow* parent)
-               : wxDirDialog (parent, _("Choose a DCP folder"), wxT(""), wxDD_DIR_MUST_EXIST)
+               : DirDialog (parent, _("Choose a DCP folder"), wxDD_DIR_MUST_EXIST, "AddCombinerInputPath")
        {
 
        }
 
-       boost::filesystem::path get () const
+       virtual int ShowModal() override
        {
-               return boost::filesystem::path(wx_to_std(GetPath()));
+               return DirDialog::show() ? wxID_OK : wxID_CANCEL;
+       }
+
+       optional<boost::filesystem::path> get () const
+       {
+               return path();
        }
 
        void set (boost::filesystem::path)
@@ -100,8 +106,8 @@ public:
                        boost::bind(&DOMFrame::inputs, this),
                        boost::bind(&DOMFrame::set_inputs, this, _1),
                        &display_string,
-                       false,
-                       true
+                       EditableListTitle::VISIBLE,
+                       EditableListButton::NEW | EditableListButton::REMOVE
                        );
 
                auto output = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
@@ -210,7 +216,7 @@ public:
        bool OnInit () override
        {
                try {
-                       Config::FailedToLoad.connect (boost::bind (&App::config_failed_to_load, this));
+                       Config::FailedToLoad.connect(boost::bind(&App::config_failed_to_load, this, _1));
                        Config::Warning.connect (boost::bind (&App::config_warning, this, _1));
 
                        SetAppName (_("DCP-o-matic Combiner"));
@@ -264,9 +270,9 @@ public:
                return true;
        }
 
-       void config_failed_to_load ()
+       void config_failed_to_load(Config::LoadFailure what)
        {
-               message_dialog (_frame, _("The existing configuration failed to load.  Default values will be used instead.  These may take a short time to create."));
+               report_config_load_failure(_frame, what);
        }
 
        void config_warning (string m)