#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);
connect(ui->input_mapping_action, &QAction::triggered, this, &MainWindow::input_mapping_triggered);
connect(ui->midi_mapping_action, &QAction::triggered, this, &MainWindow::midi_mapping_triggered);
+ connect(ui->timecode_stream_action, &QAction::triggered, this, &MainWindow::timecode_stream_triggered);
+ connect(ui->timecode_stdout_action, &QAction::triggered, this, &MainWindow::timecode_stdout_triggered);
+
+ ui->timecode_stream_action->setChecked(global_flags.display_timecode_in_stream);
+ ui->timecode_stdout_action->setChecked(global_flags.display_timecode_on_stdout);
if (global_flags.x264_video_to_http) {
connect(ui->x264_bitrate_action, &QAction::triggered, this, &MainWindow::x264_bitrate_triggered);
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();
MIDIMappingDialog(&midi_mapper).exec();
}
+void MainWindow::timecode_stream_triggered()
+{
+ global_mixer->set_display_timecode_in_stream(ui->timecode_stream_action->isChecked());
+}
+
+void MainWindow::timecode_stdout_triggered()
+{
+ global_mixer->set_display_timecode_on_stdout(ui->timecode_stdout_action->isChecked());
+}
+
void MainWindow::gain_staging_knob_changed(unsigned bus_index, int value)
{
if (bus_index == 0) {
// Allocate the height; the most important part is to keep the main displays
// at the right aspect if at all possible.
double me_width = ui->me_preview->width();
- double me_height = me_width * double(HEIGHT) / double(WIDTH) + 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())) * double(HEIGHT) / double(WIDTH));
+ 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 * double(WIDTH) / double(HEIGHT);
+ 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));
}