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