diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-05-09 13:44:43 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-05-09 13:44:43 +0100 |
| commit | 0f42e807a707249cd1a60fa6e476cb47a4147c5a (patch) | |
| tree | 62307e5723e9787501ea05b76f5ded2b237c7075 /src/wx | |
| parent | 89ae13638097f259f3e50b4b61068dd23451107d (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/wscript | 2 |
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 |
