From: Joel Holdsworth Date: Sun, 3 Mar 2013 09:06:44 +0000 (+0000) Subject: Added open file command line argument X-Git-Tag: pulseview-0.1.0~118 X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=commitdiff_plain;h=1d478458c2b7b314a48981ceb3264ebc852df40d;ds=sidebyside Added open file command line argument --- diff --git a/main.cpp b/main.cpp index fae6d5f2..43c8cb8e 100644 --- a/main.cpp +++ b/main.cpp @@ -39,7 +39,7 @@ void usage() { fprintf(stdout, "Usage:\n" - " %s — %s\n" + " %s [OPTION…] [FILE] — %s\n" "\n" "Help Options:\n" " -V, --version Show release version\n" @@ -64,6 +64,7 @@ int main(int argc, char *argv[]) { int ret = 0; struct sr_context *sr_ctx = NULL; + const char *open_file = NULL; // Register a SIGINT handler signal(SIGINT, sigint_handler); @@ -103,6 +104,12 @@ int main(int argc, char *argv[]) } } + if (argc - optind > 1) { + fprintf(stderr, "Only one file can be openened.\n"); + return 1; + } else if (argc - optind == 1) + open_file = argv[argc - 1]; + // Initialise libsigrok if (sr_init(&sr_ctx) != SR_OK) { qDebug() << "ERROR: libsigrok init failed."; @@ -128,7 +135,7 @@ int main(int argc, char *argv[]) if (ret == 0) { // Initialise the main window - pv::MainWindow w; + pv::MainWindow w(open_file); w.show(); // Run the application diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 6b0fa676..1ee3f4e0 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -46,10 +46,17 @@ namespace pv { -MainWindow::MainWindow(QWidget *parent) : +MainWindow::MainWindow(const char *open_file_name, + QWidget *parent) : QMainWindow(parent) { setup_ui(); + if (open_file_name) { + const QString s(QString::fromUtf8(open_file_name)); + QMetaObject::invokeMethod(this, "load_file", + Qt::QueuedConnection, + Q_ARG(QString, s)); + } } void MainWindow::setup_ui() @@ -175,12 +182,17 @@ void MainWindow::setup_ui() } +void MainWindow::load_file(QString file_name) +{ + _session.load_file(file_name.toStdString()); +} + void MainWindow::on_actionOpen_triggered() { - QString file_name = QFileDialog::getOpenFileName( + const QString file_name = QFileDialog::getOpenFileName( this, tr("Open File"), "", tr("Sigrok Sessions (*.sr)")); - _session.load_file(file_name.toStdString()); + load_file(file_name); } void MainWindow::on_actionQuit_triggered() diff --git a/pv/mainwindow.h b/pv/mainwindow.h index b53138ee..32b8f6f3 100644 --- a/pv/mainwindow.h +++ b/pv/mainwindow.h @@ -46,7 +46,8 @@ class MainWindow : public QMainWindow Q_OBJECT public: - explicit MainWindow(QWidget *parent = 0); + explicit MainWindow(const char *open_file_name = NULL, + QWidget *parent = 0); private: void setup_ui(); @@ -76,6 +77,7 @@ private: SamplingBar *_sampling_bar; private slots: + void load_file(QString file_name); void on_actionOpen_triggered(); void on_actionQuit_triggered();