#include "wx/recreate_chain_dialog.h"
#include "wx/about_dialog.h"
#include "wx/kdm_dialog.h"
+#include "wx/dkdm_dialog.h"
#include "wx/self_dkdm_dialog.h"
#include "wx/servers_list_dialog.h"
#include "wx/hints_dialog.h"
#include "lib/job_manager.h"
#include "lib/exceptions.h"
#include "lib/cinema.h"
-#include "lib/screen_kdm.h"
+#include "lib/kdm_with_metadata.h"
#include "lib/send_kdm_email_job.h"
#include "lib/encode_server_finder.h"
#include "lib/update_checker.h"
#include "lib/cross.h"
#include "lib/content_factory.h"
#include "lib/compose.hpp"
-#include "lib/cinema_kdms.h"
#include "lib/dcpomatic_socket.h"
#include "lib/hints.h"
#include "lib/dcp_content.h"
#include <wx/preferences.h>
#include <wx/splash.h>
#include <wx/wxhtml.h>
+#ifdef __WXGTK__
+#include <X11/Xlib.h>
+#endif
#ifdef __WXMSW__
#include <shellapi.h>
#endif
ID_jobs_make_dcp,
ID_jobs_make_dcp_batch,
ID_jobs_make_kdms,
+ ID_jobs_make_dkdms,
ID_jobs_make_self_dkdm,
ID_jobs_export,
ID_jobs_send_dcp_to_tms,
, _servers_list_dialog (0)
, _config_dialog (0)
, _kdm_dialog (0)
+ , _dkdm_dialog (0)
, _templates_dialog (0)
, _file_menu (0)
, _history_items (0)
Bind (wxEVT_MENU, boost::bind (&DOMFrame::content_scale_to_fit_height, this), ID_content_scale_to_fit_height);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dcp, this), ID_jobs_make_dcp);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_kdms, this), ID_jobs_make_kdms);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dkdms, this), ID_jobs_make_dkdms);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dcp_batch, this), ID_jobs_make_dcp_batch);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_self_dkdm, this), ID_jobs_make_self_dkdm);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_export, this), ID_jobs_export);
JobManager::instance()->add(shared_ptr<Job>(new CheckContentChangeJob(film)));
}
- catch (std::exception& e) {
- wxString p = std_to_wx (file.string ());
- wxCharBuffer b = p.ToUTF8 ();
- error_dialog (this, wxString::Format (_("Could not open film at %s"), p.data()), std_to_wx (e.what()));
+ catch (FileNotFoundError& e) {
+ boost::filesystem::path const dir = e.file().parent_path();
+ if (boost::filesystem::exists(dir / "ASSETMAP") || boost::filesystem::exists(dir / "ASSETMAP.xml")) {
+ error_dialog (
+ this, _("Could not open this folder as a DCP-o-matic project."),
+ _("It looks like you are trying to open a DCP. File -> Open is for loading DCP-o-matic projects, not DCPs. To import a DCP, create a new project with File -> New and then click the \"Add DCP...\" button.")
+ );
+ } else {
+ wxString const p = std_to_wx(file.string ());
+ error_dialog (this, wxString::Format(_("Could not open film at %s"), p.data()), std_to_wx(e.what()));
+ }
+
+ } catch (std::exception& e) {
+ wxString const p = std_to_wx (file.string());
+ error_dialog (this, wxString::Format(_("Could not open film at %s"), p.data()), std_to_wx(e.what()));
}
void set_film (shared_ptr<Film> film)
_kdm_dialog->Show ();
}
+ void jobs_make_dkdms ()
+ {
+ if (!_film) {
+ return;
+ }
+
+ if (_dkdm_dialog) {
+ _dkdm_dialog->Destroy ();
+ _dkdm_dialog = 0;
+ }
+
+ _dkdm_dialog = new DKDMDialog (this, _film);
+ _dkdm_dialog->Show ();
+ }
+
/** @return false if we succeeded, true if not */
bool send_to_other_tool (int port, function<void(boost::filesystem::path)> start, string message)
{
);
- dcp::LocalTime from (Config::instance()->decryption_chain()->leaf().not_before());
- from.add_months (1);
- dcp::LocalTime to (Config::instance()->decryption_chain()->leaf().not_after());
- to.add_months (-1);
+ dcp::LocalTime from (Config::instance()->signer_chain()->leaf().not_before());
+ from.add_minutes (1);
+ dcp::LocalTime to (Config::instance()->signer_chain()->leaf().not_after());
+ to.add_minutes (-1);
optional<dcp::EncryptedKDM> kdm;
try {
add_item (jobs_menu, _("Make DCP in &batch converter\tCtrl-B"), ID_jobs_make_dcp_batch, NEEDS_FILM | NOT_DURING_DCP_CREATION);
jobs_menu->AppendSeparator ();
add_item (jobs_menu, _("Make &KDMs...\tCtrl-K"), ID_jobs_make_kdms, NEEDS_FILM);
+ add_item (jobs_menu, _("Make &DKDMs...\tCtrl-D"), ID_jobs_make_dkdms, NEEDS_FILM);
add_item (jobs_menu, _("Make DKDM for DCP-o-matic..."), ID_jobs_make_self_dkdm, NEEDS_FILM | NEEDS_ENCRYPTION);
jobs_menu->AppendSeparator ();
add_item (jobs_menu, _("Export...\tCtrl-E"), ID_jobs_export, NEEDS_FILM);
ServersListDialog* _servers_list_dialog;
wxPreferencesEditor* _config_dialog;
KDMDialog* _kdm_dialog;
+ DKDMDialog* _dkdm_dialog;
TemplatesDialog* _templates_dialog;
wxMenu* _file_menu;
shared_ptr<Film> _film;
{ wxCMD_LINE_OPTION, "c", "content", "add content file / directory", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_OPTION, "d", "dcp", "add content DCP", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "v", "version", "show DCP-o-matic version", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
+ { wxCMD_LINE_OPTION, "", "config", "directory containing config.xml and cinemas.xml", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_PARAM, 0, 0, "film to load or create", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType (0), 0 }
};
: wxApp ()
, _frame (0)
, _splash (0)
- {}
+ {
+#ifdef DCPOMATIC_LINUX
+ XInitThreads ();
+#endif
+ }
private:
_dcp_to_add = wx_to_std (dcp);
}
+ wxString config;
+ if (parser.Found (wxT("config"), &config)) {
+ State::override_path = wx_to_std (config);
+ }
+
return true;
}