blob: 121e323a3344f4dae5a8d827afad3d7977888d16 [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
Carl Worth7257dfc2012-08-09 08:21:42 -070014#include <stdio.h>
15
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 McCabe66dfdda2012-03-05 17:20:39 -080021Q_DECLARE_METATYPE(QList<QImage>);
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{
James Benton023a4f82012-09-07 14:23:43 +010033 QApplication::setGraphicsSystem("raster");
Zack Rusin601e8372011-03-24 22:23:21 -040034 QApplication app(argc, argv);
35
Zack Rusinf6667d12011-03-30 11:03:37 -040036 qRegisterMetaType<QList<ApiTraceFrame*> >();
Zack Rusin8f98c3a2011-09-11 18:21:29 -040037 qRegisterMetaType<QVector<ApiTraceCall*> >();
Zack Rusinf389ae82011-04-10 19:27:28 -040038 qRegisterMetaType<ApiTraceState>();
Zack Rusin8f98c3a2011-09-11 18:21:29 -040039 qRegisterMetaType<Qt::CaseSensitivity>();
40 qRegisterMetaType<ApiTrace::SearchResult>();
Zack Rusinad513b32011-09-25 14:33:41 -040041 qRegisterMetaType<ApiTrace::SearchRequest>();
Dan McCabe66dfdda2012-03-05 17:20:39 -080042 qRegisterMetaType<QList<QImage> >();
José Fonsecaebe01ce2012-12-09 13:05:24 +000043
44#ifndef Q_OS_WIN
José Fonsecadb3491e2012-12-09 13:22:30 +000045 os::String currentProcess = os::getProcessName();
46 currentProcess.trimFilename();
José Fonsecaebe01ce2012-12-09 13:05:24 +000047 QString path = qgetenv("PATH");
José Fonsecadb3491e2012-12-09 13:22:30 +000048 path = QLatin1String(currentProcess.str()) + QLatin1String(":") + path;
José Fonsecaebe01ce2012-12-09 13:05:24 +000049 qputenv("PATH", path.toLatin1());
50#endif
51
José Fonsecab7eb1522011-11-27 15:15:33 +000052 QStringList args = app.arguments();
Carl Worth7257dfc2012-08-09 08:21:42 -070053 QString remoteTarget;
Zack Rusin601e8372011-03-24 22:23:21 -040054
José Fonsecab7eb1522011-11-27 15:15:33 +000055 int i = 1;
56 while (i < args.count()) {
57 QString arg = args[i];
58 if (arg[0] != QLatin1Char('-')) {
59 break;
60 }
61 ++i;
62 if (arg == QLatin1String("--")) {
63 break;
Carl Worth7257dfc2012-08-09 08:21:42 -070064 } else if (arg == QLatin1String("--remote-target")) {
65 if (i == args.count()) {
66 qWarning("Option --remote-target requires an argument.\n");
67 exit(1);
68 }
69 remoteTarget = args[i];
70 ++i;
José Fonsecab7eb1522011-11-27 15:15:33 +000071 } else if (arg == QLatin1String("-h") ||
72 arg == QLatin1String("--help")) {
73 usage();
74 exit(0);
75 } else {
76 usage();
77 exit(1);
78 }
79 }
80
81 MainWindow window;
Zack Rusin601e8372011-03-24 22:23:21 -040082 window.show();
83
José Fonsecab7eb1522011-11-27 15:15:33 +000084 if (i < args.count()) {
85 QString fileName = args[i++];
86
87 int callNum = -1;
88 if (i < args.count()) {
89 callNum = args[i++].toInt();
90 }
91 window.loadTrace(fileName, callNum);
92 }
Zack Rusin601e8372011-03-24 22:23:21 -040093
Carl Worth7257dfc2012-08-09 08:21:42 -070094 if (remoteTarget.length()) {
95 window.setRemoteTarget(remoteTarget);
96 }
97
Zack Rusin601e8372011-03-24 22:23:21 -040098 app.exec();
99}