Fix #124 (allow use of existing directories for new films).
authorCarl Hetherington <cth@carlh.net>
Wed, 24 Apr 2013 21:30:05 +0000 (22:30 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 24 Apr 2013 21:30:05 +0000 (22:30 +0100)
ChangeLog
src/tools/dvdomatic.cc
src/wx/wx_util.cc
src/wx/wx_util.h

index ef8fd96c1b808383695a400c5798a18d770f134b..8cabafd0bf76ef787a213f2b607e968f70d34b9b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-04-24  Carl Hetherington  <cth@carlh.net>
+
+       * Allow use of existing empty directories for new films (without
+       confirmation) and existing non-empty directories (with confirmation)
+       (#124).
+
 2013-04-23  Carl Hetherington  <cth@carlh.net>
 
        * Version 0.86 released.
index 2a995bee8d79b88fd478d6a8a523b0c74913a6ba..b161ac7e33735fe07f6eb6d568c553cf0fd2b08a 100644 (file)
@@ -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 ();
index 720a058cb771425b67f0828aed0ba7f9fb8deb63..77f5da29356ce89f4791d9d16fb28c9da9169b91 100644 (file)
@@ -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.
  */
index bff3d7982edf0b74d70d1cb4f6f030b26a9f9d2a..b3ab706df0687eb1810776a8d7d9144ced69e97b 100644 (file)
@@ -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);