X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mainwindow.cpp;h=eb7fb54a769d9f30022ef581fe82efc77ffc3b85;hb=d63a796b5b6bfee526993616a54cf89672e7c09f;hp=136890d93826d4b71c276eb896755eb648d9b27c;hpb=de2324b9ad89aa5fbeb0cb8ef499d74bb9bcef14;p=nageru diff --git a/mainwindow.cpp b/mainwindow.cpp index 136890d..eb7fb54 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -46,6 +46,7 @@ #include "aboutdialog.h" #include "alsa_pool.h" +#include "analyzer.h" #include "clickable_label.h" #include "context_menus.h" #include "correlation_meter.h" @@ -200,6 +201,7 @@ MainWindow::MainWindow() connect(ui->exit_action, &QAction::triggered, this, &MainWindow::exit_triggered); connect(ui->manual_action, &QAction::triggered, this, &MainWindow::manual_triggered); connect(ui->about_action, &QAction::triggered, this, &MainWindow::about_triggered); + connect(ui->open_analyzer_action, &QAction::triggered, this, &MainWindow::open_analyzer_triggered); connect(ui->simple_audio_mode, &QAction::triggered, this, &MainWindow::simple_audio_mode_triggered); connect(ui->multichannel_audio_mode, &QAction::triggered, this, &MainWindow::multichannel_audio_mode_triggered); connect(ui->input_mapping_action, &QAction::triggered, this, &MainWindow::input_mapping_triggered); @@ -280,6 +282,7 @@ void MainWindow::mixer_created(Mixer *mixer) // Make the previews. unsigned num_previews = mixer->get_num_channels(); + const char qwerty[] = "QWERTYUIOP"; for (unsigned i = 0; i < num_previews; ++i) { Mixer::Output output = Mixer::Output(Mixer::OUTPUT_INPUT0 + i); @@ -302,6 +305,12 @@ void MainWindow::mixer_created(Mixer *mixer) QShortcut *shortcut = new QShortcut(QKeySequence(Qt::Key_1 + i), this); connect(shortcut, &QShortcut::activated, bind(&MainWindow::channel_clicked, this, i)); + // Hook up the quick-cut key. + if (i < strlen(qwerty)) { + QShortcut *shortcut = new QShortcut(QKeySequence(qwerty[i]), this); + connect(shortcut, &QShortcut::activated, bind(&MainWindow::quick_cut_activated, this, i)); + } + // Hook up the white balance button (irrelevant if invisible). ui_display->wb_button->setVisible(mixer->get_supports_set_wb(output)); connect(ui_display->wb_button, &QPushButton::clicked, bind(&MainWindow::wb_button_clicked, this, i)); @@ -380,6 +389,8 @@ void MainWindow::mixer_created(Mixer *mixer) midi_mapper.refresh_lights(); midi_mapper.start_thread(); + analyzer.reset(new Analyzer); + struct sigaction act; memset(&act, 0, sizeof(act)); act.sa_handler = schedule_cut_signal; @@ -495,7 +506,7 @@ void MainWindow::setup_audio_expanded_view() update_eq_label(bus_index, EQ_BAND_MID, global_audio_mixer->get_eq(bus_index, EQ_BAND_MID)); update_eq_label(bus_index, EQ_BAND_BASS, global_audio_mixer->get_eq(bus_index, EQ_BAND_BASS)); ui_audio_expanded_view->fader->setDbValue(global_audio_mixer->get_fader_volume(bus_index)); - ui_audio_expanded_view->mute_button->setChecked(global_audio_mixer->get_mute(bus_index) ? Qt::Checked : Qt::Unchecked); + ui_audio_expanded_view->mute_button->setChecked(global_audio_mixer->get_mute(bus_index)); connect(ui_audio_expanded_view->mute_button, &QPushButton::toggled, bind(&MainWindow::mute_button_toggled, this, bus_index, _1)); ui->buses->addWidget(channel); @@ -549,11 +560,14 @@ void MainWindow::setup_audio_expanded_view() void MainWindow::mixer_shutting_down() { - ui->me_live->clean_context(); - ui->me_preview->clean_context(); + ui->me_live->shutdown(); + ui->me_preview->shutdown(); + for (Ui::Display *display : previews) { - display->display->clean_context(); + display->display->shutdown(); } + + analyzer->mixer_shutting_down(); } void MainWindow::cut_triggered() @@ -590,6 +604,11 @@ void MainWindow::about_triggered() AboutDialog().exec(); } +void MainWindow::open_analyzer_triggered() +{ + analyzer->show(); +} + void MainWindow::simple_audio_mode_triggered() { if (global_audio_mixer->get_mapping_mode() == AudioMixer::MappingMode::SIMPLE) { @@ -1242,6 +1261,8 @@ void MainWindow::update_channel_name(Mixer::Output output, const string &name) unsigned channel = output - Mixer::OUTPUT_INPUT0; previews[channel]->label->setText(name.c_str()); } + + analyzer->update_channel_name(output, name); } void MainWindow::update_channel_color(Mixer::Output output, const string &color) @@ -1267,6 +1288,12 @@ void MainWindow::channel_clicked(int channel_number) } } +void MainWindow::quick_cut_activated(int channel_number) +{ + global_mixer->channel_clicked(channel_number); + global_mixer->transition_clicked(0); +} + void MainWindow::wb_button_clicked(int channel_number) { current_wb_pick_display = channel_number; @@ -1291,6 +1318,12 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event) return false; } +void MainWindow::closeEvent(QCloseEvent *event) +{ + analyzer->hide(); + event->accept(); +} + namespace { double srgb_to_linear(double x)