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