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