]> git.cworth.org Git - apitrace/blob - gui/mainwindow.h
Display captured snapshots as thumbnails.
[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 createTrace();
47     void openTrace();
48     void replayStart();
49     void replayStop();
50     void replayFinished(const QString &output);
51     void replayStateFound(ApiTraceState *state);
52     void replayThumbnailsFound(const QList<QImage> &thumbnails);
53     void replayError(const QString &msg);
54     void startedLoadingTrace();
55     void loadProgess(int percent);
56     void finishedLoadingTrace();
57     void lookupState();
58     void showSettings();
59     void openHelp(const QUrl &url);
60     void showSurfacesMenu(const QPoint &pos);
61     void showSelectedSurface();
62     void saveSelectedSurface();
63     void slotGoTo();
64     void slotJumpTo(int callNum);
65     void createdTrace(const QString &path);
66     void traceError(const QString &msg);
67     void slotSearch();
68     void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity);
69     void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity);
70     void fillState(bool nonDefaults);
71     void customContextMenuRequested(QPoint pos);
72     void editCall();
73     void slotStartedSaving();
74     void slotSaved();
75     void slotGoFrameStart();
76     void slotGoFrameEnd();
77     void slotTraceChanged(ApiTraceEvent *event);
78     void slotRetraceErrors(const QList<ApiTraceError> &errors);
79     void slotErrorSelected(QTreeWidgetItem *current);
80     void slotSearchResult(const ApiTrace::SearchRequest &request,
81                           ApiTrace::SearchResult result,
82                           ApiTraceCall *call);
83     void slotFoundFrameStart(ApiTraceFrame *frame);
84     void slotFoundFrameEnd(ApiTraceFrame *frame);
85     void slotJumpToResult(ApiTraceCall *call);
86
87 private:
88     void initObjects();
89     void initConnections();
90     void newTraceFile(const QString &fileName);
91     void replayTrace(bool dumpState, bool dumpThumbnails);
92     void fillStateForFrame();
93
94     /* there's a difference between selected frame/call and
95      * current call/frame. the former implies actual selection
96      * the latter might be just a highlight, e.g. during searching
97      */
98     ApiTraceFrame *selectedFrame() const;
99     ApiTraceCall *selectedCall() const;
100     ApiTraceFrame *currentFrame() const;
101     ApiTraceCall *currentCall() const;
102
103
104 private:
105     Ui_MainWindow m_ui;
106     ShadersSourceWidget *m_sourcesWidget;
107
108     trace::API m_api;
109
110     ApiTrace *m_trace;
111     ApiTraceModel *m_model;
112     ApiTraceFilter *m_proxyModel;
113     int m_initalCallNum;
114
115     QProgressBar *m_progressBar;
116
117     ApiTraceEvent *m_selectedEvent;
118
119     ApiTraceEvent *m_stateEvent;
120
121     QList<QImage> m_thumbnails;
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