| |
| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SKDEBUGGERUI_H |
| #define SKDEBUGGERUI_H |
| |
| |
| #include "SkCanvas.h" |
| #include "SkCanvasWidget.h" |
| #include "SkDebugger.h" |
| #include "SkGLWidget.h" |
| #include "SkListWidget.h" |
| #include "SkInspectorWidget.h" |
| #include "SkRasterWidget.h" |
| #include "SkDrawCommandGeometryWidget.h" |
| #include "SkSettingsWidget.h" |
| #include <QtCore/QVariant> |
| #include <QtGui/QAction> |
| #include <QtGui/QApplication> |
| #include <QtGui/QButtonGroup> |
| #include <QtGui/QHBoxLayout> |
| #include <QtGui/QHeaderView> |
| #include <QtGui/QListView> |
| #include <QtGui/QListWidget> |
| #include <QtGui/QMainWindow> |
| #include <QtGui/QSplitter> |
| #include <QtGui/QStatusBar> |
| #include <QtGui/QToolBar> |
| #include <QtGui/QVBoxLayout> |
| #include <QtGui/QWidget> |
| #include <QtGui/QMenu> |
| #include <QtGui/QMenuBar> |
| #include <vector> |
| |
| class SkTimedPicture; |
| namespace sk_tools { |
| class PictureRenderer; |
| } |
| |
| /** \class SkDebuggerGUI |
| |
| Container for the UI and it's functions. |
| */ |
| class SkDebuggerGUI : public QMainWindow { |
| Q_OBJECT |
| |
| public: |
| /** |
| Constructs the view of the application. |
| @param parent The parent container of this widget. |
| */ |
| SkDebuggerGUI(QWidget *parent = 0); |
| |
| /** |
| Updates the directory widget with the latest directory path stored in |
| the global class variable fPath. |
| */ |
| void setupDirectoryWidget(const QString& path); |
| |
| /** |
| Loads the specified file. |
| */ |
| void openFile(const QString& filename); |
| |
| signals: |
| void commandChanged(int command); |
| |
| private slots: |
| /** |
| Toggles breakpoint view in the list widget. |
| */ |
| void actionBreakpoints(); |
| |
| /** |
| Toggles between count and offset style of command indexing in GUI |
| */ |
| void actionToggleIndexStyle(); |
| |
| /** |
| Profile the commands |
| */ |
| void actionProfile(); |
| |
| /** |
| Cancels the command filter in the list widget. |
| */ |
| void actionCancel(); |
| |
| /** |
| Clears the breakpoint state off of all commands marked as breakpoints. |
| */ |
| void actionClearBreakpoints(); |
| |
| /** |
| Clears the deleted state off of all commands marked as deleted. |
| */ |
| void actionClearDeletes(); |
| |
| /** |
| Closes the application. |
| */ |
| void actionClose(); |
| |
| /** |
| Deletes the command in question. |
| */ |
| void actionDelete(); |
| |
| #if SK_SUPPORT_GPU |
| /** |
| Updates the visibility of the GL canvas widget and sample count of the GL surface. |
| */ |
| void actionGLSettingsChanged(); |
| #endif |
| |
| /** |
| Toggles the visibility of the inspector widget. |
| */ |
| void actionInspector(); |
| |
| /** |
| Plays from the current step to the next breakpoint if it exists, otherwise |
| executes all remaining draw commands. |
| */ |
| void actionPlay(); |
| |
| /** |
| Sets the visibility of the raster canvas widget according to the settings widget. |
| */ |
| void actionRasterSettingsChanged(); |
| |
| /** |
| Sets the visualization settings according to the settings widget. |
| */ |
| void actionVisualizationsChanged(); |
| |
| /** |
| Applies the new texture filter override |
| */ |
| void actionTextureFilter(); |
| |
| /** |
| Rewinds from the current step back to the start of the commands. |
| */ |
| void actionRewind(); |
| |
| /** |
| Saves the current SKP with all modifications. |
| */ |
| void actionSave(); |
| |
| /** |
| Saves the current SKP under a different name and/or location. |
| */ |
| void actionSaveAs(); |
| |
| /** |
| Sends the scale factor information to the settings widget. |
| */ |
| void actionScale(float scaleFactor); |
| |
| /** |
| Toggles the settings widget visibility. |
| */ |
| void actionSettings(); |
| |
| /** |
| Steps forward to the next draw command. |
| */ |
| void actionStepBack(); |
| |
| /** |
| Steps backwards to the next draw command. |
| */ |
| void actionStepForward(); |
| |
| /** |
| Called when the canvas is done being drawn to by SkCanvasWidget. |
| */ |
| void drawComplete(); |
| |
| /** |
| Loads an skpicture selected from the directory. |
| */ |
| void loadFile(QListWidgetItem *item); |
| |
| /** |
| Toggles a dialog with a file browser for navigating to a skpicture. Loads |
| the selected file. |
| */ |
| void openFile(); |
| |
| /** |
| Toggles whether drawing to a new command requires a double click |
| or simple focus. |
| */ |
| void pauseDrawing(bool isPaused = true); |
| |
| /** |
| Executes draw commands up to the selected command |
| */ |
| void registerListClick(QListWidgetItem *item); |
| |
| /** |
| Sets the command to active in the list widget. |
| */ |
| void selectCommand(int command); |
| |
| /** |
| Toggles the exclusive listing of commands set as deleted. |
| */ |
| void showDeletes(); |
| |
| /** |
| Toggles a breakpoint on the current step in the list widget. |
| */ |
| void toggleBreakpoint(); |
| |
| /** |
| Toggles the visibility of the directory widget. |
| */ |
| void toggleDirectory(); |
| |
| /** |
| Filters the list widgets command visibility based on the currently |
| active selection. |
| */ |
| void toggleFilter(QString string); |
| |
| void updateCommand(int newCommand); |
| void updateHit(int newHit); |
| private: |
| QSplitter fCentralSplitter; |
| QStatusBar fStatusBar; |
| QToolBar fToolBar; |
| |
| QAction fActionOpen; |
| QAction fActionBreakpoint; |
| QAction fActionToggleIndexStyle; |
| QAction fActionProfile; |
| QAction fActionCancel; |
| QAction fActionClearBreakpoints; |
| QAction fActionClearDeletes; |
| QAction fActionClose; |
| QAction fActionCreateBreakpoint; |
| QAction fActionDelete; |
| QAction fActionDirectory; |
| QAction fActionGoToLine; |
| QAction fActionInspector; |
| QAction fActionSettings; |
| QAction fActionPlay; |
| QAction fActionPause; |
| QAction fActionRewind; |
| QAction fActionSave; |
| QAction fActionSaveAs; |
| QAction fActionShowDeletes; |
| QAction fActionStepBack; |
| QAction fActionStepForward; |
| QAction fActionZoomIn; |
| QAction fActionZoomOut; |
| QSignalMapper fMapper; |
| |
| QWidget fSpacer; |
| QComboBox fFilter; |
| |
| QSplitter fLeftColumnSplitter; |
| QWidget fMainAndRightColumnWidget; |
| QVBoxLayout fMainAndRightColumnLayout; |
| QHBoxLayout fCanvasSettingsAndImageLayout; |
| QVBoxLayout fSettingsAndImageLayout; |
| |
| QListWidget fListWidget; |
| QListWidget fDirectoryWidget; |
| |
| SkDebugger fDebugger; |
| SkCanvasWidget fCanvasWidget; |
| |
| SkInspectorWidget fInspectorWidget; |
| SkSettingsWidget fSettingsWidget; |
| |
| QFrame fViewStateFrame; |
| QVBoxLayout fViewStateFrameLayout; |
| QGroupBox fViewStateGroup; |
| QFormLayout fViewStateLayout; |
| QLineEdit fCurrentCommandBox; |
| QLineEdit fCommandHitBox; |
| QLineEdit fZoomBox; |
| SkDrawCommandGeometryWidget fDrawCommandGeometryWidget; |
| |
| QString fPath; |
| SkString fFileName; |
| SkTDArray<bool> fSkipCommands; // has a specific command been deleted? |
| bool fDirectoryWidgetActive; |
| |
| QMenuBar fMenuBar; |
| QMenu fMenuFile; |
| QMenu fMenuEdit; |
| QMenu fMenuNavigate; |
| QMenu fMenuView; |
| QMenu fMenuWindows; |
| |
| bool fLoading; |
| int fPausedRow; |
| |
| /** |
| Creates the entire UI. |
| */ |
| void setupUi(QMainWindow *SkDebuggerGUI); |
| |
| /** |
| Pipes a QString in with the location of the filename, proceeds to updating |
| the listwidget, combowidget and inspectorwidget. |
| */ |
| void loadPicture(const SkString& fileName); |
| |
| /** |
| Creates a picture of the current canvas. |
| */ |
| void saveToFile(const SkString& filename); |
| |
| /** |
| Populates the list widget with the debugger draw command info. |
| */ |
| void setupListWidget(); |
| |
| /** |
| Populates the combo box widget with with the debugger draw command info. |
| */ |
| void setupComboBox(); |
| |
| /** |
| Fills in the overview pane with text |
| */ |
| void setupOverviewText(const SkTDArray<double>* typeTimes, double totTime, int numRuns); |
| |
| /** |
| Fills in the clip stack pane with text |
| */ |
| void setupClipStackText(); |
| |
| /** |
| Render the supplied picture several times tracking the time consumed |
| by each command. |
| */ |
| void run(const SkPicture* pict, |
| sk_tools::PictureRenderer* renderer, |
| int repeats); |
| |
| bool isPaused() const { |
| return fActionPause.isChecked(); |
| } |
| }; |
| |
| #endif // SKDEBUGGERUI_H |