]> git.cworth.org Git - apitrace/blob - gui/mainwindow.h
Merge branch 'd3dretrace'
[apitrace] / gui / mainwindow.h
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include "ui_mainwindow.h"
5
6 #include "trace_api.hpp"
7 #include "apitrace.h"
8
9 #include <QMainWindow>
10 #include <QProcess>
11 #include <QList>
12 #include <QImage>
13
14 class ApiTrace;
15 class ApiTraceCall;
16 class ApiTraceEvent;
17 class ApiTraceFilter;
18 class ApiTraceFrame;
19 class ApiTraceModel;
20 class ApiTraceState;
21 class ArgumentsEditor;
22 class JumpWidget;
23 class QModelIndex;
24 class QProgressBar;
25 class QTreeWidgetItem;
26 class QUrl;
27 struct ApiTraceError;
28 class Retracer;
29 class SearchWidget;
30 class ShadersSourceWidget;
31 class TraceProcess;
32 class TrimProcess;
33 class VertexDataInterpreter;
34
35 class MainWindow : public QMainWindow
36 {
37     Q_OBJECT
38 public:
39     MainWindow();
40     ~MainWindow();
41
42 public slots:
43     void loadTrace(const QString &fileName, int callNum = -1);
44
45 private slots:
46     void callItemSelected(const QModelIndex &index);
47     void callItemActivated(const QModelIndex &index);
48     void createTrace();
49     void openTrace();
50     void replayStart();
51     void replayStop();
52     void replayFinished(const QString &message);
53     void replayStateFound(ApiTraceState *state);
54     void replayThumbnailsFound(const QList<QImage> &thumbnails);
55     void replayError(const QString &msg);
56     void startedLoadingTrace();
57     void loadProgess(int percent);
58     void finishedLoadingTrace();
59     void lookupState();
60     void showThumbnails();
61     void trim();
62     void showSettings();
63     void openHelp(const QUrl &url);
64     void showSurfacesMenu(const QPoint &pos);
65     void showSelectedSurface();
66     void saveSelectedSurface();
67     void slotGoTo();
68     void slotJumpTo(int callNum);
69     void createdTrace(const QString &path);
70     void traceError(const QString &msg);
71     void createdTrim(const QString &path);
72     void trimError(const QString &msg);
73     void slotSearch();
74     void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity);
75     void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity);
76     void fillState(bool nonDefaults);
77     void customContextMenuRequested(QPoint pos);
78     void editCall();
79     void slotStartedSaving();
80     void slotSaved();
81     void slotGoFrameStart();
82     void slotGoFrameEnd();
83     void slotTraceChanged(ApiTraceEvent *event);
84     void slotRetraceErrors(const QList<ApiTraceError> &errors);
85     void slotErrorSelected(QTreeWidgetItem *current);
86     void slotSearchResult(const ApiTrace::SearchRequest &request,
87                           ApiTrace::SearchResult result,
88                           ApiTraceCall *call);
89     void slotFoundFrameStart(ApiTraceFrame *frame);
90     void slotFoundFrameEnd(ApiTraceFrame *frame);
91     void slotJumpToResult(ApiTraceCall *call);
92
93 private:
94     void initObjects();
95     void initConnections();
96     void newTraceFile(const QString &fileName);
97     void replayTrace(bool dumpState, bool dumpThumbnails);
98     void trimEvent();
99     void fillStateForFrame();
100
101     /* there's a difference between selected frame/call and
102      * current call/frame. the former implies actual selection
103      * the latter might be just a highlight, e.g. during searching
104      */
105     ApiTraceFrame *selectedFrame() const;
106     ApiTraceCall *selectedCall() const;
107     ApiTraceFrame *currentFrame() const;
108     ApiTraceCall *currentCall() const;
109
110
111 private:
112     Ui_MainWindow m_ui;
113     ShadersSourceWidget *m_sourcesWidget;
114
115     trace::API m_api;
116
117     ApiTrace *m_trace;
118     ApiTraceModel *m_model;
119     ApiTraceFilter *m_proxyModel;
120     int m_initalCallNum;
121
122     QProgressBar *m_progressBar;
123
124     ApiTraceEvent *m_selectedEvent;
125
126     ApiTraceEvent *m_stateEvent;
127
128     ApiTraceEvent *m_trimEvent;
129
130     Retracer *m_retracer;
131
132     VertexDataInterpreter *m_vdataInterpreter;
133
134     JumpWidget *m_jumpWidget;
135     SearchWidget *m_searchWidget;
136
137     TraceProcess *m_traceProcess;
138
139     TrimProcess *m_trimProcess;
140
141     ArgumentsEditor *m_argsEditor;
142
143     ApiTraceEvent *m_nonDefaultsLookupEvent;
144 };
145
146
147 #endif