X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fdownload_certificate_dialog.cc;h=e18723a4a08213a4e59e42c0431b592a8393e5ba;hb=1062a2928a723a2be4aff876d44213ebe8af7d5e;hp=5a621d26fafbf614e05da44a1241f9266f87cf19;hpb=1a14ae26a73489ae8990bfda1a432d229c3bb2d5;p=dcpomatic.git diff --git a/src/wx/download_certificate_dialog.cc b/src/wx/download_certificate_dialog.cc index 5a621d26f..e18723a4a 100644 --- a/src/wx/download_certificate_dialog.cc +++ b/src/wx/download_certificate_dialog.cc @@ -1,27 +1,29 @@ /* Copyright (C) 2014-2015 Carl Hetherington - This program is free software; you can redistribute it and/or modify + 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. - This program is distributed in the hope that it will be useful, + 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 this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ -#include "doremi_certificate_panel.h" -#include "dolby_certificate_panel.h" +#include "dolby_doremi_certificate_panel.h" #include "download_certificate_dialog.h" #include "wx_util.h" +using boost::optional; + DownloadCertificateDialog::DownloadCertificateDialog (wxWindow* parent) : wxDialog (parent, wxID_ANY, _("Download certificate")) { @@ -30,12 +32,9 @@ DownloadCertificateDialog::DownloadCertificateDialog (wxWindow* parent) _notebook = new wxNotebook (this, wxID_ANY); sizer->Add (_notebook, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); - _pages.push_back (new DoremiCertificatePanel (_notebook, this)); - _setup.push_back (false); - _notebook->AddPage (_pages.back(), _("Doremi"), true); - _pages.push_back (new DolbyCertificatePanel (_notebook, this)); + _pages.push_back (new DolbyDoremiCertificatePanel (_notebook, this)); _setup.push_back (false); - _notebook->AddPage (_pages.back(), _("Dolby"), false); + _notebook->AddPage (_pages.back(), _("Dolby / Doremi"), true); _download = new wxButton (this, wxID_ANY, _("Download")); sizer->Add (_download, 0, wxEXPAND | wxALL, DCPOMATIC_SIZER_GAP); @@ -54,11 +53,17 @@ DownloadCertificateDialog::DownloadCertificateDialog (wxWindow* parent) SetSizerAndFit (sizer); - _notebook->Bind (wxEVT_NOTEBOOK_PAGE_CHANGED, boost::bind (&DownloadCertificateDialog::page_changed, this)); - _download->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DownloadCertificateDialog::download, this)); + _notebook->Bind (wxEVT_NOTEBOOK_PAGE_CHANGED, &DownloadCertificateDialog::page_changed, this); + _download->Bind (wxEVT_BUTTON, boost::bind (&DownloadCertificateDialog::download, this)); _download->Enable (false); - page_changed (); + wxNotebookEvent ev; + page_changed (ev); +} + +DownloadCertificateDialog::~DownloadCertificateDialog () +{ + _notebook->Unbind (wxEVT_NOTEBOOK_PAGE_CHANGED, &DownloadCertificateDialog::page_changed, this); } void @@ -70,21 +75,31 @@ DownloadCertificateDialog::download () dcp::Certificate DownloadCertificateDialog::certificate () const { - return _pages[_notebook->GetSelection()]->certificate (); + optional c = _pages[_notebook->GetSelection()]->certificate (); + DCPOMATIC_ASSERT (c); + return c.get (); } void DownloadCertificateDialog::setup_sensitivity () { - _download->Enable (_pages[_notebook->GetSelection()]->ready_to_download ()); + DownloadCertificatePanel* p = _pages[_notebook->GetSelection()]; + _download->Enable (p->ready_to_download ()); + wxButton* ok = dynamic_cast (FindWindowById (wxID_OK, this)); + if (ok) { + ok->Enable (static_cast(p->certificate ())); + } + } void -DownloadCertificateDialog::page_changed () +DownloadCertificateDialog::page_changed (wxNotebookEvent &) { int const n = _notebook->GetSelection(); if (!_setup[n]) { _pages[n]->setup (); _setup[n] = true; } + + setup_sensitivity (); }