X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fgain_calculator_dialog.cc;h=62708fd224526d64f2b455c719c4a6e8ba2d468f;hb=2eb7ac323df51a65df1a7cf856058fb4cf0bc020;hp=8818aee9e3bd590591a33343b175d5063639069d;hpb=3828baf56467224f5d44049bf1e7a7ed11f43a05;p=dcpomatic.git diff --git a/src/wx/gain_calculator_dialog.cc b/src/wx/gain_calculator_dialog.cc index 8818aee9e..62708fd22 100644 --- a/src/wx/gain_calculator_dialog.cc +++ b/src/wx/gain_calculator_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2016 Carl Hetherington + Copyright (C) 2012-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -20,36 +20,53 @@ #include "gain_calculator_dialog.h" #include "wx_util.h" -#include "lib/util.h" +#include "lib/cinema_sound_processor.h" + + +using boost::optional; + GainCalculatorDialog::GainCalculatorDialog (wxWindow* parent) : TableDialog (parent, _("Gain Calculator"), 2, 1, true) { + add (_("Sound processor"), true); + _processor = add (new wxChoice(this, wxID_ANY)); + add (_("I want to play this back at fader"), true); _wanted = add (new wxTextCtrl (this, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize, 0, wxTextValidator (wxFILTER_NUMERIC))); add (_("But I have to use fader"), true); _actual = add (new wxTextCtrl (this, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize, 0, wxTextValidator (wxFILTER_NUMERIC))); - layout (); -} - -float -GainCalculatorDialog::wanted_fader () const -{ - if (_wanted->GetValue().IsEmpty()) { - return 0; + for (auto i: CinemaSoundProcessor::all()) { + _processor->Append (std_to_wx(i->name())); } - return relaxed_string_to_float (wx_to_std (_wanted->GetValue ())); + _processor->SetSelection (0); + + layout (); } -float -GainCalculatorDialog::actual_fader () const +optional +GainCalculatorDialog::db_change () const { - if (_actual->GetValue().IsEmpty()) { - return 0; + if (_wanted->GetValue().IsEmpty() || _actual->GetValue().IsEmpty()) { + return {}; } - return relaxed_string_to_float (wx_to_std (_actual->GetValue ())); + auto relaxed_string_to_float = [](std::string s) { + try { + boost::algorithm::replace_all(s, ",", "."); + return boost::lexical_cast(s); + } catch (boost::bad_lexical_cast &) { + boost::algorithm::replace_all(s, ".", ","); + return boost::lexical_cast(s); + } + }; + + return CinemaSoundProcessor::from_index( + _processor->GetSelection())->db_for_fader_change( + relaxed_string_to_float(wx_to_std(_wanted->GetValue())), + relaxed_string_to_float(wx_to_std(_actual->GetValue())) + ); }