]> git.sesse.net Git - nageru/blobdiff - mainwindow.cpp
Make the API for begin_frame()/end_frame() in VideoEncoder a bit more sensible.
[nageru] / mainwindow.cpp
index a99d2ae04fbb0d809f989e9fc598236d687d1b84..a1c291537fd5031f88fd33320f7c70f104ce4a7a 100644 (file)
@@ -12,6 +12,7 @@
 #include <QApplication>
 #include <QBoxLayout>
 #include <QCheckBox>
+#include <QDesktopServices>
 #include <QDial>
 #include <QDialog>
 #include <QEvent>
@@ -46,6 +47,7 @@
 #include "aboutdialog.h"
 #include "alsa_pool.h"
 #include "clickable_label.h"
+#include "context_menus.h"
 #include "correlation_meter.h"
 #include "disk_space_estimator.h"
 #include "ellipsis_label.h"
@@ -196,11 +198,17 @@ MainWindow::MainWindow()
        // 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);
@@ -208,6 +216,11 @@ MainWindow::MainWindow()
                ui->x264_bitrate_action->setEnabled(false);
        }
 
+       connect(ui->video_menu, &QMenu::aboutToShow, [this]{
+               fill_hdmi_sdi_output_device_menu(ui->hdmi_sdi_output_device_menu);
+               fill_hdmi_sdi_output_resolution_menu(ui->hdmi_sdi_output_resolution_menu);
+       });
+
        // Hook up the transition buttons. (Keyboard shortcuts are set in set_transition_names().)
        // TODO: Make them dynamic.
        connect(ui->transition_btn1, &QPushButton::clicked, bind(&MainWindow::transition_clicked, this, 0));
@@ -563,6 +576,15 @@ void MainWindow::exit_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();
@@ -620,6 +642,16 @@ void MainWindow::midi_mapping_triggered()
        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) {