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