Add wx_ptr and use it instead of ScopeGuard in a lot of places.
[dcpomatic.git] / src / tools / dcpomatic_kdm.cc
index 04b37b2c6bb1005b5c3fb03c1a1e3947c7dca71f..87a77c6260541c38b649fa71d729e3bfca239e9b 100644 (file)
@@ -33,6 +33,7 @@
 #include "wx/report_problem_dialog.h"
 #include "wx/screens_panel.h"
 #include "wx/static_text.h"
+#include "wx/wx_ptr.h"
 #include "wx/wx_signal_manager.h"
 #include "wx/wx_util.h"
 #include "lib/cinema.h"
@@ -47,7 +48,6 @@
 #include "lib/file_log.h"
 #include "lib/job_manager.h"
 #include "lib/kdm_with_metadata.h"
-#include "lib/scope_guard.h"
 #include "lib/screen.h"
 #include "lib/send_kdm_email_job.h"
 #include <dcp/encrypted_kdm.h>
@@ -266,18 +266,16 @@ private:
 
        void help_about ()
        {
-               auto d = new AboutDialog (this);
+               auto d = make_wx<AboutDialog>(this);
                d->ShowModal ();
-               d->Destroy ();
        }
 
        void help_report_a_problem ()
        {
-               auto d = new ReportProblemDialog (this, shared_ptr<Film>());
+               auto d = make_wx<ReportProblemDialog>(this, shared_ptr<Film>());
                if (d->ShowModal () == wxID_OK) {
                        d->report ();
                }
-               d->Destroy ();
        }
 
        void setup_menu (wxMenuBar* m)
@@ -512,10 +510,7 @@ private:
 
        void add_dkdm_clicked ()
        {
-               auto dialog = new FileDialog(this, _("Select DKDM file"), wxT("XML files|*.xml|All files|*.*"), wxFD_MULTIPLE, "AddDKDMPath");
-
-               ScopeGuard sg = [dialog]() { dialog->Destroy(); };
-
+               auto dialog = make_wx<FileDialog>(this, _("Select DKDM file"), wxT("XML files|*.xml|All files|*.*"), wxFD_MULTIPLE, "AddDKDMPath");
                if (!dialog->show()) {
                        return;
                }
@@ -566,17 +561,18 @@ private:
 
        void add_dkdm_folder_clicked ()
        {
-               auto d = new NewDKDMFolderDialog (this);
-               if (d->ShowModal() == wxID_OK) {
-                       auto new_dkdm = make_shared<DKDMGroup>(wx_to_std(d->get()));
-                       auto parent = dynamic_pointer_cast<DKDMGroup>(selected_dkdm());
-                       if (!parent) {
-                               parent = Config::instance()->dkdms ();
-                       }
-                       add_dkdm(new_dkdm, parent);
-                       update_dkdm_view();
+               auto d = make_wx<NewDKDMFolderDialog>(this);
+               if (d->ShowModal() != wxID_OK) {
+                       return;
+               }
+
+               auto new_dkdm = make_shared<DKDMGroup>(wx_to_std(d->get()));
+               auto parent = dynamic_pointer_cast<DKDMGroup>(selected_dkdm());
+               if (!parent) {
+                       parent = Config::instance()->dkdms ();
                }
-               d->Destroy ();
+               add_dkdm(new_dkdm, parent);
+               update_dkdm_view();
        }
 
        void update_dkdm_view()
@@ -716,7 +712,7 @@ private:
                        return;
                }
 
-               auto d = new wxFileDialog (
+               auto d = make_wx<wxFileDialog>(
                        this, _("Select DKDM File"), wxEmptyString, wxEmptyString, wxT("XML files (*.xml)|*.xml"),
                        wxFD_SAVE | wxFD_OVERWRITE_PROMPT
                        );
@@ -724,7 +720,6 @@ private:
                if (d->ShowModal() == wxID_OK) {
                        dkdm->dkdm().as_xml(wx_to_std(d->GetPath()));
                }
-               d->Destroy ();
        }
 
        void dkdm_search_changed()