blob: d8f406563b14a8146d9237f66e50a55c1ffcbf65 [file] [log] [blame]
José Fonsecaff6dad32013-04-12 10:27:31 +01001#include <stdlib.h>
2
Zack Rusin601e8372011-03-24 22:23:21 -04003#include "mainwindow.h"
4
Zack Rusin8f98c3a2011-09-11 18:21:29 -04005#include "apitrace.h"
Zack Rusinf6667d12011-03-30 11:03:37 -04006#include "apitracecall.h"
Zack Rusin601e8372011-03-24 22:23:21 -04007
José Fonsecadb3491e2012-12-09 13:22:30 +00008#include "os_string.hpp"
9#include "os_process.hpp"
10
Zack Rusin601e8372011-03-24 22:23:21 -040011#include <QApplication>
12#include <QMetaType>
13#include <QVariant>
Dan McCabe66dfdda2012-03-05 17:20:39 -080014#include <QImage>
Zack Rusin601e8372011-03-24 22:23:21 -040015
Zack Rusinf6667d12011-03-30 11:03:37 -040016Q_DECLARE_METATYPE(QList<ApiTraceFrame*>);
Zack Rusin8f98c3a2011-09-11 18:21:29 -040017Q_DECLARE_METATYPE(QVector<ApiTraceCall*>);
18Q_DECLARE_METATYPE(Qt::CaseSensitivity);
19Q_DECLARE_METATYPE(ApiTrace::SearchResult);
Zack Rusinad513b32011-09-25 14:33:41 -040020Q_DECLARE_METATYPE(ApiTrace::SearchRequest);
Dan McCabec6f924e2012-06-01 13:40:05 -070021Q_DECLARE_METATYPE(ImageHash);
Zack Rusin601e8372011-03-24 22:23:21 -040022
José Fonsecab7eb1522011-11-27 15:15:33 +000023static void usage(void)
24{
Carl Worth7257dfc2012-08-09 08:21:42 -070025 qWarning("usage: qapitrace [options] [TRACE] [CALLNO]\n"
26 "Valid options include:\n"
27 " -h, --help Print this help message\n"
28 " --remote-target HOST Replay trace on remote target HOST\n");
José Fonsecab7eb1522011-11-27 15:15:33 +000029}
30
Zack Rusin601e8372011-03-24 22:23:21 -040031int main(int argc, char **argv)
32{
33 QApplication app(argc, argv);
34
Zack Rusinf6667d12011-03-30 11:03:37 -040035 qRegisterMetaType<QList<ApiTraceFrame*> >();
Zack Rusin8f98c3a2011-09-11 18:21:29 -040036 qRegisterMetaType<QVector<ApiTraceCall*> >();
Zack Rusinf389ae82011-04-10 19:27:28 -040037 qRegisterMetaType<ApiTraceState>();
Zack Rusin8f98c3a2011-09-11 18:21:29 -040038 qRegisterMetaType<Qt::CaseSensitivity>();
39 qRegisterMetaType<ApiTrace::SearchResult>();
Zack Rusinad513b32011-09-25 14:33:41 -040040 qRegisterMetaType<ApiTrace::SearchRequest>();
Dan McCabec6f924e2012-06-01 13:40:05 -070041 qRegisterMetaType<ImageHash>();
José Fonsecaebe01ce2012-12-09 13:05:24 +000042
43#ifndef Q_OS_WIN
José Fonsecadb3491e2012-12-09 13:22:30 +000044 os::String currentProcess = os::getProcessName();
45 currentProcess.trimFilename();
José Fonsecaebe01ce2012-12-09 13:05:24 +000046 QString path = qgetenv("PATH");
José Fonsecadb3491e2012-12-09 13:22:30 +000047 path = QLatin1String(currentProcess.str()) + QLatin1String(":") + path;
José Fonsecaebe01ce2012-12-09 13:05:24 +000048 qputenv("PATH", path.toLatin1());
49#endif
50
José Fonsecab7eb1522011-11-27 15:15:33 +000051 QStringList args = app.arguments();
Carl Worth7257dfc2012-08-09 08:21:42 -070052 QString remoteTarget;
Zack Rusin601e8372011-03-24 22:23:21 -040053
José Fonsecab7eb1522011-11-27 15:15:33 +000054 int i = 1;
55 while (i < args.count()) {
56 QString arg = args[i];
57 if (arg[0] != QLatin1Char('-')) {
58 break;
59 }
60 ++i;
61 if (arg == QLatin1String("--")) {
62 break;
Carl Worth7257dfc2012-08-09 08:21:42 -070063 } else if (arg == QLatin1String("--remote-target")) {
64 if (i == args.count()) {
65 qWarning("Option --remote-target requires an argument.\n");
66 exit(1);
67 }
68 remoteTarget = args[i];
69 ++i;
José Fonsecab7eb1522011-11-27 15:15:33 +000070 } else if (arg == QLatin1String("-h") ||
71 arg == QLatin1String("--help")) {
72 usage();
73 exit(0);
74 } else {
75 usage();
76 exit(1);
77 }
78 }
79
80 MainWindow window;
Zack Rusin601e8372011-03-24 22:23:21 -040081 window.show();
82
José Fonsecab7eb1522011-11-27 15:15:33 +000083 if (i < args.count()) {
84 QString fileName = args[i++];
85
86 int callNum = -1;
87 if (i < args.count()) {
88 callNum = args[i++].toInt();
89 }
90 window.loadTrace(fileName, callNum);
91 }
Zack Rusin601e8372011-03-24 22:23:21 -040092
Carl Worth7257dfc2012-08-09 08:21:42 -070093 if (remoteTarget.length()) {
94 window.setRemoteTarget(remoteTarget);
95 }
96
Zack Rusin601e8372011-03-24 22:23:21 -040097 app.exec();
98}