X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ffilm_name_location_dialog.cc;h=5c6f97f995d7b4c239dbb40ddface8d81d79aa75;hb=d0188ed3e1ea5536e729e93b87d54114368120ac;hp=2c9b165d00db2671a046b26151b044a219c86b5c;hpb=50aaa3789864c7330ee92e7e89ad5b6cc2155a82;p=dcpomatic.git diff --git a/src/wx/film_name_location_dialog.cc b/src/wx/film_name_location_dialog.cc index 2c9b165d0..5c6f97f99 100644 --- a/src/wx/film_name_location_dialog.cc +++ b/src/wx/film_name_location_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2020 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,22 +18,29 @@ */ -#include "wx_util.h" -#include "film_name_location_dialog.h" + #include "check_box.h" +#include "film_name_location_dialog.h" +#include "wx_util.h" +/* This must come after wx_util.h as it defines DCPOMATIC_USE_OWN_PICKER */ #ifdef DCPOMATIC_USE_OWN_PICKER #include "dir_picker_ctrl.h" #endif -#include "lib/config.h" #include "lib/compose.hpp" +#include "lib/config.h" +#include +LIBDCP_DISABLE_WARNINGS #include +LIBDCP_ENABLE_WARNINGS #include -#include + using namespace std; using namespace boost; -boost::optional FilmNameLocationDialog::_directory; + +optional FilmNameLocationDialog::_directory; + FilmNameLocationDialog::FilmNameLocationDialog (wxWindow* parent, wxString title, bool offer_templates) : TableDialog (parent, title, 2, 1, true) @@ -45,15 +52,14 @@ FilmNameLocationDialog::FilmNameLocationDialog (wxWindow* parent, wxString title #ifdef DCPOMATIC_USE_OWN_PICKER _folder = new DirPickerCtrl (this); + _folder->Changed.connect (bind(&FilmNameLocationDialog::folder_changed, this)); #else _folder = new wxDirPickerCtrl (this, wxID_ANY, wxEmptyString, wxDirSelectorPromptStr, wxDefaultPosition, wxSize (300, -1)); + _folder->Bind (wxEVT_DIRPICKER_CHANGED, bind(&FilmNameLocationDialog::folder_changed, this)); #endif - if (!_directory) { - _directory = Config::instance()->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())); - } - - _folder->SetPath (std_to_wx (_directory.get().string())); + auto dir = _directory.get_value_or(Config::instance()->default_directory_or(wx_to_std(wxStandardPaths::Get().GetDocumentsDir()))); + _folder->SetPath (std_to_wx(dir.string())); add (_folder); if (offer_templates) { @@ -68,11 +74,11 @@ FilmNameLocationDialog::FilmNameLocationDialog (wxWindow* parent, wxString title if (offer_templates) { _template_name->Enable (false); - BOOST_FOREACH (string i, Config::instance()->templates ()) { - _template_name->Append (std_to_wx (i)); + for (auto i: Config::instance()->templates ()) { + _template_name->Append (std_to_wx(i)); } - _use_template->Bind (wxEVT_CHECKBOX, bind (&FilmNameLocationDialog::use_template_clicked, this)); + _use_template->bind(&FilmNameLocationDialog::use_template_clicked, this); } layout (); @@ -85,7 +91,7 @@ FilmNameLocationDialog::FilmNameLocationDialog (wxWindow* parent, wxString title void FilmNameLocationDialog::setup_sensitivity () { - wxButton* ok = dynamic_cast(FindWindowById(wxID_OK, this)); + auto ok = dynamic_cast(FindWindowById(wxID_OK, this)); if (ok) { ok->Enable (!_name->GetValue().IsEmpty()); } @@ -95,57 +101,63 @@ FilmNameLocationDialog::setup_sensitivity () void FilmNameLocationDialog::use_template_clicked () { - _template_name->Enable (_use_template->GetValue ()); + _template_name->Enable (_use_template->GetValue()); } -FilmNameLocationDialog::~FilmNameLocationDialog () + +void +FilmNameLocationDialog::folder_changed () { - _directory = wx_to_std (_folder->GetPath ()); + _directory = wx_to_std (_folder->GetPath()); } -boost::filesystem::path + +filesystem::path FilmNameLocationDialog::path () const { filesystem::path p; - p /= wx_to_std (_folder->GetPath ()); - p /= wx_to_std (_name->GetValue ()); + p /= wx_to_std (_folder->GetPath()); + p /= wx_to_std (_name->GetValue()); return p; } + optional FilmNameLocationDialog::template_name () const { if (!_use_template->GetValue() || _template_name->GetSelection() == -1) { - return optional (); + return {}; } 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 (filesystem::is_directory(path()) && !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. " + 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()) + path().string().c_str()) ) )) { return false; } - } else if (boost::filesystem::is_regular_file (path())) { + } 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()) + 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; } +