blob: d309ed2405b65cb2dd788b0dc1041f4338e45e35 [file] [log] [blame]
Zack Rusin601e8372011-03-24 22:23:21 -04001#ifndef MAINWINDOW_H
2#define MAINWINDOW_H
3
4#include "ui_mainwindow.h"
5
Zack Rusin96130ac2011-03-27 01:48:36 -04006#include <QMainWindow>
Zack Rusin27cb2c42011-03-27 23:53:36 -04007#include <QProcess>
Zack Rusin96130ac2011-03-27 01:48:36 -04008
Zack Rusinf6667d12011-03-30 11:03:37 -04009class ApiTrace;
Zack Rusin581e3ff2011-03-31 23:58:07 -040010class ApiTraceEvent;
11class ApiTraceFilter;
Zack Rusin2caa06d2011-03-30 18:30:20 -040012class ApiTraceFrame;
Zack Rusin601e8372011-03-24 22:23:21 -040013class ApiTraceModel;
Zack Rusin09ec4842011-04-10 01:57:17 -040014class ImageViewer;
Zack Rusinea295452011-03-27 02:22:13 -040015class QLineEdit;
Zack Rusin96130ac2011-03-27 01:48:36 -040016class QModelIndex;
Zack Rusinde4ea412011-03-30 11:30:08 -040017class QProgressBar;
Zack Rusinc97fadc2011-04-07 15:16:59 -040018class QUrl;
Zack Rusin3acde362011-04-06 01:11:55 -040019class Retracer;
Zack Rusin7c814f12011-04-09 19:20:58 -040020class ShadersSourceWidget;
Zack Rusin8e7a4ff2011-04-07 01:15:48 -040021class VertexDataInterpreter;
Zack Rusin601e8372011-03-24 22:23:21 -040022
Zack Rusin11f7e632011-03-30 22:47:51 -040023namespace QJson {
24 class Parser;
25}
26
Zack Rusin601e8372011-03-24 22:23:21 -040027class MainWindow : public QMainWindow
28{
29 Q_OBJECT
30public:
31 MainWindow();
Zack Rusin11f7e632011-03-30 22:47:51 -040032 ~MainWindow();
Zack Rusin601e8372011-03-24 22:23:21 -040033
34public slots:
35 void loadTrace(const QString &fileName);
36
37private slots:
Zack Rusin96130ac2011-03-27 01:48:36 -040038 void callItemSelected(const QModelIndex &index);
Zack Rusin601e8372011-03-24 22:23:21 -040039 void openTrace();
Zack Rusinea295452011-03-27 02:22:13 -040040 void filterTrace();
Zack Rusin27cb2c42011-03-27 23:53:36 -040041 void replayStart();
42 void replayStop();
Zack Rusin3acde362011-04-06 01:11:55 -040043 void replayFinished(const QByteArray &output);
44 void replayError(const QString &msg);
Zack Rusinde4ea412011-03-30 11:30:08 -040045 void startedLoadingTrace();
46 void finishedLoadingTrace();
Zack Rusin2caa06d2011-03-30 18:30:20 -040047 void lookupState();
Zack Rusine1745572011-04-03 14:30:19 -040048 void showSettings();
Zack Rusinc97fadc2011-04-07 15:16:59 -040049 void openHelp(const QUrl &url);
Zack Rusin09ec4842011-04-10 01:57:17 -040050 void showSurfacesMenu(const QPoint &pos);
51 void showSelectedSurface();
Zack Rusin27cb2c42011-03-27 23:53:36 -040052
53private:
54 void newTraceFile(const QString &fileName);
Zack Rusin2caa06d2011-03-30 18:30:20 -040055 void replayTrace(bool dumpState);
Zack Rusin11f7e632011-03-30 22:47:51 -040056 void parseState(const QVariantMap &params);
57 void fillStateForFrame();
Zack Rusin601e8372011-03-24 22:23:21 -040058
59private:
60 Ui_MainWindow m_ui;
Zack Rusin7c814f12011-04-09 19:20:58 -040061 ShadersSourceWidget *m_sourcesWidget;
62
Zack Rusinf6667d12011-03-30 11:03:37 -040063 ApiTrace *m_trace;
Zack Rusin601e8372011-03-24 22:23:21 -040064 ApiTraceModel *m_model;
Zack Rusin91065372011-03-26 01:54:10 -040065 ApiTraceFilter *m_proxyModel;
Zack Rusinea295452011-03-27 02:22:13 -040066 QLineEdit *m_filterEdit;
Zack Rusin27cb2c42011-03-27 23:53:36 -040067
Zack Rusinde4ea412011-03-30 11:30:08 -040068 QProgressBar *m_progressBar;
69
Zack Rusin27cb2c42011-03-27 23:53:36 -040070 QString m_traceFileName;
Zack Rusin2caa06d2011-03-30 18:30:20 -040071
Zack Rusin581e3ff2011-03-31 23:58:07 -040072 ApiTraceEvent *m_selectedEvent;
Zack Rusin11f7e632011-03-30 22:47:51 -040073
Zack Rusin581e3ff2011-03-31 23:58:07 -040074 ApiTraceEvent *m_stateEvent;
Zack Rusin11f7e632011-03-30 22:47:51 -040075
76 QJson::Parser *m_jsonParser;
Zack Rusin3acde362011-04-06 01:11:55 -040077
78 Retracer *m_retracer;
Zack Rusin8e7a4ff2011-04-07 01:15:48 -040079
80 VertexDataInterpreter *m_vdataInterpreter;
Zack Rusin09ec4842011-04-10 01:57:17 -040081
82 ImageViewer *m_imageViewer;
Zack Rusin601e8372011-03-24 22:23:21 -040083};
84
85
86#endif