From ccc07eebc492d74c351c235584fd708c46b5b656 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 24 Apr 2013 22:30:05 +0100 Subject: [PATCH] Fix #124 (allow use of existing directories for new films). --- ChangeLog | 6 ++++++ src/tools/dvdomatic.cc | 14 +++++++++++--- src/wx/wx_util.cc | 10 ++++++++++ src/wx/wx_util.h | 1 + 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ef8fd96c1..8cabafd0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-04-24 Carl Hetherington + + * Allow use of existing empty directories for new films (without + confirmation) and existing non-empty directories (with confirmation) + (#124). + 2013-04-23 Carl Hetherington * Version 0.86 released. diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index 2a995bee8..b161ac7e3 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -301,9 +301,17 @@ private: if (r == wxID_OK) { - if (boost::filesystem::exists (d->get_path())) { - error_dialog (this, std_to_wx (String::compose (wx_to_std (_("The directory %1 already exists.")), d->get_path().c_str()))); - return; + if (boost::filesystem::exists (d->get_path()) && !boost::filesystem::is_empty(d->get_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?")), + d->get_path().c_str()) + ) + )) { + return; + } } maybe_save_then_delete_film (); diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 720a058cb..77f5da293 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -63,6 +63,16 @@ error_dialog (wxWindow* parent, wxString m) d->Destroy (); } +bool +confirm_dialog (wxWindow* parent, wxString m) +{ + wxMessageDialog* d = new wxMessageDialog (parent, m, _("DVD-o-matic"), wxYES_NO | wxICON_QUESTION); + int const r = d->ShowModal (); + d->Destroy (); + return r == wxID_YES; +} + + /** @param s wxWidgets string. * @return Corresponding STL string. */ diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h index bff3d7982..b3ab706df 100644 --- a/src/wx/wx_util.h +++ b/src/wx/wx_util.h @@ -31,6 +31,7 @@ class wxGridBagSizer; */ extern void error_dialog (wxWindow *, wxString); +extern bool confirm_dialog (wxWindow *, wxString); extern wxStaticText* add_label_to_sizer (wxSizer *, wxWindow *, wxString, int prop = 0); extern wxStaticText* add_label_to_grid_bag_sizer (wxGridBagSizer *, wxWindow *, wxString, wxGBPosition, wxGBSpan span = wxDefaultSpan); extern std::string wx_to_std (wxString); -- 2.30.2