From 6b0a17aa9e87e914666e696b251555b934cfb811 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 24 Apr 2020 00:37:31 +0200 Subject: [PATCH] Add pre-running warning to disk writer. --- src/tools/dcpomatic_disk.cc | 8 +++++ src/wx/disk_warning_dialog.cc | 55 +++++++++++++++++++++++++++++++++++ src/wx/disk_warning_dialog.h | 32 ++++++++++++++++++++ src/wx/wscript | 1 + 4 files changed, 96 insertions(+) create mode 100644 src/wx/disk_warning_dialog.cc create mode 100644 src/wx/disk_warning_dialog.h diff --git a/src/tools/dcpomatic_disk.cc b/src/tools/dcpomatic_disk.cc index bf4d45e20..1d8fac83a 100644 --- a/src/tools/dcpomatic_disk.cc +++ b/src/tools/dcpomatic_disk.cc @@ -24,6 +24,7 @@ #include "wx/drive_wipe_warning_dialog.h" #include "wx/try_unmount_dialog.h" #include "wx/message_dialog.h" +#include "wx/disk_warning_dialog.h" #include "lib/file_log.h" #include "lib/dcpomatic_log.h" #include "lib/util.h" @@ -300,6 +301,12 @@ public: */ Config::drop (); + DiskWarningDialog* warning = new DiskWarningDialog (); + warning->ShowModal (); + if (!warning->confirmed()) { + return false; + } + _frame = new DOMFrame (_("DCP-o-matic Disk Writer")); SetTopWindow (_frame); @@ -311,6 +318,7 @@ public: catch (exception& e) { error_dialog (0, wxString::Format ("DCP-o-matic could not start."), std_to_wx(e.what())); + return false; } return true; diff --git a/src/wx/disk_warning_dialog.cc b/src/wx/disk_warning_dialog.cc new file mode 100644 index 000000000..46483f4a5 --- /dev/null +++ b/src/wx/disk_warning_dialog.cc @@ -0,0 +1,55 @@ +/* + Copyright (C) 2020 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + +#include "disk_warning_dialog.h" +#include "static_text.h" +#include "wx_util.h" + +DiskWarningDialog::DiskWarningDialog () + : wxDialog (0, wxID_ANY, _("Important notice")) +{ + wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); + wxStaticText* text = new StaticText (this, wxEmptyString, wxDefaultPosition, wxSize(400, 300)); + sizer->Add (text, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); + _yes = new wxTextCtrl (this, wxID_ANY); + sizer->Add (_yes, 0, wxALL, DCPOMATIC_DIALOG_BORDER); + + wxSizer* buttons = CreateSeparatedButtonSizer (wxOK | wxCANCEL); + if (buttons) { + sizer->Add(buttons, wxSizerFlags().Expand().DoubleBorder()); + } + + SetSizer (sizer); + sizer->Layout (); + sizer->SetSizeHints (this); + + text->SetLabelMarkup ( + _("The DCP-o-matic Disk Writer is\n\nALPHA-GRADE TEST SOFTWARE\n\n" + "and can\n\nDESTROY DATA!\n\n" + "Please do not continue unless Carl has asked you to test the software. " + "If you are sure you want to continue please type\n\nI am sure\n\ninto the box below, then click OK.") + ); +} + +bool +DiskWarningDialog::confirmed () const +{ + return _yes->GetValue() == "I am sure"; +} diff --git a/src/wx/disk_warning_dialog.h b/src/wx/disk_warning_dialog.h new file mode 100644 index 000000000..869092faa --- /dev/null +++ b/src/wx/disk_warning_dialog.h @@ -0,0 +1,32 @@ +/* + Copyright (C) 2020 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + +#include + +class DiskWarningDialog : public wxDialog +{ +public: + DiskWarningDialog (); + + bool confirmed () const; + +private: + wxTextCtrl* _yes; +}; diff --git a/src/wx/wscript b/src/wx/wscript index 6a9003ef1..f78a8c617 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -51,6 +51,7 @@ sources = """ credentials_download_certificate_panel.cc dcp_panel.cc dcpomatic_button.cc + disk_warning_dialog.cc drive_wipe_warning_dialog.cc email_dialog.cc image_sequence_dialog.cc -- 2.30.2