Add Uwe Dittes as translator.
[dcpomatic.git] / src / wx / save_template_dialog.cc
index eff61a2563a6e505fc40c29859ea810504f5464b..6a6644efee2d6e9ade1e4e1deba788edd104f2fd 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2016 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2016-2020 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 #include "save_template_dialog.h"
 #include "wx_util.h"
-#include <boost/foreach.hpp>
+#include "lib/config.h"
 
 using std::string;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 
 SaveTemplateDialog::SaveTemplateDialog (wxWindow* parent)
        : TableDialog (parent, _("Save template"), 2, 1, true)
@@ -31,10 +34,42 @@ SaveTemplateDialog::SaveTemplateDialog (wxWindow* parent)
        _name = add (new wxTextCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (300, -1)));
        _name->SetFocus ();
        layout ();
+
+       wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
+       ok->Bind (wxEVT_BUTTON, boost::bind(&SaveTemplateDialog::check, this, _1));
+
+       _name->Bind (wxEVT_TEXT, boost::bind(&SaveTemplateDialog::setup_sensitivity, this));
+
+       setup_sensitivity ();
+}
+
+
+void
+SaveTemplateDialog::setup_sensitivity ()
+{
+       wxButton* ok = dynamic_cast<wxButton *>(FindWindowById(wxID_OK, this));
+       if (ok) {
+               ok->Enable (!_name->GetValue().IsEmpty());
+       }
 }
 
+
 string
 SaveTemplateDialog::name () const
 {
        return wx_to_std (_name->GetValue ());
 }
+
+void
+SaveTemplateDialog::check (wxCommandEvent& ev)
+{
+       bool ok = true;
+
+       if (Config::instance()->existing_template (wx_to_std (_name->GetValue ()))) {
+               ok = confirm_dialog (this, _("There is already a template with this name.  Do you want to overwrite it?"));
+       }
+
+       if (ok) {
+               ev.Skip ();
+       }
+}