]> git.sesse.net Git - nageru/blobdiff - input_mapping_dialog.cpp
Release Nageru 1.7.2.
[nageru] / input_mapping_dialog.cpp
index c81e2923e07cfff9864c08daf9d429e4e2b25524..e26649d544fea217778145e1b0ea66daecaf019f 100644 (file)
@@ -1,11 +1,29 @@
 #include "input_mapping_dialog.h"
 
-#include "post_to_main_thread.h"
-#include "ui_input_mapping.h"
-
+#include <assert.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <QAbstractItemView>
 #include <QComboBox>
+#include <QDialogButtonBox>
 #include <QFileDialog>
+#include <QHeaderView>
+#include <QList>
 #include <QMessageBox>
+#include <QPushButton>
+#include <QTableWidget>
+#include <QVariant>
+#include <functional>
+#include <memory>
+#include <set>
+#include <string>
+#include <utility>
+
+#include "alsa_pool.h"
+#include "defs.h"
+#include "post_to_main_thread.h"
+#include "ui_input_mapping.h"
 
 using namespace std;
 using namespace std::placeholders;
@@ -130,7 +148,8 @@ void InputMappingDialog::setup_channel_choices_from_bus(unsigned row, const Inpu
                QComboBox *channel_combo = new QComboBox;
                channel_combo->addItem(QString("(none)"));
                if (bus.device.type == InputSourceType::CAPTURE_CARD ||
-                   bus.device.type == InputSourceType::ALSA_INPUT) {
+                   bus.device.type == InputSourceType::ALSA_INPUT ||
+                   bus.device.type == InputSourceType::FFMPEG_VIDEO_INPUT) {
                        auto device_it = devices.find(bus.device);
                        assert(device_it != devices.end());
                        unsigned num_device_channels = device_it->second.num_channels;
@@ -141,6 +160,7 @@ void InputMappingDialog::setup_channel_choices_from_bus(unsigned row, const Inpu
                        }
                        channel_combo->setCurrentIndex(bus.source_channel[channel] + 1);
                } else {
+                       assert(bus.device.type == InputSourceType::SILENCE);
                        channel_combo->setCurrentIndex(0);
                }
                connect(channel_combo, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
@@ -248,8 +268,14 @@ void InputMappingDialog::updown_clicked(int direction)
 
 void InputMappingDialog::save_clicked()
 {
+#if HAVE_CEF
+       // The native file dialog uses GTK+, which interferes with CEF's use of the GLib main loop.
+       QFileDialog::Option options(QFileDialog::DontUseNativeDialog);
+#else
+       QFileDialog::Option options;
+#endif
        QString filename = QFileDialog::getSaveFileName(this,
-               "Save input mapping", QString(), tr("Mapping files (*.mapping)"));
+               "Save input mapping", QString(), tr("Mapping files (*.mapping)"), /*selectedFilter=*/nullptr, options);
        if (!filename.endsWith(".mapping")) {
                filename += ".mapping";
        }
@@ -262,8 +288,14 @@ void InputMappingDialog::save_clicked()
 
 void InputMappingDialog::load_clicked()
 {
+#if HAVE_CEF
+       // The native file dialog uses GTK+, which interferes with CEF's use of the GLib main loop.
+       QFileDialog::Option options(QFileDialog::DontUseNativeDialog);
+#else
+       QFileDialog::Option options;
+#endif
        QString filename = QFileDialog::getOpenFileName(this,
-               "Load input mapping", QString(), tr("Mapping files (*.mapping)"));
+               "Load input mapping", QString(), tr("Mapping files (*.mapping)"), /*selectedFilter=*/nullptr, options);
        InputMapping new_mapping;
        if (!load_input_mapping_from_file(devices, filename.toStdString(), &new_mapping)) {
                QMessageBox box;