summaryrefslogtreecommitdiff
path: root/src/wx
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-05-09 13:44:43 +0100
committerCarl Hetherington <cth@carlh.net>2017-05-09 13:44:43 +0100
commit0f42e807a707249cd1a60fa6e476cb47a4147c5a (patch)
tree62307e5723e9787501ea05b76f5ded2b237c7075 /src/wx
parent89ae13638097f259f3e50b4b61068dd23451107d (diff)
Basica save-as (duplicate) (#746).
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/film_name_location_dialog.cc (renamed from src/wx/new_film_dialog.cc)72
-rw-r--r--src/wx/film_name_location_dialog.h (renamed from src/wx/new_film_dialog.h)7
-rw-r--r--src/wx/wscript2
3 files changed, 58 insertions, 23 deletions
diff --git a/src/wx/new_film_dialog.cc b/src/wx/film_name_location_dialog.cc
index ef072c9fc..d91171acb 100644
--- a/src/wx/new_film_dialog.cc
+++ b/src/wx/film_name_location_dialog.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -18,12 +18,13 @@
*/
-#include "lib/config.h"
-#include "new_film_dialog.h"
#include "wx_util.h"
+#include "film_name_location_dialog.h"
#ifdef DCPOMATIC_USE_OWN_PICKER
#include "dir_picker_ctrl.h"
#endif
+#include "lib/config.h"
+#include "lib/compose.hpp"
#include <wx/stdpaths.h>
#include <boost/filesystem.hpp>
#include <boost/foreach.hpp>
@@ -31,10 +32,10 @@
using namespace std;
using namespace boost;
-boost::optional<boost::filesystem::path> NewFilmDialog::_directory;
+boost::optional<boost::filesystem::path> FilmNameLocationDialog::_directory;
-NewFilmDialog::NewFilmDialog (wxWindow* parent)
- : TableDialog (parent, _("New Film"), 2, 1, true)
+FilmNameLocationDialog::FilmNameLocationDialog (wxWindow* parent, wxString title, bool offer_templates)
+ : TableDialog (parent, title, 2, 1, true)
{
add (_("Film name"), true);
_name = add (new wxTextCtrl (this, wxID_ANY));
@@ -54,36 +55,41 @@ NewFilmDialog::NewFilmDialog (wxWindow* parent)
_folder->SetPath (std_to_wx (_directory.get().string()));
add (_folder);
- _use_template = new wxCheckBox (this, wxID_ANY, _("From template"));
- add (_use_template);
- _template_name = new wxChoice (this, wxID_ANY);
- add (_template_name);
+ if (offer_templates) {
+ _use_template = new wxCheckBox (this, wxID_ANY, _("From template"));
+ add (_use_template);
+ _template_name = new wxChoice (this, wxID_ANY);
+ add (_template_name);
+ }
_name->SetFocus ();
- _template_name->Enable (false);
- BOOST_FOREACH (string i, Config::instance()->templates ()) {
- _template_name->Append (std_to_wx (i));
- }
+ if (offer_templates) {
+ _template_name->Enable (false);
+
+ BOOST_FOREACH (string i, Config::instance()->templates ()) {
+ _template_name->Append (std_to_wx (i));
+ }
- _use_template->Bind (wxEVT_CHECKBOX, bind (&NewFilmDialog::use_template_clicked, this));
+ _use_template->Bind (wxEVT_CHECKBOX, bind (&FilmNameLocationDialog::use_template_clicked, this));
+ }
layout ();
}
void
-NewFilmDialog::use_template_clicked ()
+FilmNameLocationDialog::use_template_clicked ()
{
_template_name->Enable (_use_template->GetValue ());
}
-NewFilmDialog::~NewFilmDialog ()
+FilmNameLocationDialog::~FilmNameLocationDialog ()
{
_directory = wx_to_std (_folder->GetPath ());
}
boost::filesystem::path
-NewFilmDialog::path () const
+FilmNameLocationDialog::path () const
{
filesystem::path p;
p /= wx_to_std (_folder->GetPath ());
@@ -92,7 +98,7 @@ NewFilmDialog::path () const
}
optional<string>
-NewFilmDialog::template_name () const
+FilmNameLocationDialog::template_name () const
{
if (!_use_template->GetValue() || _template_name->GetSelection() == -1) {
return optional<string> ();
@@ -100,3 +106,31 @@ NewFilmDialog::template_name () const
return wx_to_std (_template_name->GetString(_template_name->GetSelection()));
}
+
+/** Check the path that is in our controls and offer confirmations or errors as required.
+ * @return true if the path should be used.
+ */
+bool
+FilmNameLocationDialog::check_path ()
+{
+ if (boost::filesystem::is_directory (path()) && !boost::filesystem::is_empty(path())) {
+ if (!confirm_dialog (
+ this,
+ std_to_wx (
+ String::compose (wx_to_std (_("The directory %1 already exists and is not empty. "
+ "Are you sure you want to use it?")),
+ path().string().c_str())
+ )
+ )) {
+ return false;
+ }
+ } else if (boost::filesystem::is_regular_file (path())) {
+ error_dialog (
+ this,
+ String::compose (wx_to_std (_("%1 already exists as a file, so you cannot use it for a film.")), path().c_str())
+ );
+ return false;
+ }
+
+ return true;
+}
diff --git a/src/wx/new_film_dialog.h b/src/wx/film_name_location_dialog.h
index 81dd29fea..cfa296701 100644
--- a/src/wx/new_film_dialog.h
+++ b/src/wx/film_name_location_dialog.h
@@ -25,13 +25,14 @@
class DirPickerCtrl;
-class NewFilmDialog : public TableDialog
+class FilmNameLocationDialog : public TableDialog
{
public:
- NewFilmDialog (wxWindow *);
- ~NewFilmDialog ();
+ FilmNameLocationDialog (wxWindow *, wxString title, bool offer_templates);
+ ~FilmNameLocationDialog ();
boost::filesystem::path path () const;
+ bool check_path ();
boost::optional<std::string> template_name () const;
private:
diff --git a/src/wx/wscript b/src/wx/wscript
index 332a04ac5..8297f37c9 100644
--- a/src/wx/wscript
+++ b/src/wx/wscript
@@ -51,6 +51,7 @@ sources = """
download_certificate_panel.cc
file_picker_ctrl.cc
film_editor.cc
+ film_name_location_dialog.cc
film_viewer.cc
filter_dialog.cc
filter_editor.cc
@@ -70,7 +71,6 @@ sources = """
move_to_dialog.cc
nag_dialog.cc
name_format_editor.cc
- new_film_dialog.cc
normal_job_view.cc
playhead_to_timecode_dialog.cc
playhead_to_frame_dialog.cc