blob: 97d6619bb5508e3785d63c3544741862ecebc155 [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 Rusincc0b4912011-04-19 01:59:20 -040010class ApiTraceCall;
Zack Rusin581e3ff2011-03-31 23:58:07 -040011class ApiTraceEvent;
12class ApiTraceFilter;
Zack Rusin2caa06d2011-03-30 18:30:20 -040013class ApiTraceFrame;
Zack Rusin601e8372011-03-24 22:23:21 -040014class ApiTraceModel;
Zack Rusinf389ae82011-04-10 19:27:28 -040015class ApiTraceState;
Zack Rusin963102f2011-04-15 01:45:05 -040016class ArgumentsEditor;
Zack Rusinc52d18a2011-04-11 00:15:07 -040017class JumpWidget;
Zack Rusin96130ac2011-03-27 01:48:36 -040018class QModelIndex;
Zack Rusinde4ea412011-03-30 11:30:08 -040019class QProgressBar;
Zack Rusind9239342011-04-19 23:43:06 -040020class QTreeWidgetItem;
Zack Rusinc97fadc2011-04-07 15:16:59 -040021class QUrl;
Bob Kuehne70feb652011-05-04 08:58:44 -040022struct RetraceError;
Zack Rusin3acde362011-04-06 01:11:55 -040023class Retracer;
Zack Rusinf04cf8a2011-04-12 23:21:52 -040024class SearchWidget;
Zack Rusin7c814f12011-04-09 19:20:58 -040025class ShadersSourceWidget;
Zack Rusinca164112011-04-11 02:23:09 -040026class TraceProcess;
Zack Rusin8e7a4ff2011-04-07 01:15:48 -040027class VertexDataInterpreter;
Zack Rusin601e8372011-03-24 22:23:21 -040028
29class MainWindow : public QMainWindow
30{
31 Q_OBJECT
32public:
33 MainWindow();
Zack Rusin11f7e632011-03-30 22:47:51 -040034 ~MainWindow();
Zack Rusin601e8372011-03-24 22:23:21 -040035
36public slots:
37 void loadTrace(const QString &fileName);
38
39private slots:
Zack Rusin96130ac2011-03-27 01:48:36 -040040 void callItemSelected(const QModelIndex &index);
Zack Rusin3438a522011-04-10 22:56:31 -040041 void createTrace();
Zack Rusin601e8372011-03-24 22:23:21 -040042 void openTrace();
Zack Rusin27cb2c42011-03-27 23:53:36 -040043 void replayStart();
44 void replayStop();
Zack Rusinf389ae82011-04-10 19:27:28 -040045 void replayFinished(const QString &output);
46 void replayStateFound(const ApiTraceState &state);
Zack Rusin3acde362011-04-06 01:11:55 -040047 void replayError(const QString &msg);
Zack Rusinde4ea412011-03-30 11:30:08 -040048 void startedLoadingTrace();
49 void finishedLoadingTrace();
Zack Rusin2caa06d2011-03-30 18:30:20 -040050 void lookupState();
Zack Rusine1745572011-04-03 14:30:19 -040051 void showSettings();
Zack Rusinc97fadc2011-04-07 15:16:59 -040052 void openHelp(const QUrl &url);
Zack Rusin09ec4842011-04-10 01:57:17 -040053 void showSurfacesMenu(const QPoint &pos);
54 void showSelectedSurface();
Zack Rusinc52d18a2011-04-11 00:15:07 -040055 void slotGoTo();
56 void slotJumpTo(int callNum);
Zack Rusinca164112011-04-11 02:23:09 -040057 void createdTrace(const QString &path);
58 void traceError(const QString &msg);
Zack Rusinf04cf8a2011-04-12 23:21:52 -040059 void slotSearch();
60 void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity);
61 void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity);
Zack Rusine2dfa2e2011-04-13 01:35:03 -040062 void fillState(bool nonDefaults);
Zack Rusinfb23ba12011-04-15 19:29:45 -040063 void customContextMenuRequested(QPoint pos);
64 void editCall();
Zack Rusin9af5bff2011-04-18 01:05:50 -040065 void slotStartedSaving();
66 void slotSaved();
Zack Rusin9623daf2011-04-18 18:03:34 -040067 void slotGoFrameStart();
68 void slotGoFrameEnd();
Zack Rusincc0b4912011-04-19 01:59:20 -040069 void slotTraceChanged(ApiTraceCall *call);
Zack Rusinb39e1c62011-04-19 23:09:26 -040070 void slotRetraceErrors(const QList<RetraceError> &errors);
Zack Rusind9239342011-04-19 23:43:06 -040071 void slotErrorSelected(QTreeWidgetItem *current);
Zack Rusin27cb2c42011-03-27 23:53:36 -040072
73private:
Zack Rusin46678422011-04-10 12:15:46 -040074 void initObjects();
75 void initConnections();
Zack Rusin27cb2c42011-03-27 23:53:36 -040076 void newTraceFile(const QString &fileName);
Zack Rusin2caa06d2011-03-30 18:30:20 -040077 void replayTrace(bool dumpState);
Zack Rusin11f7e632011-03-30 22:47:51 -040078 void fillStateForFrame();
Zack Rusin9623daf2011-04-18 18:03:34 -040079 ApiTraceFrame *currentFrame() const;
Zack Rusinbe547732011-04-23 17:16:34 -040080 ApiTraceCall *currentCall() const;
Zack Rusin601e8372011-03-24 22:23:21 -040081
82private:
83 Ui_MainWindow m_ui;
Zack Rusin7c814f12011-04-09 19:20:58 -040084 ShadersSourceWidget *m_sourcesWidget;
85
Zack Rusinf6667d12011-03-30 11:03:37 -040086 ApiTrace *m_trace;
Zack Rusin601e8372011-03-24 22:23:21 -040087 ApiTraceModel *m_model;
Zack Rusin91065372011-03-26 01:54:10 -040088 ApiTraceFilter *m_proxyModel;
Zack Rusin27cb2c42011-03-27 23:53:36 -040089
Zack Rusinde4ea412011-03-30 11:30:08 -040090 QProgressBar *m_progressBar;
91
Zack Rusin581e3ff2011-03-31 23:58:07 -040092 ApiTraceEvent *m_selectedEvent;
Zack Rusin11f7e632011-03-30 22:47:51 -040093
Zack Rusin581e3ff2011-03-31 23:58:07 -040094 ApiTraceEvent *m_stateEvent;
Zack Rusin11f7e632011-03-30 22:47:51 -040095
Zack Rusin3acde362011-04-06 01:11:55 -040096 Retracer *m_retracer;
Zack Rusin8e7a4ff2011-04-07 01:15:48 -040097
98 VertexDataInterpreter *m_vdataInterpreter;
Zack Rusin09ec4842011-04-10 01:57:17 -040099
Zack Rusinc52d18a2011-04-11 00:15:07 -0400100 JumpWidget *m_jumpWidget;
Zack Rusinf04cf8a2011-04-12 23:21:52 -0400101 SearchWidget *m_searchWidget;
Zack Rusinca164112011-04-11 02:23:09 -0400102
103 TraceProcess *m_traceProcess;
Zack Rusin963102f2011-04-15 01:45:05 -0400104
105 ArgumentsEditor *m_argsEditor;
Zack Rusin3b7fbd72011-04-27 23:48:16 -0400106
107 ApiTraceEvent *m_nonDefaultsLookupEvent;
Zack Rusin601e8372011-03-24 22:23:21 -0400108};
109
110
111#endif