]> git.cworth.org Git - apitrace/blob - gui/mainwindow.h
Allow to specify an initial call no in the qapitrace command line.
[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, int callNum = -1);
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(const ApiTrace::SearchRequest &request,
77                           ApiTrace::SearchResult result,
78                           ApiTraceCall *call);
79     void slotFoundFrameStart(ApiTraceFrame *frame);
80     void slotFoundFrameEnd(ApiTraceFrame *frame);
81     void slotJumpToResult(ApiTraceCall *call);
82
83 private:
84     void initObjects();
85     void initConnections();
86     void newTraceFile(const QString &fileName);
87     void replayTrace(bool dumpState);
88     void fillStateForFrame();
89
90     /* there's a difference between selected frame/call and
91      * current call/frame. the former implies actual selection
92      * the latter might be just a highlight, e.g. during searching
93      */
94     ApiTraceFrame *selectedFrame() const;
95     ApiTraceCall *selectedCall() const;
96     ApiTraceFrame *currentFrame() const;
97     ApiTraceCall *currentCall() const;
98
99
100 private:
101     Ui_MainWindow m_ui;
102     ShadersSourceWidget *m_sourcesWidget;
103
104     ApiTrace *m_trace;
105     ApiTraceModel *m_model;
106     ApiTraceFilter *m_proxyModel;
107     int m_initalCallNum;
108
109     QProgressBar *m_progressBar;
110
111     ApiTraceEvent *m_selectedEvent;
112
113     ApiTraceEvent *m_stateEvent;
114
115     Retracer *m_retracer;
116
117     VertexDataInterpreter *m_vdataInterpreter;
118
119     JumpWidget *m_jumpWidget;
120     SearchWidget *m_searchWidget;
121
122     TraceProcess *m_traceProcess;
123
124     ArgumentsEditor *m_argsEditor;
125
126     ApiTraceEvent *m_nonDefaultsLookupEvent;
127 };
128
129
130 #endif