blob: 471dec7939c7eccd88c4d1c882a121ea2a587b08 [file] [log] [blame]
Zack Rusin601e8372011-03-24 22:23:21 -04001#include "mainwindow.h"
2
Zack Rusin8f98c3a2011-09-11 18:21:29 -04003#include "apitrace.h"
Zack Rusinf6667d12011-03-30 11:03:37 -04004#include "apitracecall.h"
Zack Rusin601e8372011-03-24 22:23:21 -04005
José Fonsecadb3491e2012-12-09 13:22:30 +00006#include "os_string.hpp"
7#include "os_process.hpp"
8
Zack Rusin601e8372011-03-24 22:23:21 -04009#include <QApplication>
10#include <QMetaType>
11#include <QVariant>
Dan McCabe66dfdda2012-03-05 17:20:39 -080012#include <QImage>
Zack Rusin601e8372011-03-24 22:23:21 -040013
Zack Rusinf6667d12011-03-30 11:03:37 -040014Q_DECLARE_METATYPE(QList<ApiTraceFrame*>);
Zack Rusin8f98c3a2011-09-11 18:21:29 -040015Q_DECLARE_METATYPE(QVector<ApiTraceCall*>);
16Q_DECLARE_METATYPE(Qt::CaseSensitivity);
17Q_DECLARE_METATYPE(ApiTrace::SearchResult);
Zack Rusinad513b32011-09-25 14:33:41 -040018Q_DECLARE_METATYPE(ApiTrace::SearchRequest);
Dan McCabe66dfdda2012-03-05 17:20:39 -080019Q_DECLARE_METATYPE(QList<QImage>);
Zack Rusin601e8372011-03-24 22:23:21 -040020
José Fonsecab7eb1522011-11-27 15:15:33 +000021static void usage(void)
22{
23 qWarning("usage: qapitrace [TRACE] [CALLNO]\n");
24}
25
Zack Rusin601e8372011-03-24 22:23:21 -040026int main(int argc, char **argv)
27{
James Benton023a4f82012-09-07 14:23:43 +010028 QApplication::setGraphicsSystem("raster");
Zack Rusin601e8372011-03-24 22:23:21 -040029 QApplication app(argc, argv);
30
Zack Rusinf6667d12011-03-30 11:03:37 -040031 qRegisterMetaType<QList<ApiTraceFrame*> >();
Zack Rusin8f98c3a2011-09-11 18:21:29 -040032 qRegisterMetaType<QVector<ApiTraceCall*> >();
Zack Rusinf389ae82011-04-10 19:27:28 -040033 qRegisterMetaType<ApiTraceState>();
Zack Rusin8f98c3a2011-09-11 18:21:29 -040034 qRegisterMetaType<Qt::CaseSensitivity>();
35 qRegisterMetaType<ApiTrace::SearchResult>();
Zack Rusinad513b32011-09-25 14:33:41 -040036 qRegisterMetaType<ApiTrace::SearchRequest>();
Dan McCabe66dfdda2012-03-05 17:20:39 -080037 qRegisterMetaType<QList<QImage> >();
José Fonsecaebe01ce2012-12-09 13:05:24 +000038
39#ifndef Q_OS_WIN
José Fonsecadb3491e2012-12-09 13:22:30 +000040 os::String currentProcess = os::getProcessName();
41 currentProcess.trimFilename();
José Fonsecaebe01ce2012-12-09 13:05:24 +000042 QString path = qgetenv("PATH");
José Fonsecadb3491e2012-12-09 13:22:30 +000043 path = QLatin1String(currentProcess.str()) + QLatin1String(":") + path;
José Fonsecaebe01ce2012-12-09 13:05:24 +000044 qputenv("PATH", path.toLatin1());
45#endif
46
José Fonsecab7eb1522011-11-27 15:15:33 +000047 QStringList args = app.arguments();
Zack Rusin601e8372011-03-24 22:23:21 -040048
José Fonsecab7eb1522011-11-27 15:15:33 +000049 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;
Zack Rusin601e8372011-03-24 22:23:21 -040069 window.show();
70
José Fonsecab7eb1522011-11-27 15:15:33 +000071 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 }
Zack Rusin601e8372011-03-24 22:23:21 -040080
81 app.exec();
82}