X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Fnag_dialog.cc;h=abe460869b88e477ad2218729c9f9ce92999eb85;hp=69b64cb400a9c79c7c454c7b77c82c251b5a1900;hb=0a3f387f5d39da2ca38ec90a9593c1b598040dd7;hpb=bb80004d3201047a33dd251ea6c3f6de2b47cb3b diff --git a/src/wx/nag_dialog.cc b/src/wx/nag_dialog.cc index 69b64cb40..abe460869 100644 --- a/src/wx/nag_dialog.cc +++ b/src/wx/nag_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Carl Hetherington + Copyright (C) 2017-2018 Carl Hetherington This file is part of DCP-o-matic. @@ -20,29 +20,32 @@ #include "nag_dialog.h" #include "wx_util.h" -#include +#include "static_text.h" +#include "check_box.h" #include using boost::shared_ptr; -NagDialog::NagDialog (wxWindow* parent, Config::Nag nag, wxString message) +NagDialog::NagDialog (wxWindow* parent, Config::Nag nag, wxString message, bool can_cancel) : wxDialog (parent, wxID_ANY, _("Important notice")) , _nag (nag) { wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL); - _text = new wxStaticText (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (400, 300)); - sizer->Add (_text, 1, wxEXPAND | wxALL, 6); + _text = new StaticText (this, wxEmptyString, wxDefaultPosition, wxSize (400, 300)); + sizer->Add (_text, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); - wxCheckBox* b = new wxCheckBox (this, wxID_ANY, _("Don't show this message again")); - b->SetValue (true); - Config::instance()->set_nagged (_nag, true); + wxCheckBox* b = new CheckBox (this, _("Don't show this message again")); sizer->Add (b, 0, wxALL, 6); b->Bind (wxEVT_CHECKBOX, bind (&NagDialog::shut_up, this, _1)); - wxStdDialogButtonSizer* buttons = CreateStdDialogButtonSizer (0); - sizer->Add (CreateSeparatedSizer(buttons), wxSizerFlags().Expand().DoubleBorder()); - buttons->SetAffirmativeButton (new wxButton (this, wxID_OK)); - buttons->Realize (); + int flags = wxOK; + if (can_cancel) { + flags |= wxCANCEL; + } + wxSizer* buttons = CreateSeparatedButtonSizer (flags); + if (buttons) { + sizer->Add(buttons, wxSizerFlags().Expand().DoubleBorder()); + } SetSizer (sizer); sizer->Layout (); @@ -57,12 +60,17 @@ NagDialog::shut_up (wxCommandEvent& ev) Config::instance()->set_nagged (_nag, ev.IsChecked()); } -void -NagDialog::maybe_nag (wxWindow* parent, Config::Nag nag, wxString message) +/** @return true if the user clicked Cancel */ +bool +NagDialog::maybe_nag (wxWindow* parent, Config::Nag nag, wxString message, bool can_cancel) { - if (!Config::instance()->nagged (nag)) { - NagDialog* d = new NagDialog (parent, nag, message); - d->ShowModal (); - d->Destroy (); + if (Config::instance()->nagged(nag)) { + return false; } + + NagDialog* d = new NagDialog (parent, nag, message, can_cancel); + int const r = d->ShowModal(); + d->Destroy (); + + return r == wxID_CANCEL; }