*/
+#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>
-DCPOMATIC_DISABLE_WARNINGS
+LIBDCP_DISABLE_WARNINGS
#include <wx/filepicker.h>
-DCPOMATIC_ENABLE_WARNINGS
+LIBDCP_ENABLE_WARNINGS
#include <wx/wx.h>
#include <boost/bind/bind.hpp>
#include <boost/filesystem.hpp>
}
-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)
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 wxBoxSizer (wxHORIZONTAL);
+ auto output = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+ output->AddGrowableCol (1, 1);
+
+ add_label_to_sizer (output, overall_panel, _("Annotation text"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
+ _annotation_text = new wxTextCtrl (overall_panel, wxID_ANY, wxT(""));
+ output->Add (_annotation_text, 1, wxEXPAND);
+
add_label_to_sizer (output, overall_panel, _("Output DCP folder"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
_output = new DirPickerCtrl (overall_panel);
output->Add (_output, 1, wxEXPAND);
}
auto jm = JobManager::instance ();
- jm->add (make_shared<CombineDCPJob>(_inputs, output));
- bool const ok = display_progress (_("DCP-o-matic Combine"), _("Combining DCPs"));
+ jm->add (make_shared<CombineDCPJob>(_inputs, output, wx_to_std(_annotation_text->GetValue())));
+ bool const ok = display_progress(_("DCP-o-matic Combiner"), _("Combining DCPs"));
if (!ok) {
return;
}
}
EditableList<boost::filesystem::path, DirDialogWrapper>* _input;
+ wxTextCtrl* _annotation_text = nullptr;
DirPickerCtrl* _output;
vector<boost::filesystem::path> _inputs;
Button* _combine;
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"));
*/
Config::drop ();
- _frame = new DOMFrame (_("DCP-o-matic DCP Combiner"));
+ _frame = new DOMFrame(_("DCP-o-matic Combiner"));
SetTopWindow (_frame);
_frame->Show ();
}
catch (exception& e)
{
- error_dialog (nullptr, wxString::Format ("DCP-o-matic DCP Combiner could not start."), std_to_wx(e.what()));
+ error_dialog(nullptr, wxString::Format("DCP-o-matic Combiner could not start."), std_to_wx(e.what()));
return false;
}
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)