X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fmainwindow.h;h=3fde4c60060b95ed609c3a05b482b481c96d3abf;hb=ad513b3f5f6e3b1e460d9cf77479715cc05319b4;hp=47f3328710974eab72e1e47c4a83d8c3dd7fcff7;hpb=0b210a5f07344b85d9d04348daa9078db622eb6a;p=apitrace diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 47f3328..3fde4c6 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -3,25 +3,31 @@ #include "ui_mainwindow.h" +#include "apitrace.h" + #include #include class ApiTrace; +class ApiTraceCall; class ApiTraceEvent; class ApiTraceFilter; class ApiTraceFrame; class ApiTraceModel; -class QLineEdit; +class ApiTraceState; +class ArgumentsEditor; +class JumpWidget; class QModelIndex; class QProgressBar; +class QTreeWidgetItem; class QUrl; +struct ApiTraceError; class Retracer; +class SearchWidget; +class ShadersSourceWidget; +class TraceProcess; class VertexDataInterpreter; -namespace QJson { - class Parser; -} - class MainWindow : public QMainWindow { Q_OBJECT @@ -34,44 +40,89 @@ public slots: private slots: void callItemSelected(const QModelIndex &index); + void createTrace(); void openTrace(); - void filterTrace(); void replayStart(); void replayStop(); - void replayFinished(const QByteArray &output); + void replayFinished(const QString &output); + void replayStateFound(ApiTraceState *state); void replayError(const QString &msg); void startedLoadingTrace(); + void loadProgess(int percent); void finishedLoadingTrace(); void lookupState(); void showSettings(); void openHelp(const QUrl &url); + void showSurfacesMenu(const QPoint &pos); + void showSelectedSurface(); + void saveSelectedSurface(); + void slotGoTo(); + void slotJumpTo(int callNum); + void createdTrace(const QString &path); + void traceError(const QString &msg); + void slotSearch(); + void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity); + void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity); + void fillState(bool nonDefaults); + void customContextMenuRequested(QPoint pos); + void editCall(); + void slotStartedSaving(); + void slotSaved(); + void slotGoFrameStart(); + void slotGoFrameEnd(); + void slotTraceChanged(ApiTraceCall *call); + void slotRetraceErrors(const QList &errors); + void slotErrorSelected(QTreeWidgetItem *current); + void slotSearchResult(const ApiTrace::SearchRequest &request, + ApiTrace::SearchResult result, + ApiTraceCall *call); + void slotFoundFrameStart(ApiTraceFrame *frame); + void slotFoundFrameEnd(ApiTraceFrame *frame); + void slotJumpToResult(ApiTraceCall *call); private: + void initObjects(); + void initConnections(); void newTraceFile(const QString &fileName); void replayTrace(bool dumpState); - void parseState(const QVariantMap ¶ms); void fillStateForFrame(); + /* there's a difference between selected frame/call and + * current call/frame. the former implies actual selection + * the latter might be just a highlight, e.g. during searching + */ + ApiTraceFrame *selectedFrame() const; + ApiTraceCall *selectedCall() const; + ApiTraceFrame *currentFrame() const; + ApiTraceCall *currentCall() const; + + private: Ui_MainWindow m_ui; + ShadersSourceWidget *m_sourcesWidget; + ApiTrace *m_trace; ApiTraceModel *m_model; ApiTraceFilter *m_proxyModel; - QLineEdit *m_filterEdit; QProgressBar *m_progressBar; - QString m_traceFileName; - ApiTraceEvent *m_selectedEvent; ApiTraceEvent *m_stateEvent; - QJson::Parser *m_jsonParser; - Retracer *m_retracer; VertexDataInterpreter *m_vdataInterpreter; + + JumpWidget *m_jumpWidget; + SearchWidget *m_searchWidget; + + TraceProcess *m_traceProcess; + + ArgumentsEditor *m_argsEditor; + + ApiTraceEvent *m_nonDefaultsLookupEvent; };