]> sigrok.org Git - pulseview.git/commitdiff
Added open file command line argument
authorJoel Holdsworth <redacted>
Sun, 3 Mar 2013 09:06:44 +0000 (09:06 +0000)
committerUwe Hermann <redacted>
Sun, 3 Mar 2013 16:18:20 +0000 (17:18 +0100)
main.cpp
pv/mainwindow.cpp
pv/mainwindow.h

index fae6d5f20927149d4996aa0a161f07db8628580e..43c8cb8e965c1c22bb947d3be71d7d3bf39d2613 100644 (file)
--- 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
index 6b0fa676303052cb9478f2e1f4eaff7abd3a1bbf..1ee3f4e0d62b0142ac7e93d6db544d60545ecc90 100644 (file)
 
 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()
index b53138ee5f84c83bef3a06a1281a7bec0317ada1..32b8f6f30da3af195bb1c6899ed3aa96f02a7272 100644 (file)
@@ -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();