#include "check_box.h"
#include "nag_dialog.h"
#include "dcpomatic_button.h"
+#include "audio_mapping_view.h"
+#include <dcp/raw_convert.h>
#include <iostream>
using std::string;
{
wxSizer* s = new wxBoxSizer (wxVERTICAL);
_add_certificate = new Button (this, _("Add..."));
- s->Add (_add_certificate, 0, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
+ s->Add (_add_certificate, 1, wxTOP | wxBOTTOM | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
_remove_certificate = new Button (this, _("Remove"));
- s->Add (_remove_certificate, 0, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
- _export_certificate = new Button (this, _("Export"));
- s->Add (_export_certificate, 0, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
+ s->Add (_remove_certificate, 1, wxTOP | wxBOTTOM | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
+ _export_certificate = new Button (this, _("Export certificate..."));
+ s->Add (_export_certificate, 1, wxTOP | wxBOTTOM | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
+ _export_chain = new Button (this, _("Export chain..."));
+ s->Add (_export_chain, 1, wxTOP | wxBOTTOM | wxEXPAND, DCPOMATIC_BUTTON_STACK_GAP);
certificates_sizer->Add (s, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP);
}
_button_sizer = new wxBoxSizer (wxHORIZONTAL);
_remake_certificates = new Button (this, _("Re-make certificates and key..."));
_button_sizer->Add (_remake_certificates, 1, wxRIGHT, border);
- _export_chain = new Button (this, _("Export chain..."));
- _button_sizer->Add (_export_chain, 1, wxRIGHT, border);
table->Add (_button_sizer, wxGBPosition (r, 0), wxGBSpan (1, 4));
++r;
table->Add (s, wxGBPosition(r, 1));
++r;
+ add_label_to_sizer (table, _panel, _("Mapping"), true, wxGBPosition(r, 0));
+ _map = new AudioMappingView (_panel, _("DCP"), _("DCP"), _("Output"), _("output"));
+ _map->SetSize (-1, 600);
+ table->Add (_map, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND);
+ ++r;
+
+ _reset_to_default = new Button (_panel, _("Reset to default"));
+ table->Add (_reset_to_default, wxGBPosition(r, 1));
+ ++r;
+
wxFont font = _sound_output_details->GetFont();
font.SetStyle (wxFONTSTYLE_ITALIC);
font.SetPointSize (font.GetPointSize() - 1);
}
}
- _sound->Bind (wxEVT_CHECKBOX, bind (&SoundPage::sound_changed, this));
- _sound_output->Bind (wxEVT_CHOICE, bind (&SoundPage::sound_output_changed, this));
+ _sound->Bind (wxEVT_CHECKBOX, bind(&SoundPage::sound_changed, this));
+ _sound_output->Bind (wxEVT_CHOICE, bind(&SoundPage::sound_output_changed, this));
+ _map->Changed.connect (bind(&SoundPage::map_changed, this, _1));
+ _reset_to_default->Bind (wxEVT_BUTTON, bind(&SoundPage::reset_to_default, this));
+}
+
+void
+SoundPage::reset_to_default ()
+{
+ Config::instance()->set_audio_mapping_to_default ();
+}
+
+void
+SoundPage::map_changed (AudioMapping m)
+{
+ Config::instance()->set_audio_mapping (m);
}
void
wxString::Format(_("%d channels on %s"), channels, apis[audio.getCurrentApi()])
);
+ _map->set (Config::instance()->audio_mapping(channels));
+
+ vector<string> input;
+ for (int i = 0; i < MAX_DCP_AUDIO_CHANNELS; ++i) {
+ input.push_back (short_audio_channel_name(i));
+ }
+ _map->set_input_channels (input);
+
+ vector<string> output;
+ for (int i = 0; i < channels; ++i) {
+ output.push_back (dcp::raw_convert<string>(i));
+ }
+ _map->set_output_channels (output);
+
setup_sensitivity ();
}