]> git.cworth.org Git - apitrace/blob - gui/mainwindow.h
Make thumbnailing an non-automatic action.
[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 showThumbnails();
59     void showSettings();
60     void openHelp(const QUrl &url);
61     void showSurfacesMenu(const QPoint &pos);
62     void showSelectedSurface();
63     void saveSelectedSurface();
64     void slotGoTo();
65     void slotJumpTo(int callNum);
66     void createdTrace(const QString &path);
67     void traceError(const QString &msg);
68     void slotSearch();
69     void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity);
70     void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity);
71     void fillState(bool nonDefaults);
72     void customContextMenuRequested(QPoint pos);
73     void editCall();
74     void slotStartedSaving();
75     void slotSaved();
76     void slotGoFrameStart();
77     void slotGoFrameEnd();
78     void slotTraceChanged(ApiTraceEvent *event);
79     void slotRetraceErrors(const QList<ApiTraceError> &errors);
80     void slotErrorSelected(QTreeWidgetItem *current);
81     void slotSearchResult(const ApiTrace::SearchRequest &request,
82                           ApiTrace::SearchResult result,
83                           ApiTraceCall *call);
84     void slotFoundFrameStart(ApiTraceFrame *frame);
85     void slotFoundFrameEnd(ApiTraceFrame *frame);
86     void slotJumpToResult(ApiTraceCall *call);
87
88 private:
89     void initObjects();
90     void initConnections();
91     void newTraceFile(const QString &fileName);
92     void replayTrace(bool dumpState, bool dumpThumbnails);
93     void fillStateForFrame();
94
95     /* there's a difference between selected frame/call and
96      * current call/frame. the former implies actual selection
97      * the latter might be just a highlight, e.g. during searching
98      */
99     ApiTraceFrame *selectedFrame() const;
100     ApiTraceCall *selectedCall() const;
101     ApiTraceFrame *currentFrame() const;
102     ApiTraceCall *currentCall() const;
103
104
105 private:
106     Ui_MainWindow m_ui;
107     ShadersSourceWidget *m_sourcesWidget;
108
109     trace::API m_api;
110
111     ApiTrace *m_trace;
112     ApiTraceModel *m_model;
113     ApiTraceFilter *m_proxyModel;
114     int m_initalCallNum;
115
116     QProgressBar *m_progressBar;
117
118     ApiTraceEvent *m_selectedEvent;
119
120     ApiTraceEvent *m_stateEvent;
121
122     Retracer *m_retracer;
123
124     VertexDataInterpreter *m_vdataInterpreter;
125
126     JumpWidget *m_jumpWidget;
127     SearchWidget *m_searchWidget;
128
129     TraceProcess *m_traceProcess;
130
131     ArgumentsEditor *m_argsEditor;
132
133     ApiTraceEvent *m_nonDefaultsLookupEvent;
134 };
135
136
137 #endif