]> git.cworth.org Git - apitrace/blob - gui/main.cpp
qapitrace: Adjust PATH only once and for all.
[apitrace] / gui / main.cpp
1 #include "mainwindow.h"
2
3 #include "apitrace.h"
4 #include "apitracecall.h"
5
6 #include <QApplication>
7 #include <QMetaType>
8 #include <QVariant>
9 #include <QImage>
10
11 Q_DECLARE_METATYPE(QList<ApiTraceFrame*>);
12 Q_DECLARE_METATYPE(QVector<ApiTraceCall*>);
13 Q_DECLARE_METATYPE(Qt::CaseSensitivity);
14 Q_DECLARE_METATYPE(ApiTrace::SearchResult);
15 Q_DECLARE_METATYPE(ApiTrace::SearchRequest);
16 Q_DECLARE_METATYPE(QList<QImage>);
17
18 static void usage(void)
19 {
20     qWarning("usage: qapitrace [TRACE] [CALLNO]\n");
21 }
22
23 int main(int argc, char **argv)
24 {
25     QApplication::setGraphicsSystem("raster");
26     QApplication app(argc, argv);
27
28     qRegisterMetaType<QList<ApiTraceFrame*> >();
29     qRegisterMetaType<QVector<ApiTraceCall*> >();
30     qRegisterMetaType<ApiTraceState>();
31     qRegisterMetaType<Qt::CaseSensitivity>();
32     qRegisterMetaType<ApiTrace::SearchResult>();
33     qRegisterMetaType<ApiTrace::SearchRequest>();
34     qRegisterMetaType<QList<QImage> >();
35
36 #ifndef Q_OS_WIN
37     QString path = qgetenv("PATH");
38     path = QLatin1String(APITRACE_BINARY_DIR) + QLatin1String(":") + path;
39     qputenv("PATH", path.toLatin1());
40 #endif
41
42     QStringList args = app.arguments();
43
44     int i = 1;
45     while (i < args.count()) {
46         QString arg = args[i];
47         if (arg[0] != QLatin1Char('-')) {
48             break;
49         }
50         ++i;
51         if (arg == QLatin1String("--")) {
52             break;
53         } else if (arg == QLatin1String("-h") ||
54                    arg == QLatin1String("--help")) {
55             usage();
56             exit(0);
57         } else {
58             usage();
59             exit(1);
60         }
61     }
62
63     MainWindow window;
64     window.show();
65
66     if (i < args.count()) {
67         QString fileName = args[i++];
68
69         int callNum = -1;
70         if (i < args.count()) {
71             callNum = args[i++].toInt();
72         }
73         window.loadTrace(fileName, callNum);
74     }
75
76     app.exec();
77 }