Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 1 | #ifndef MAINWINDOW_H |
2 | #define MAINWINDOW_H | ||||
3 | |||||
4 | #include "ui_mainwindow.h" | ||||
5 | |||||
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 6 | #include "trace_api.hpp" |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 7 | #include "apitrace.h" |
8 | |||||
Zack Rusin | 96130ac | 2011-03-27 01:48:36 -0400 | [diff] [blame] | 9 | #include <QMainWindow> |
Zack Rusin | 27cb2c4 | 2011-03-27 23:53:36 -0400 | [diff] [blame] | 10 | #include <QProcess> |
Zack Rusin | 96130ac | 2011-03-27 01:48:36 -0400 | [diff] [blame] | 11 | |
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 12 | class ApiTrace; |
Zack Rusin | cc0b491 | 2011-04-19 01:59:20 -0400 | [diff] [blame] | 13 | class ApiTraceCall; |
Zack Rusin | 581e3ff | 2011-03-31 23:58:07 -0400 | [diff] [blame] | 14 | class ApiTraceEvent; |
15 | class ApiTraceFilter; | ||||
Zack Rusin | 2caa06d | 2011-03-30 18:30:20 -0400 | [diff] [blame] | 16 | class ApiTraceFrame; |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 17 | class ApiTraceModel; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 18 | class ApiTraceState; |
Zack Rusin | 963102f | 2011-04-15 01:45:05 -0400 | [diff] [blame] | 19 | class ArgumentsEditor; |
Zack Rusin | c52d18a | 2011-04-11 00:15:07 -0400 | [diff] [blame] | 20 | class JumpWidget; |
Zack Rusin | 96130ac | 2011-03-27 01:48:36 -0400 | [diff] [blame] | 21 | class QModelIndex; |
Zack Rusin | de4ea41 | 2011-03-30 11:30:08 -0400 | [diff] [blame] | 22 | class QProgressBar; |
Zack Rusin | d923934 | 2011-04-19 23:43:06 -0400 | [diff] [blame] | 23 | class QTreeWidgetItem; |
Zack Rusin | c97fadc | 2011-04-07 15:16:59 -0400 | [diff] [blame] | 24 | class QUrl; |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 25 | struct ApiTraceError; |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 26 | class Retracer; |
Zack Rusin | f04cf8a | 2011-04-12 23:21:52 -0400 | [diff] [blame] | 27 | class SearchWidget; |
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 28 | class ShadersSourceWidget; |
Zack Rusin | ca16411 | 2011-04-11 02:23:09 -0400 | [diff] [blame] | 29 | class TraceProcess; |
Zack Rusin | 8e7a4ff | 2011-04-07 01:15:48 -0400 | [diff] [blame] | 30 | class VertexDataInterpreter; |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 31 | |
32 | class MainWindow : public QMainWindow | ||||
33 | { | ||||
34 | Q_OBJECT | ||||
35 | public: | ||||
36 | MainWindow(); | ||||
Zack Rusin | 11f7e63 | 2011-03-30 22:47:51 -0400 | [diff] [blame] | 37 | ~MainWindow(); |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 38 | |
39 | public slots: | ||||
José Fonseca | b7eb152 | 2011-11-27 15:15:33 +0000 | [diff] [blame] | 40 | void loadTrace(const QString &fileName, int callNum = -1); |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 41 | |
42 | private slots: | ||||
Zack Rusin | 96130ac | 2011-03-27 01:48:36 -0400 | [diff] [blame] | 43 | void callItemSelected(const QModelIndex &index); |
José Fonseca | 63d5940 | 2011-10-30 10:56:04 +0000 | [diff] [blame^] | 44 | void callItemActivated(const QModelIndex &index); |
Zack Rusin | 3438a52 | 2011-04-10 22:56:31 -0400 | [diff] [blame] | 45 | void createTrace(); |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 46 | void openTrace(); |
Zack Rusin | 27cb2c4 | 2011-03-27 23:53:36 -0400 | [diff] [blame] | 47 | void replayStart(); |
48 | void replayStop(); | ||||
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 49 | void replayFinished(const QString &output); |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 50 | void replayStateFound(ApiTraceState *state); |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 51 | void replayError(const QString &msg); |
Zack Rusin | de4ea41 | 2011-03-30 11:30:08 -0400 | [diff] [blame] | 52 | void startedLoadingTrace(); |
Zack Rusin | ebf971e | 2011-09-06 17:44:43 -0400 | [diff] [blame] | 53 | void loadProgess(int percent); |
Zack Rusin | de4ea41 | 2011-03-30 11:30:08 -0400 | [diff] [blame] | 54 | void finishedLoadingTrace(); |
Zack Rusin | 2caa06d | 2011-03-30 18:30:20 -0400 | [diff] [blame] | 55 | void lookupState(); |
Zack Rusin | e174557 | 2011-04-03 14:30:19 -0400 | [diff] [blame] | 56 | void showSettings(); |
Zack Rusin | c97fadc | 2011-04-07 15:16:59 -0400 | [diff] [blame] | 57 | void openHelp(const QUrl &url); |
Zack Rusin | 09ec484 | 2011-04-10 01:57:17 -0400 | [diff] [blame] | 58 | void showSurfacesMenu(const QPoint &pos); |
59 | void showSelectedSurface(); | ||||
Zack Rusin | fd638e5 | 2011-06-20 19:46:17 -0400 | [diff] [blame] | 60 | void saveSelectedSurface(); |
Zack Rusin | c52d18a | 2011-04-11 00:15:07 -0400 | [diff] [blame] | 61 | void slotGoTo(); |
62 | void slotJumpTo(int callNum); | ||||
Zack Rusin | ca16411 | 2011-04-11 02:23:09 -0400 | [diff] [blame] | 63 | void createdTrace(const QString &path); |
64 | void traceError(const QString &msg); | ||||
Zack Rusin | f04cf8a | 2011-04-12 23:21:52 -0400 | [diff] [blame] | 65 | void slotSearch(); |
66 | void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity); | ||||
67 | void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity); | ||||
Zack Rusin | e2dfa2e | 2011-04-13 01:35:03 -0400 | [diff] [blame] | 68 | void fillState(bool nonDefaults); |
Zack Rusin | fb23ba1 | 2011-04-15 19:29:45 -0400 | [diff] [blame] | 69 | void customContextMenuRequested(QPoint pos); |
70 | void editCall(); | ||||
Zack Rusin | 9af5bff | 2011-04-18 01:05:50 -0400 | [diff] [blame] | 71 | void slotStartedSaving(); |
72 | void slotSaved(); | ||||
Zack Rusin | 9623daf | 2011-04-18 18:03:34 -0400 | [diff] [blame] | 73 | void slotGoFrameStart(); |
74 | void slotGoFrameEnd(); | ||||
Zack Rusin | cc0b491 | 2011-04-19 01:59:20 -0400 | [diff] [blame] | 75 | void slotTraceChanged(ApiTraceCall *call); |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 76 | void slotRetraceErrors(const QList<ApiTraceError> &errors); |
Zack Rusin | d923934 | 2011-04-19 23:43:06 -0400 | [diff] [blame] | 77 | void slotErrorSelected(QTreeWidgetItem *current); |
Zack Rusin | ad513b3 | 2011-09-25 14:33:41 -0400 | [diff] [blame] | 78 | void slotSearchResult(const ApiTrace::SearchRequest &request, |
79 | ApiTrace::SearchResult result, | ||||
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 80 | ApiTraceCall *call); |
Zack Rusin | 93e4d15 | 2011-09-13 02:23:39 -0400 | [diff] [blame] | 81 | void slotFoundFrameStart(ApiTraceFrame *frame); |
82 | void slotFoundFrameEnd(ApiTraceFrame *frame); | ||||
Zack Rusin | da7579b | 2011-09-13 17:33:05 -0400 | [diff] [blame] | 83 | void slotJumpToResult(ApiTraceCall *call); |
Zack Rusin | 27cb2c4 | 2011-03-27 23:53:36 -0400 | [diff] [blame] | 84 | |
85 | private: | ||||
Zack Rusin | 4667842 | 2011-04-10 12:15:46 -0400 | [diff] [blame] | 86 | void initObjects(); |
87 | void initConnections(); | ||||
Zack Rusin | 27cb2c4 | 2011-03-27 23:53:36 -0400 | [diff] [blame] | 88 | void newTraceFile(const QString &fileName); |
Zack Rusin | 2caa06d | 2011-03-30 18:30:20 -0400 | [diff] [blame] | 89 | void replayTrace(bool dumpState); |
Zack Rusin | 11f7e63 | 2011-03-30 22:47:51 -0400 | [diff] [blame] | 90 | void fillStateForFrame(); |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 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; | ||||
Zack Rusin | 9623daf | 2011-04-18 18:03:34 -0400 | [diff] [blame] | 98 | ApiTraceFrame *currentFrame() const; |
Zack Rusin | be54773 | 2011-04-23 17:16:34 -0400 | [diff] [blame] | 99 | ApiTraceCall *currentCall() const; |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 100 | |
Zack Rusin | 8f98c3a | 2011-09-11 18:21:29 -0400 | [diff] [blame] | 101 | |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 102 | private: |
103 | Ui_MainWindow m_ui; | ||||
Zack Rusin | 7c814f1 | 2011-04-09 19:20:58 -0400 | [diff] [blame] | 104 | ShadersSourceWidget *m_sourcesWidget; |
105 | |||||
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 106 | trace::API m_api; |
107 | |||||
Zack Rusin | f6667d1 | 2011-03-30 11:03:37 -0400 | [diff] [blame] | 108 | ApiTrace *m_trace; |
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 109 | ApiTraceModel *m_model; |
Zack Rusin | 9106537 | 2011-03-26 01:54:10 -0400 | [diff] [blame] | 110 | ApiTraceFilter *m_proxyModel; |
José Fonseca | b7eb152 | 2011-11-27 15:15:33 +0000 | [diff] [blame] | 111 | int m_initalCallNum; |
Zack Rusin | 27cb2c4 | 2011-03-27 23:53:36 -0400 | [diff] [blame] | 112 | |
Zack Rusin | de4ea41 | 2011-03-30 11:30:08 -0400 | [diff] [blame] | 113 | QProgressBar *m_progressBar; |
114 | |||||
Zack Rusin | 581e3ff | 2011-03-31 23:58:07 -0400 | [diff] [blame] | 115 | ApiTraceEvent *m_selectedEvent; |
Zack Rusin | 11f7e63 | 2011-03-30 22:47:51 -0400 | [diff] [blame] | 116 | |
Zack Rusin | 581e3ff | 2011-03-31 23:58:07 -0400 | [diff] [blame] | 117 | ApiTraceEvent *m_stateEvent; |
Zack Rusin | 11f7e63 | 2011-03-30 22:47:51 -0400 | [diff] [blame] | 118 | |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 119 | Retracer *m_retracer; |
Zack Rusin | 8e7a4ff | 2011-04-07 01:15:48 -0400 | [diff] [blame] | 120 | |
121 | VertexDataInterpreter *m_vdataInterpreter; | ||||
Zack Rusin | 09ec484 | 2011-04-10 01:57:17 -0400 | [diff] [blame] | 122 | |
Zack Rusin | c52d18a | 2011-04-11 00:15:07 -0400 | [diff] [blame] | 123 | JumpWidget *m_jumpWidget; |
Zack Rusin | f04cf8a | 2011-04-12 23:21:52 -0400 | [diff] [blame] | 124 | SearchWidget *m_searchWidget; |
Zack Rusin | ca16411 | 2011-04-11 02:23:09 -0400 | [diff] [blame] | 125 | |
126 | TraceProcess *m_traceProcess; | ||||
Zack Rusin | 963102f | 2011-04-15 01:45:05 -0400 | [diff] [blame] | 127 | |
128 | ArgumentsEditor *m_argsEditor; | ||||
Zack Rusin | 3b7fbd7 | 2011-04-27 23:48:16 -0400 | [diff] [blame] | 129 | |
130 | ApiTraceEvent *m_nonDefaultsLookupEvent; | ||||
Zack Rusin | 601e837 | 2011-03-24 22:23:21 -0400 | [diff] [blame] | 131 | }; |
132 | |||||
133 | |||||
134 | #endif |