#include "lib/dcp_content.h"
#include "lib/ffmpeg_audio_stream.h"
#include "lib/ffmpeg_content.h"
+#include "lib/film.h"
#include "lib/job_manager.h"
#include "lib/maths_util.h"
#include <dcp/warnings.h>
_fade_out_label = create_label (this, _("Fade out"), true);
_fade_out = new Timecode<ContentTime> (this);
- _use_same_fades_as_video = new wxCheckBox (this, wxID_ANY, _("Use same fades as video"));
+ _use_same_fades_as_video = new CheckBox(this, _("Use same fades as video"));
_mapping = new AudioMappingView (this, _("Content"), _("content"), _("DCP"), _("DCP"));
_sizer->Add (_mapping, 1, wxEXPAND | wxALL, 6);
_delay->wrapped()->SetRange (-1000, 1000);
content_selection_changed ();
- film_changed (Film::Property::AUDIO_CHANNELS);
- film_changed (Film::Property::VIDEO_FRAME_RATE);
- film_changed (Film::Property::REEL_TYPE);
+ film_changed(FilmProperty::AUDIO_CHANNELS);
+ film_changed(FilmProperty::VIDEO_FRAME_RATE);
+ film_changed(FilmProperty::REEL_TYPE);
- _reference->Bind (wxEVT_CHECKBOX, boost::bind (&AudioPanel::reference_clicked, this));
+ _reference->bind(&AudioPanel::reference_clicked, this);
_show->Bind (wxEVT_BUTTON, boost::bind (&AudioPanel::show_clicked, this));
_gain_calculate_button->Bind (wxEVT_BUTTON, boost::bind (&AudioPanel::gain_calculate_button_clicked, this));
_fade_in->Changed.connect (boost::bind(&AudioPanel::fade_in_changed, this));
_fade_out->Changed.connect (boost::bind(&AudioPanel::fade_out_changed, this));
- _use_same_fades_as_video->Bind (wxEVT_CHECKBOX, boost::bind(&AudioPanel::use_same_fades_as_video_changed, this));
+ _use_same_fades_as_video->bind(&AudioPanel::use_same_fades_as_video_changed, this);
_mapping_connection = _mapping->Changed.connect (boost::bind (&AudioPanel::mapping_changed, this, _1));
_active_jobs_connection = JobManager::instance()->ActiveJobsChanged.connect (boost::bind (&AudioPanel::active_jobs_changed, this, _1, _2));
add_to_grid ();
- _sizer->Layout ();
+ layout();
}
}
-AudioPanel::~AudioPanel ()
-{
- if (_audio_dialog) {
- _audio_dialog->Destroy ();
- _audio_dialog = nullptr;
- }
-}
-
void
-AudioPanel::film_changed (Film::Property property)
+AudioPanel::film_changed (FilmProperty property)
{
if (!_parent->film()) {
return;
}
switch (property) {
- case Film::Property::AUDIO_CHANNELS:
- case Film::Property::AUDIO_PROCESSOR:
+ case FilmProperty::AUDIO_CHANNELS:
+ case FilmProperty::AUDIO_PROCESSOR:
_mapping->set_output_channels (_parent->film()->audio_output_names ());
setup_peak ();
+ setup_sensitivity();
break;
- case Film::Property::VIDEO_FRAME_RATE:
+ case FilmProperty::VIDEO_FRAME_RATE:
setup_description ();
break;
- case Film::Property::REEL_TYPE:
- case Film::Property::INTEROP:
+ case FilmProperty::REEL_TYPE:
+ case FilmProperty::INTEROP:
setup_sensitivity ();
break;
default:
setup_peak ();
layout ();
} else if (property == AudioContentProperty::GAIN) {
+ /* This is a bit aggressive but probably not so bad */
+ _peak_cache.clear();
setup_peak ();
} else if (property == DCPContentProperty::REFERENCE_AUDIO) {
if (ac.size() == 1) {
void
AudioPanel::gain_calculate_button_clicked ()
{
- auto d = new GainCalculatorDialog (this);
- auto const r = d->ShowModal ();
- auto c = d->db_change();
+ GainCalculatorDialog dialog(this);
+ auto const r = dialog.ShowModal();
+ auto change = dialog.db_change();
- if (r == wxID_CANCEL || !c) {
- d->Destroy ();
+ if (r == wxID_CANCEL || !change) {
return;
}
auto old_peak_dB = peak ();
auto old_value = _gain->wrapped()->GetValue();
- _gain->wrapped()->SetValue(old_value + *c);
+ _gain->wrapped()->SetValue(old_value + *change);
/* This appears to be necessary, as the change is not signalled,
I think.
_gain->wrapped()->SetValue (old_value);
_gain->view_changed ();
}
-
- d->Destroy ();
}
void
AudioPanel::show_clicked ()
{
- if (_audio_dialog) {
- _audio_dialog->Destroy ();
- _audio_dialog = nullptr;
- }
+ _audio_dialog.reset();
auto ac = _parent->selected_audio ();
if (ac.size() != 1) {
return;
}
- _audio_dialog = new AudioDialog (this, _parent->film(), _parent->film_viewer(), ac.front());
+ _audio_dialog.reset(this, _parent->film(), _parent->film_viewer(), ac.front());
_audio_dialog->Show ();
}
AudioPanel::set_film (shared_ptr<Film>)
{
/* We are changing film, so destroy any audio dialog for the old one */
- if (_audio_dialog) {
- _audio_dialog->Destroy ();
- _audio_dialog = nullptr;
- }
+ _audio_dialog.reset();
}