X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mainwindow.cpp;h=077942ec11afdaea8c6c2ec84d8b8291928f15cc;hb=e284d1c7a2e18ee7e4aea082c4a57a3504a0f5e8;hp=4269e3d7f1646e94e14f05377df84633468831e9;hpb=fda8f0354aff984e00a3820f3ca025823e1ee434;p=nageru diff --git a/mainwindow.cpp b/mainwindow.cpp index 4269e3d..077942e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -129,7 +129,6 @@ void slave_fader(NonLinearFader *master, NonLinearFader *slave) }); } -constexpr unsigned DB_NO_FLAGS = 0x0; constexpr unsigned DB_WITH_SIGN = 0x1; constexpr unsigned DB_BARE = 0x2; @@ -239,24 +238,28 @@ MainWindow::MainWindow() qRegisterMetaType("Mixer::Output"); // Hook up the prev/next buttons on the audio views. - connect(ui->compact_prev_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 2)); - connect(ui->compact_next_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 1)); - connect(ui->full_prev_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 0)); - connect(ui->full_next_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 2)); - connect(ui->video_grid_prev_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 1)); - connect(ui->video_grid_next_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 0)); - - // And bind the same to PgUp/PgDown. auto prev_page = [this]{ if (global_audio_mixer->get_mapping_mode() == AudioMixer::MappingMode::MULTICHANNEL) { ui->audio_views->setCurrentIndex((ui->audio_views->currentIndex() + 2) % 3); + } else { + ui->audio_views->setCurrentIndex(2 - ui->audio_views->currentIndex()); // Switch between 0 and 2. } }; auto next_page = [this]{ if (global_audio_mixer->get_mapping_mode() == AudioMixer::MappingMode::MULTICHANNEL) { ui->audio_views->setCurrentIndex((ui->audio_views->currentIndex() + 1) % 3); + } else { + ui->audio_views->setCurrentIndex(2 - ui->audio_views->currentIndex()); // Switch between 0 and 2. } }; + connect(ui->compact_prev_page, &QAbstractButton::clicked, prev_page); + connect(ui->compact_next_page, &QAbstractButton::clicked, next_page); + connect(ui->full_prev_page, &QAbstractButton::clicked, prev_page); + connect(ui->full_next_page, &QAbstractButton::clicked, next_page); + connect(ui->video_grid_prev_page, &QAbstractButton::clicked, prev_page); + connect(ui->video_grid_next_page, &QAbstractButton::clicked, next_page); + + // And bind the same to PgUp/PgDown. connect(new QShortcut(QKeySequence::MoveToNextPage, this), &QShortcut::activated, next_page); connect(new QShortcut(QKeySequence::MoveToPreviousPage, this), &QShortcut::activated, prev_page); @@ -366,13 +369,13 @@ void MainWindow::mixer_created(Mixer *mixer) }); connect(ui->gainstaging_knob, &QAbstractSlider::valueChanged, bind(&MainWindow::gain_staging_knob_changed, this, simple_bus_index, _1)); - connect(ui->gainstaging_auto_checkbox, &QCheckBox::stateChanged, [this, simple_bus_index](int state){ + connect(ui->gainstaging_auto_checkbox, &QCheckBox::stateChanged, [this](int state){ global_audio_mixer->set_gain_staging_auto(simple_bus_index, state == Qt::Checked); midi_mapper.refresh_lights(); }); connect(ui->compressor_threshold_knob, &QDial::valueChanged, bind(&MainWindow::compressor_threshold_knob_changed, this, simple_bus_index, _1)); - connect(ui->compressor_enabled, &QCheckBox::stateChanged, [this, simple_bus_index](int state){ + connect(ui->compressor_enabled, &QCheckBox::stateChanged, [this](int state){ global_audio_mixer->set_compressor_enabled(simple_bus_index, state == Qt::Checked); midi_mapper.refresh_lights(); }); @@ -410,6 +413,9 @@ void MainWindow::mixer_created(Mixer *mixer) analyzer.reset(new Analyzer); + global_mixer->set_theme_menu_callback(bind(&MainWindow::setup_theme_menu, this)); + setup_theme_menu(); + struct sigaction act; memset(&act, 0, sizeof(act)); act.sa_handler = schedule_cut_signal; @@ -447,9 +453,17 @@ void MainWindow::reset_audio_mapping_ui() setup_audio_expanded_view(); if (simple) { - ui->audio_views->setCurrentIndex(0); + ui->compact_label->setText("Compact audio view (1/2) "); + ui->video_grid_label->setText("Video grid display (2/2) "); + if (ui->audio_views->currentIndex() == 1) { + // Full audio view is not available in simple mode. + ui->audio_views->setCurrentIndex(0); + } + } else { + ui->compact_label->setText("Compact audio view (1/3) "); + ui->full_label->setText("Full audio view (2/3) "); + ui->video_grid_label->setText("Video grid display (3/3) "); } - ui->compact_header->setVisible(!simple); midi_mapper.refresh_highlights(); midi_mapper.refresh_lights(); @@ -796,6 +810,27 @@ void MainWindow::update_eq_label(unsigned bus_index, EQBand band, float gain_db) } } +void MainWindow::setup_theme_menu() +{ + std::vector theme_menu_entries = global_mixer->get_theme_menu(); + + if (theme_menu != nullptr) { + ui->menuBar->removeAction(theme_menu->menuAction()); + theme_menu = nullptr; + } + + if (!theme_menu_entries.empty()) { + theme_menu = new QMenu("&Theme"); + for (const Theme::MenuEntry &entry : theme_menu_entries) { + QAction *action = theme_menu->addAction(QString::fromStdString(entry.text)); + connect(action, &QAction::triggered, [entry] { + global_mixer->theme_menu_entry_clicked(entry.lua_ref); + }); + } + ui->menuBar->insertMenu(ui->menu_Help->menuAction(), theme_menu); + } +} + void MainWindow::limiter_threshold_knob_changed(int value) { float threshold_dbfs = value * 0.1f;