From: Steinar H. Gunderson Date: Thu, 6 Dec 2018 19:29:03 +0000 (+0100) Subject: Give Futatabi an about/license dialog, and the same manual link as Nageru. X-Git-Tag: 1.8.0~45 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=44606be7327eb9160b9de6c7be5c5006a3d5670e Give Futatabi an about/license dialog, and the same manual link as Nageru. --- diff --git a/futatabi/mainwindow.cpp b/futatabi/mainwindow.cpp index 2a05a24..81ef10b 100644 --- a/futatabi/mainwindow.cpp +++ b/futatabi/mainwindow.cpp @@ -1,5 +1,6 @@ #include "mainwindow.h" +#include "shared/aboutdialog.h" #include "clip_list.h" #include "shared/disk_space_estimator.h" #include "flags.h" @@ -9,6 +10,8 @@ #include "shared/timebase.h" #include "ui_mainwindow.h" +#include +#include #include #include #include @@ -36,6 +39,8 @@ MainWindow::MainWindow() // The menus. 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); global_disk_space_estimator = new DiskSpaceEstimator(bind(&MainWindow::report_disk_space, this, _1, _2)); disk_free_label = new QLabel(this); @@ -735,6 +740,20 @@ 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("Futatabi", "Multicamera slow motion video server").exec(); +} + void MainWindow::highlight_camera_input(int stream_idx) { if (stream_idx == 0) { diff --git a/futatabi/mainwindow.h b/futatabi/mainwindow.h index 7f8c57a..4e3800e 100644 --- a/futatabi/mainwindow.h +++ b/futatabi/mainwindow.h @@ -100,6 +100,8 @@ private: void report_disk_space(off_t free_bytes, double estimated_seconds_left); void exit_triggered(); + void manual_triggered(); + void about_triggered(); void highlight_camera_input(int stream_idx); diff --git a/futatabi/mainwindow.ui b/futatabi/mainwindow.ui index dbdb622..880a451 100644 --- a/futatabi/mainwindow.ui +++ b/futatabi/mainwindow.ui @@ -452,13 +452,31 @@ + + + &Help + + + + + E&xit + + + Online &manual… + + + + + &About Futatabi… + + diff --git a/nageru/mainwindow.cpp b/nageru/mainwindow.cpp index d0d9b6c..61e775d 100644 --- a/nageru/mainwindow.cpp +++ b/nageru/mainwindow.cpp @@ -44,7 +44,7 @@ #include #include -#include "aboutdialog.h" +#include "shared/aboutdialog.h" #include "alsa_pool.h" #include "analyzer.h" #include "clickable_label.h" @@ -663,7 +663,7 @@ void MainWindow::manual_triggered() void MainWindow::about_triggered() { - AboutDialog().exec(); + AboutDialog("Nageru", "Realtime video mixer").exec(); } void MainWindow::open_analyzer_triggered() diff --git a/nageru/meson.build b/nageru/meson.build index c66ea54..6d31a4d 100644 --- a/nageru/meson.build +++ b/nageru/meson.build @@ -136,16 +136,16 @@ nageru_link_with += protobuf_lib # Preprocess Qt as needed. qt_files = qt5.preprocess( - moc_headers: ['aboutdialog.h', 'analyzer.h', 'clickable_label.h', 'compression_reduction_meter.h', 'correlation_meter.h', + moc_headers: ['analyzer.h', 'clickable_label.h', 'compression_reduction_meter.h', 'correlation_meter.h', 'ellipsis_label.h', 'glwidget.h', 'input_mapping_dialog.h', 'lrameter.h', 'mainwindow.h', 'midi_mapping_dialog.h', 'nonlinear_fader.h', 'vumeter.h'], - ui_files: ['aboutdialog.ui', 'analyzer.ui', 'audio_expanded_view.ui', 'audio_miniview.ui', 'display.ui', + ui_files: ['analyzer.ui', 'audio_expanded_view.ui', 'audio_miniview.ui', 'display.ui', 'input_mapping.ui', 'mainwindow.ui', 'midi_mapping.ui'], dependencies: qt5deps) # Qt objects. srcs += ['glwidget.cpp', 'mainwindow.cpp', 'vumeter.cpp', 'lrameter.cpp', 'compression_reduction_meter.cpp', - 'correlation_meter.cpp', 'aboutdialog.cpp', 'analyzer.cpp', 'input_mapping_dialog.cpp', 'midi_mapping_dialog.cpp', + 'correlation_meter.cpp', 'analyzer.cpp', 'input_mapping_dialog.cpp', 'midi_mapping_dialog.cpp', 'nonlinear_fader.cpp', 'context_menus.cpp', 'vu_common.cpp', 'piecewise_interpolator.cpp', 'midi_mapper.cpp'] # Auxiliary objects used for nearly everything. diff --git a/nageru/aboutdialog.cpp b/shared/aboutdialog.cpp similarity index 63% rename from nageru/aboutdialog.cpp rename to shared/aboutdialog.cpp index def4151..35663b9 100644 --- a/nageru/aboutdialog.cpp +++ b/shared/aboutdialog.cpp @@ -6,12 +6,14 @@ using namespace std; -AboutDialog::AboutDialog() +AboutDialog::AboutDialog(const string &program, const string &subheading) : ui(new Ui::AboutDialog) { ui->setupUi(this); QString str = ui->header->text(); str.replace("@NAGERU_VERSION@", NAGERU_VERSION); + str.replace("@PROGRAM@", QString::fromStdString(program)); + str.replace("@SUBHEADING@", QString::fromStdString(subheading)); ui->header->setText(str); connect(ui->button_box, &QDialogButtonBox::accepted, [this]{ this->close(); }); diff --git a/nageru/aboutdialog.h b/shared/aboutdialog.h similarity index 75% rename from nageru/aboutdialog.h rename to shared/aboutdialog.h index 5100c00..ddc9dec 100644 --- a/nageru/aboutdialog.h +++ b/shared/aboutdialog.h @@ -4,6 +4,8 @@ #include #include +#include + class QObject; namespace Ui { @@ -15,7 +17,7 @@ class AboutDialog : public QDialog Q_OBJECT public: - AboutDialog(); + AboutDialog(const std::string &program, const std::string &subheading); private: Ui::AboutDialog *ui; diff --git a/nageru/aboutdialog.ui b/shared/aboutdialog.ui similarity index 98% rename from nageru/aboutdialog.ui rename to shared/aboutdialog.ui index 0ffbd44..59b0835 100644 --- a/nageru/aboutdialog.ui +++ b/shared/aboutdialog.ui @@ -17,9 +17,9 @@ - <p><b>Nageru @NAGERU_VERSION@</b></p> + <p><b>@PROGRAM@ @NAGERU_VERSION@</b></p> -<p>Realtime video mixer</p> +<p>@SUBHEADING@</p> diff --git a/shared/meson.build b/shared/meson.build index acb2c9a..49c52ee 100644 --- a/shared/meson.build +++ b/shared/meson.build @@ -1,8 +1,19 @@ qt5 = import('qt5') -qt5deps = dependency('qt5', modules: ['OpenGL']) +qt5deps = dependency('qt5', modules: ['Core', 'Gui', 'Widgets', 'OpenGL']) libmicrohttpddep = dependency('libmicrohttpd') +# Preprocess Qt as needed. +qt_files = qt5.preprocess( + moc_headers: ['aboutdialog.h'], + ui_files: ['aboutdialog.ui'], + dependencies: qt5deps) + srcs = ['memcpy_interleaved.cpp', 'metacube2.cpp', 'ffmpeg_raii.cpp', 'mux.cpp', 'metrics.cpp', 'context.cpp', 'httpd.cpp', 'disk_space_estimator.cpp', 'read_file.cpp'] + +# Qt objects. +srcs += qt_files +srcs += ['aboutdialog.cpp'] + shared = static_library('shared', srcs, include_directories: top_include, dependencies: [qt5deps, libmicrohttpddep]) shareddep = declare_dependency( include_directories: top_include,