#include <QApplication>
#include <QBoxLayout>
#include <QCheckBox>
+#include <QDesktopServices>
#include <QDial>
#include <QDialog>
#include <QEvent>
// The menus.
connect(ui->cut_action, &QAction::triggered, this, &MainWindow::cut_triggered);
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->simple_audio_mode, &QAction::triggered, this, &MainWindow::simple_audio_mode_triggered);
connect(ui->multichannel_audio_mode, &QAction::triggered, this, &MainWindow::multichannel_audio_mode_triggered);
}
midi_mapper.refresh_highlights();
midi_mapper.refresh_lights();
- midi_mapper.start_thread();
}
void MainWindow::resizeEvent(QResizeEvent* event)
midi_mapper.refresh_highlights();
midi_mapper.refresh_lights();
+ midi_mapper.start_thread();
struct sigaction act;
memset(&act, 0, sizeof(act));
global_audio_mixer->reset_peak(bus_index);
midi_mapper.refresh_lights();
});
-
- // Set up the compression attenuation meter.
- VUMeter *reduction_meter = ui_audio_expanded_view->reduction_meter;
- reduction_meter->set_min_level(0.0f);
- reduction_meter->set_max_level(10.0f);
- reduction_meter->set_ref_level(0.0f);
- reduction_meter->set_flip(true);
}
update_cutoff_labels(global_audio_mixer->get_locut_cutoff());
close();
}
+void MainWindow::manual_triggered()
+{
+ if (!QDesktopServices::openUrl(QUrl("https://nageru.sesse.net/doc/"))) {
+ QMessageBox msgbox;
+ msgbox.setText("Could not launch manual in web browser.\nPlease see https://nageru.sesse.net/doc/ manually.");
+ msgbox.exec();
+ }
+}
+
void MainWindow::about_triggered()
{
AboutDialog().exec();
level.current_level_dbfs[0], level.current_level_dbfs[1]);
view->peak_meter->set_peak(
level.peak_level_dbfs[0], level.peak_level_dbfs[1]);
- view->reduction_meter->set_level(level.compressor_attenuation_db);
+ view->reduction_meter->set_reduction_db(level.compressor_attenuation_db);
view->gainstaging_knob->blockSignals(true);
view->gainstaging_knob->setValue(lrintf(level.gain_staging_db * 10.0f));
view->gainstaging_knob->blockSignals(false);
double remaining_height = height;
// Allocate the height; the most important part is to keep the main displays
- // at 16:9 if at all possible.
+ // at the right aspect if at all possible.
double me_width = ui->me_preview->width();
- double me_height = me_width * 9.0 / 16.0 + ui->label_preview->height() + ui->preview_vertical_layout->spacing();
+ double me_height = me_width * double(global_flags.height) / double(global_flags.width) + ui->label_preview->height() + ui->preview_vertical_layout->spacing();
// TODO: Scale the widths when we need to do this.
if (me_height / double(height) > 0.8) {
double preview_label_height = previews[0]->title_bar->geometry().height() +
previews[0]->main_vertical_layout->spacing();
int preview_total_width = ui->preview_displays->geometry().width() - (previews.size() - 1) * ui->preview_displays->spacing();
- double preview_height = min(remaining_height - preview_label_height, (preview_total_width / double(previews.size())) * 9.0 / 16.0);
+ double preview_height = min(remaining_height - preview_label_height, (preview_total_width / double(previews.size())) * double(global_flags.height) / double(global_flags.width));
remaining_height -= preview_height + preview_label_height + ui->vertical_layout->spacing();
ui->vertical_layout->setStretch(0, lrintf(me_height));
ui->compact_audio_layout->setStretch(2, lrintf(preview_height + preview_label_height));
// Set the widths for the previews.
- double preview_width = preview_height * 16.0 / 9.0;
+ double preview_width = preview_height * double(global_flags.width) / double(global_flags.height);
for (unsigned i = 0; i < previews.size(); ++i) {
ui->preview_displays->setStretch(i, lrintf(preview_width));
}
void MainWindow::audio_state_changed()
{
post_to_main_thread([this]{
+ if (global_audio_mixer->get_mapping_mode() == AudioMixer::MappingMode::SIMPLE) {
+ return;
+ }
InputMapping mapping = global_audio_mixer->get_input_mapping();
for (unsigned bus_index = 0; bus_index < mapping.buses.size(); ++bus_index) {
const InputMapping::Bus &bus = mapping.buses[bus_index];