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