]> git.cworth.org Git - apitrace/commitdiff
Allow to specify an initial call no in the qapitrace command line.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Sun, 27 Nov 2011 15:15:33 +0000 (15:15 +0000)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Sun, 27 Nov 2011 15:15:33 +0000 (15:15 +0000)
gui/main.cpp
gui/mainwindow.cpp
gui/mainwindow.h

index 3dc473e4fd099d283f752a97c58a4765173f62eb..d7af53dde789c219e76dae1428254f3b58337dfd 100644 (file)
@@ -13,6 +13,11 @@ Q_DECLARE_METATYPE(Qt::CaseSensitivity);
 Q_DECLARE_METATYPE(ApiTrace::SearchResult);
 Q_DECLARE_METATYPE(ApiTrace::SearchRequest);
 
+static void usage(void)
+{
+    qWarning("usage: qapitrace [TRACE] [CALLNO]\n");
+}
+
 int main(int argc, char **argv)
 {
     QApplication app(argc, argv);
@@ -23,12 +28,39 @@ int main(int argc, char **argv)
     qRegisterMetaType<Qt::CaseSensitivity>();
     qRegisterMetaType<ApiTrace::SearchResult>();
     qRegisterMetaType<ApiTrace::SearchRequest>();
-    MainWindow window;
+    QStringList args = app.arguments();
 
+    int i = 1;
+    while (i < args.count()) {
+        QString arg = args[i];
+        if (arg[0] != QLatin1Char('-')) {
+            break;
+        }
+        ++i;
+        if (arg == QLatin1String("--")) {
+            break;
+        } else if (arg == QLatin1String("-h") ||
+                   arg == QLatin1String("--help")) {
+            usage();
+            exit(0);
+        } else {
+            usage();
+            exit(1);
+        }
+    }
+
+    MainWindow window;
     window.show();
 
-    if (app.arguments().count() == 2)
-        window.loadTrace(app.arguments()[1]);
+    if (i < args.count()) {
+        QString fileName = args[i++];
+
+        int callNum = -1;
+        if (i < args.count()) {
+            callNum = args[i++].toInt();
+        }
+        window.loadTrace(fileName, callNum);
+    }
 
     app.exec();
 }
index 6e3e8a3c064a9425a071737fb19a5cbd86de3a1c..4c525428f67cbaaf74e1a784f16634a3f641dcdd 100644 (file)
@@ -36,6 +36,7 @@
 
 MainWindow::MainWindow()
     : QMainWindow(),
+      m_initalCallNum(-1),
       m_selectedEvent(0),
       m_stateEvent(0),
       m_nonDefaultsLookupEvent(0)
@@ -79,7 +80,7 @@ void MainWindow::openTrace()
     }
 }
 
-void MainWindow::loadTrace(const QString &fileName)
+void MainWindow::loadTrace(const QString &fileName, int callNum)
 {
     if (!QFile::exists(fileName)) {
         QMessageBox::warning(this, tr("File Missing"),
@@ -87,6 +88,7 @@ void MainWindow::loadTrace(const QString &fileName)
         return;
     }
 
+    m_initalCallNum = callNum;
     newTraceFile(fileName);
 }
 
@@ -254,6 +256,10 @@ void MainWindow::finishedLoadingTrace()
     QFileInfo info(m_trace->fileName());
     statusBar()->showMessage(
         tr("Loaded %1").arg(info.fileName()), 3000);
+    if (m_initalCallNum >= 0) {
+        m_trace->findCallIndex(m_initalCallNum);
+        m_initalCallNum = -1;
+    }
 }
 
 void MainWindow::replayTrace(bool dumpState)
index 3fde4c60060b95ed609c3a05b482b481c96d3abf..644f14e7c085cdb54af8aee3866b013414fa4a54 100644 (file)
@@ -36,7 +36,7 @@ public:
     ~MainWindow();
 
 public slots:
-    void loadTrace(const QString &fileName);
+    void loadTrace(const QString &fileName, int callNum = -1);
 
 private slots:
     void callItemSelected(const QModelIndex &index);
@@ -104,6 +104,7 @@ private:
     ApiTrace *m_trace;
     ApiTraceModel *m_model;
     ApiTraceFilter *m_proxyModel;
+    int m_initalCallNum;
 
     QProgressBar *m_progressBar;