SkDebuggerGUI.cpp revision 30d35f23ae390043462e2aa5fc6863a4621aa74d
1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/* 2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc. 3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * 4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be 5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file. 6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkDebuggerGUI.h" 9bbad34de3b117347bedea619feaf1685586d4202chudy@google.com#include "SkGraphics.h" 10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QListWidgetItem> 11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comSkDebuggerGUI::SkDebuggerGUI(QWidget *parent) : 13c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QMainWindow(parent) 142d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com , fCentralWidget(this) 152d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com , fStatusBar(this) 162d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com , fToolBar(this) 17c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionOpen(this) 18c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionBreakpoint(this) 19c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionCancel(this) 207e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fActionClearBreakpoints(this) 21e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com , fActionClearDeletes(this) 22c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionClose(this) 23e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com , fActionCreateBreakpoint(this) 24c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionDelete(this) 25c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionDirectory(this) 26c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionGoToLine(this) 27c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionInspector(this) 28c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionPlay(this) 29e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com , fActionPause(this) 30c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionRewind(this) 310ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com , fActionSave(this) 320ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com , fActionSaveAs(this) 337e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fActionShowDeletes(this) 34c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionStepBack(this) 35c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionStepForward(this) 36a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com , fActionZoomIn(this) 37a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com , fActionZoomOut(this) 38a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com , fMapper(this) 39c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fListWidget(&fCentralWidget) 40c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fDirectoryWidget(&fCentralWidget) 41607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com , fCanvasWidget(this, &fDebugger) 42c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuBar(this) 43c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuFile(this) 44c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuNavigate(this) 45c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuView(this) 467e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fBreakpointsActivated(false) 477e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fDeletesActivated(false) 487e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fPause(false) 49d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com , fLoading(false) 50c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com{ 51902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupUi(this); 52ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fListWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(registerListClick(QListWidgetItem *))); 53c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); 54ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory())); 55ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); 56c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); 57ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(toggleBreakpoint())); 58c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); 59c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); 60c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack())); 61ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForward())); 62ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoints())); 63ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionInspector, SIGNAL(triggered()), this, SLOT(actionInspector())); 64ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionInspector, SIGNAL(triggered()), this, SLOT(actionSettings())); 65ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fFilter, SIGNAL(activated(QString)), this, SLOT(toggleFilter(QString))); 66c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionCancel, SIGNAL(triggered()), this, SLOT(actionCancel())); 677e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com connect(&fActionClearBreakpoints, SIGNAL(triggered()), this, SLOT(actionClearBreakpoints())); 687e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com connect(&fActionClearDeletes, SIGNAL(triggered()), this, SLOT(actionClearDeletes())); 69c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionClose, SIGNAL(triggered()), this, SLOT(actionClose())); 70ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(fSettingsWidget.getVisibilityButton(), SIGNAL(toggled(bool)), this, SLOT(actionCommandFilter())); 71ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(fSettingsWidget.getGLCheckBox(), SIGNAL(toggled(bool)), this, SLOT(actionGLWidget(bool))); 72ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(fSettingsWidget.getRasterCheckBox(), SIGNAL(toggled(bool)), this, SLOT(actionRasterWidget(bool))); 73ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionPause, SIGNAL(toggled(bool)), this, SLOT(pauseDrawing(bool))); 74e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com connect(&fActionCreateBreakpoint, SIGNAL(activated()), this, SLOT(toggleBreakpoint())); 757e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com connect(&fActionShowDeletes, SIGNAL(triggered()), this, SLOT(showDeletes())); 76ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(selectCommand(int))); 77ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fCanvasWidget, SIGNAL(hitChanged(int)), &fSettingsWidget, SLOT(updateHit(int))); 78ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fCanvasWidget, SIGNAL(scaleFactorChanged(float)), this, SLOT(actionScale(float))); 79ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fCanvasWidget, SIGNAL(commandChanged(int)), &fSettingsWidget, SLOT(updateCommand(int))); 800ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com connect(&fActionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); 810ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com connect(&fActionSave, SIGNAL(triggered()), this, SLOT(actionSave())); 827e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 83a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fMapper.setMapping(&fActionZoomIn, 1); 84a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fMapper.setMapping(&fActionZoomOut, -1); 85a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com 86a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com connect(&fActionZoomIn, SIGNAL(triggered()), &fMapper, SLOT(map())); 87a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com connect(&fActionZoomOut, SIGNAL(triggered()), &fMapper, SLOT(map())); 88a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com connect(&fMapper, SIGNAL(mapped(int)), &fCanvasWidget, SLOT(keyZoom(int))); 89a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com 907e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fInspectorWidget.setDisabled(true); 91d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuEdit.setDisabled(true); 92d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuNavigate.setDisabled(true); 93d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuView.setDisabled(true); 94bbad34de3b117347bedea619feaf1685586d4202chudy@google.com 95bbad34de3b117347bedea619feaf1685586d4202chudy@google.com SkGraphics::Init(); 96902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 97902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 98bbad34de3b117347bedea619feaf1685586d4202chudy@google.comSkDebuggerGUI::~SkDebuggerGUI() { 99bbad34de3b117347bedea619feaf1685586d4202chudy@google.com SkGraphics::Term(); 100bbad34de3b117347bedea619feaf1685586d4202chudy@google.com} 101902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 102902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionBreakpoints() { 1037e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fBreakpointsActivated = !fBreakpointsActivated; 1047e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 1057e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QListWidgetItem *item = fListWidget.item(row); 1067e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setHidden(item->checkState() == Qt::Unchecked && fBreakpointsActivated); 107902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 1087e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com} 109902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1107e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.comvoid SkDebuggerGUI::showDeletes() { 1117e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fDeletesActivated = !fDeletesActivated; 112c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 113c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem *item = fListWidget.item(row); 114607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com item->setHidden(fDebugger.isCommandVisible(row) 115607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com && fDeletesActivated); 116902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 117902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 118902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 119902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionCancel() { 120c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 121c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.item(row)->setHidden(false); 122902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 123902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 124902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1257e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.comvoid SkDebuggerGUI::actionClearBreakpoints() { 1267e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 1277e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QListWidgetItem* item = fListWidget.item(row); 1287e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setCheckState(Qt::Unchecked); 1297e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setData(Qt::DecorationRole, 1307e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QPixmap(":/images/Icons/blank.png")); 1317e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com } 1327e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com} 1337e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 1347e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.comvoid SkDebuggerGUI::actionClearDeletes() { 1357e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 1367e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QListWidgetItem* item = fListWidget.item(row); 1377e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setData(Qt::UserRole + 2, QPixmap(":/images/Icons/blank.png")); 138607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.setCommandVisible(row, true); 1397e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com } 1407e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com if (fPause) { 1417e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fCanvasWidget.drawTo(fPausedRow); 1427e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com } else { 1437e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fCanvasWidget.drawTo(fListWidget.currentRow()); 1447e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com } 1457e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com} 1467e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 147902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionCommandFilter() { 148607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.highlightCurrentCommand( 149c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.getVisibilityButton()->isChecked()); 150c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fCanvasWidget.drawTo(fListWidget.currentRow()); 151902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 153902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionClose() { 154902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com this->close(); 155902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 156902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 157902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionDelete() { 1587e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com int currentRow = fListWidget.currentRow(); 159c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem* item = fListWidget.currentItem(); 1607e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 161607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com if (fDebugger.isCommandVisible(currentRow)) { 1627e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setData(Qt::UserRole + 2, QPixmap(":/images/Icons/delete.png")); 163607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.setCommandVisible(currentRow, false); 164902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 1657e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setData(Qt::UserRole + 2, QPixmap(":/images/Icons/blank.png")); 166607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.setCommandVisible(currentRow, true); 167902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 1687e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 169e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com if (fPause) { 170e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fCanvasWidget.drawTo(fPausedRow); 171e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com } else { 172e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fCanvasWidget.drawTo(currentRow); 173e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com } 174902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 175902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 176ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.comvoid SkDebuggerGUI::actionGLWidget(bool isToggled) { 177ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kGPU_WidgetType, !isToggled); 178ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com} 179ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 180902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionInspector() { 181c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com if (fInspectorWidget.isHidden()) { 182c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fInspectorWidget.setHidden(false); 183902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 184c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fInspectorWidget.setHidden(true); 185902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 186902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 187902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 188902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionPlay() { 189c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = fListWidget.currentRow() + 1; row < fListWidget.count(); 1907dcae67cae277549accdd38d0496b72d00151239chudy@google.com row++) { 191c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem *item = fListWidget.item(row); 192902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Checked) { 193c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentItem(item); 194902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com return; 195902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 196902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 197c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentRow(fListWidget.count() - 1); 198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 199902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 200ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.comvoid SkDebuggerGUI::actionRasterWidget(bool isToggled) { 201ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kRaster_8888_WidgetType, !isToggled); 202ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com} 203ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 204902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionRewind() { 205e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fListWidget.setCurrentRow(0); 206902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 207902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2080ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.comvoid SkDebuggerGUI::actionSave() { 2090ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com QString filename; 2100ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com filename.append(fPath); 2110ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com filename.append("/"); 2120ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com filename.append(fDirectoryWidget.currentItem()->text()); 2130ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com saveToFile(filename); 2140ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com} 2150ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 2160ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.comvoid SkDebuggerGUI::actionSaveAs() { 2170ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com QString filename = QFileDialog::getSaveFileName(this, "Save File", "", 2180ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com "Skia Picture (*skp)"); 21938b08ce020f451a66263110b32e70f5022df4f83chudy@google.com if (!filename.endsWith(".skp", Qt::CaseInsensitive)) { 2200ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com filename.append(".skp"); 2210ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com } 2220ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com saveToFile(filename); 2230ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com} 2240ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 2257dcae67cae277549accdd38d0496b72d00151239chudy@google.comvoid SkDebuggerGUI::actionScale(float scaleFactor) { 226c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setZoomText(scaleFactor); 2277dcae67cae277549accdd38d0496b72d00151239chudy@google.com} 2287dcae67cae277549accdd38d0496b72d00151239chudy@google.com 229902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionSettings() { 230c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com if (fSettingsWidget.isHidden()) { 231c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setHidden(false); 232902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 233c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setHidden(true); 234902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 235902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 236902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 237902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionStepBack() { 238c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com int currentRow = fListWidget.currentRow(); 239902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (currentRow != 0) { 240c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentRow(currentRow - 1); 241902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 242902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 243902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 244902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionStepForward() { 245c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com int currentRow = fListWidget.currentRow(); 246902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString curRow = QString::number(currentRow); 247c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QString curCount = QString::number(fListWidget.count()); 248c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com if (currentRow < fListWidget.count() - 1) { 249c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentRow(currentRow + 1); 250902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 251902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 252902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 253a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.comvoid SkDebuggerGUI::drawComplete() { 254607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fInspectorWidget.setMatrix(fDebugger.getCurrentMatrix()); 255607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fInspectorWidget.setClip(fDebugger.getCurrentClip()); 256a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com} 257a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com 2580ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.comvoid SkDebuggerGUI::saveToFile(QString filename) { 2590ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com SkFILEWStream file(filename.toAscii()); 260607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.makePicture()->serialize(&file); 2610ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com} 2620ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 263902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::loadFile(QListWidgetItem *item) { 264902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fDirectoryWidgetActive) { 265902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString fileName; 266902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fileName.append(fPath); 267902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fileName.append("/"); 268902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fileName.append(item->text()); 269902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com loadPicture(fileName); 270902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 271902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 272902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 273902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::openFile() { 2747dcae67cae277549accdd38d0496b72d00151239chudy@google.com QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", 2757dcae67cae277549accdd38d0496b72d00151239chudy@google.com tr("Files (*.*)")); 276902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = false; 277902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (!fileName.isNull()) { 278902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QFileInfo pathInfo(fileName); 279902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fPath = pathInfo.path(); 280902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com loadPicture(fileName); 281902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupDirectoryWidget(); 282902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 283902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = true; 284902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 285902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 286c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.comvoid SkDebuggerGUI::pauseDrawing(bool isPaused) { 287607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fPause = isPaused; 288607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fPausedRow = fListWidget.currentRow(); 289607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fCanvasWidget.drawTo(fPausedRow); 2907dcae67cae277549accdd38d0496b72d00151239chudy@google.com} 2917dcae67cae277549accdd38d0496b72d00151239chudy@google.com 292902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::registerListClick(QListWidgetItem *item) { 293d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com if(!fLoading) { 294d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com int currentRow = fListWidget.currentRow(); 295ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 296ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com if (currentRow != -1) { 297ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com if (!fPause) { 298ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com fCanvasWidget.drawTo(currentRow); 299ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com } 30097cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo( 301ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com currentRow); 302ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 303ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com /* TODO(chudy): Add command type before parameters. Rename v 304ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com * to something more informative. */ 30597cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com if (currInfo) { 306ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com QString info; 307ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com info.append("<b>Parameters: </b><br/>"); 30897cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com for (int i = 0; i < currInfo->count(); i++) { 30997cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com 31097cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com info.append(QString((*currInfo)[i]->c_str())); 311ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com info.append("<br/>"); 312ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com } 3136bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com fInspectorWidget.setText(info, SkInspectorWidget::kDetail_TabType); 314ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com fInspectorWidget.setDisabled(false); 315d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com } 316902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 317ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 318902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 319902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 320902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3219ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.comvoid SkDebuggerGUI::selectCommand(int command) { 3229ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com if (fPause) { 3239ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com fListWidget.setCurrentRow(command); 3249ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com } 3259ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com} 3269ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com 327902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleBreakpoint() { 328c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem* item = fListWidget.currentItem(); 329902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Unchecked) { 330902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setCheckState(Qt::Checked); 331e565de4fad5598890124daadf385930043269415chudy@google.com item->setData(Qt::DecorationRole, 332e565de4fad5598890124daadf385930043269415chudy@google.com QPixmap(":/images/Icons/breakpoint_16x16.png")); 333902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 334902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setCheckState(Qt::Unchecked); 335e565de4fad5598890124daadf385930043269415chudy@google.com item->setData(Qt::DecorationRole, 336e565de4fad5598890124daadf385930043269415chudy@google.com QPixmap(":/images/Icons/blank.png")); 337902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 338902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 339902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 340902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleDirectory() { 341607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDirectoryWidget.setHidden(!fDirectoryWidget.isHidden()); 342902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 343902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 344902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleFilter(QString string) { 345c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 346c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem *item = fListWidget.item(row); 347607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com item->setHidden(item->text() != string); 348902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 349902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 350902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 351902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupUi(QMainWindow *SkDebuggerGUI) { 352902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon windowIcon; 3537dcae67cae277549accdd38d0496b72d00151239chudy@google.com windowIcon.addFile(QString::fromUtf8(":/images/Icons/skia.png"), QSize(), 3547dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 355902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setObjectName(QString::fromUtf8("SkDebuggerGUI")); 356902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->resize(1200, 1000); 357902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setWindowIcon(windowIcon); 358c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setWindowTitle("Skia Debugger"); 359902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 360e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionOpen.setShortcuts(QKeySequence::Open); 361c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionOpen.setText("Open"); 362902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 363c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon breakpoint; 364c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com breakpoint.addFile(QString::fromUtf8(":/images/Icons/breakpoint.png"), 3657dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSize(), QIcon::Normal, QIcon::Off); 366e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionBreakpoint.setShortcut(QKeySequence(tr("Ctrl+B"))); 367c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionBreakpoint.setIcon(breakpoint); 3687e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionBreakpoint.setText("Breakpoints"); 369902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 370c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon cancel; 371e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com cancel.addFile(QString::fromUtf8(":/images/Ico/reload.png"), QSize(), 3727dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 373c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionCancel.setIcon(cancel); 374c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionCancel.setText("Clear Filter"); 375902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3767e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearBreakpoints.setShortcut(QKeySequence(tr("Alt+B"))); 3777e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearBreakpoints.setText("Clear Breakpoints"); 3787e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 3797e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearDeletes.setShortcut(QKeySequence(tr("Alt+X"))); 3807e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearDeletes.setText("Clear Deletes"); 3817e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 382e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionClose.setShortcuts(QKeySequence::Quit); 383c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionClose.setText("Exit"); 384902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 385e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionCreateBreakpoint.setShortcut(QKeySequence(tr("B"))); 386e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionCreateBreakpoint.setText("Set Breakpoint"); 387e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 388e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionDelete.setShortcut(QKeySequence(tr("X"))); 389c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionDelete.setText("Delete Command"); 390902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 391e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionDirectory.setShortcut(QKeySequence(tr("Ctrl+D"))); 392e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionDirectory.setText("Directory"); 393902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 394902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon inspector; 395e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com inspector.addFile(QString::fromUtf8(":/images/Ico/inspector.png"), 3967dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSize(), QIcon::Normal, QIcon::Off); 397e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionInspector.setShortcut(QKeySequence(tr("Ctrl+I"))); 398c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionInspector.setIcon(inspector); 399e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionInspector.setText("Inspector"); 400902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 401c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon play; 402e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com play.addFile(QString::fromUtf8(":/images/Ico/play.png"), QSize(), 4037dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 404e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPlay.setShortcut(QKeySequence(tr("Ctrl+P"))); 405c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionPlay.setIcon(play); 406c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionPlay.setText("Play"); 407902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 408e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com QIcon pause; 409e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com pause.addFile(QString::fromUtf8(":/images/Ico/pause.png"), QSize(), 4107dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 411e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setShortcut(QKeySequence(tr("Space"))); 412e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setCheckable(true); 413e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setIcon(pause); 414e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setText("Pause"); 415e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 416c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon rewind; 417e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com rewind.addFile(QString::fromUtf8(":/images/Ico/rewind.png"), QSize(), 418c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon::Normal, QIcon::Off); 419e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionRewind.setShortcut(QKeySequence(tr("Ctrl+R"))); 420c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionRewind.setIcon(rewind); 421c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionRewind.setText("Rewind"); 422902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4230ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setShortcut(QKeySequence::Save); 4240ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setText("Save"); 4250ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setDisabled(true); 4260ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setShortcut(QKeySequence::SaveAs); 4270ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setText("Save As"); 4280ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setDisabled(true); 4290ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 4307e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionShowDeletes.setShortcut(QKeySequence(tr("Ctrl+X"))); 4317e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionShowDeletes.setText("Deleted Commands"); 4327e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 433c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon stepBack; 434e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com stepBack.addFile(QString::fromUtf8(":/images/Ico/previous.png"), QSize(), 4357dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 436e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionStepBack.setShortcut(QKeySequence(tr("["))); 437c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepBack.setIcon(stepBack); 438c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepBack.setText("Step Back"); 439902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 440c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon stepForward; 441e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com stepForward.addFile(QString::fromUtf8(":/images/Ico/next.png"), 442c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QSize(), QIcon::Normal, QIcon::Off); 443e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionStepForward.setShortcut(QKeySequence(tr("]"))); 444c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepForward.setIcon(stepForward); 445c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepForward.setText("Step Forward"); 446c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 447a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomIn.setShortcut(QKeySequence(tr("Ctrl+="))); 448a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomIn.setText("Zoom In"); 449a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomOut.setShortcut(QKeySequence(tr("Ctrl+-"))); 450a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomOut.setText("Zoom Out"); 451a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com 452c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setItemDelegate(new SkListWidget(&fListWidget)); 453c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setObjectName(QString::fromUtf8("listWidget")); 454c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setMaximumWidth(250); 455902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 456c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.addItem("--Filter By Available Commands--"); 457902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 458c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fDirectoryWidget.setMaximumWidth(250); 459c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fDirectoryWidget.setStyleSheet("QListWidget::Item {padding: 5px;}"); 460902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 461c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fCanvasWidget.setSizePolicy(QSizePolicy::Expanding, 4627dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSizePolicy::Expanding); 463902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 464c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fInspectorWidget.setSizePolicy(QSizePolicy::Expanding, 4657dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSizePolicy::Expanding); 466c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fInspectorWidget.setMaximumHeight(300); 467c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 468c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setSizePolicy(QSizePolicy::Expanding, 469c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QSizePolicy::Expanding); 470c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setMaximumWidth(250); 471c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 472c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fLeftColumnLayout.setSpacing(6); 473c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fLeftColumnLayout.addWidget(&fListWidget); 474c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fLeftColumnLayout.addWidget(&fDirectoryWidget); 475902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 476c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fCanvasAndSettingsLayout.setSpacing(6); 477c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fCanvasAndSettingsLayout.addWidget(&fCanvasWidget); 478c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fCanvasAndSettingsLayout.addWidget(&fSettingsWidget); 479902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 480c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMainAndRightColumnLayout.setSpacing(6); 481c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMainAndRightColumnLayout.addLayout(&fCanvasAndSettingsLayout); 482c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMainAndRightColumnLayout.addWidget(&fInspectorWidget); 483902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4842d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com fCentralWidget.setLayout(&fContainerLayout); 485c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fContainerLayout.setSpacing(6); 486c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fContainerLayout.setContentsMargins(11, 11, 11, 11); 487c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fContainerLayout.addLayout(&fLeftColumnLayout); 488c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fContainerLayout.addLayout(&fMainAndRightColumnLayout); 489902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 490c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setCentralWidget(&fCentralWidget); 491c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setStatusBar(&fStatusBar); 492902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 493e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fToolBar.setIconSize(QSize(32, 32)); 494c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 495c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->addToolBar(Qt::TopToolBarArea, &fToolBar); 496902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4970ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fSpacer.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 498902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 499c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionRewind); 500c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionStepBack); 501e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fToolBar.addAction(&fActionPause); 502c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionStepForward); 503c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionPlay); 504c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addSeparator(); 505e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fToolBar.addAction(&fActionInspector); 506c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addSeparator(); 5070ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fToolBar.addWidget(&fSpacer); 508c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addWidget(&fFilter); 509c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionCancel); 510902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 511902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // TODO(chudy): Remove static call. 512902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = false; 513ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com fPath = "/usr/local/google/home/chudy/trunk-git/trunk/skp"; 514902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupDirectoryWidget(); 515902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = true; 516902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 517902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // Menu Bar 518c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuFile.setTitle("File"); 519c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuFile.addAction(&fActionOpen); 5200ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fMenuFile.addAction(&fActionSave); 5210ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fMenuFile.addAction(&fActionSaveAs); 522c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuFile.addAction(&fActionClose); 523e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 524e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuEdit.setTitle("Edit"); 525e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuEdit.addAction(&fActionDelete); 5267e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuEdit.addAction(&fActionClearDeletes); 5277e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuEdit.addSeparator(); 528e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuEdit.addAction(&fActionCreateBreakpoint); 5297e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuEdit.addAction(&fActionClearBreakpoints); 530e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 531c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuNavigate.setTitle("Navigate"); 532e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionRewind); 533e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionStepBack); 534e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionStepForward); 535e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionPlay); 536e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionPause); 537c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuNavigate.addAction(&fActionGoToLine); 538e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 539c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuView.setTitle("View"); 540e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuView.addAction(&fActionBreakpoint); 5417e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuView.addAction(&fActionShowDeletes); 542a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fMenuView.addAction(&fActionZoomIn); 543a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fMenuView.addAction(&fActionZoomOut); 544e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 545e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuWindows.setTitle("Window"); 546e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuWindows.addAction(&fActionInspector); 547e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuWindows.addAction(&fActionDirectory); 548c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 549c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionGoToLine.setText("Go to Line..."); 550c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionGoToLine.setDisabled(true); 551c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuBar.addAction(fMenuFile.menuAction()); 552e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuBar.addAction(fMenuEdit.menuAction()); 553c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuBar.addAction(fMenuView.menuAction()); 554c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuBar.addAction(fMenuNavigate.menuAction()); 555e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuBar.addAction(fMenuWindows.menuAction()); 556902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5577dcae67cae277549accdd38d0496b72d00151239chudy@google.com fPause = false; 5587dcae67cae277549accdd38d0496b72d00151239chudy@google.com 559c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setMenuBar(&fMenuBar); 560902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QMetaObject::connectSlotsByName(SkDebuggerGUI); 561902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 562902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 563902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupDirectoryWidget() { 564c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QDir dir(fPath); 565902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QRegExp r(".skp"); 566c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fDirectoryWidget.clear(); 567c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com const QStringList files = dir.entryList(); 568902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com foreach (QString f, files) { 5697dcae67cae277549accdd38d0496b72d00151239chudy@google.com if (f.contains(r)) 570c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fDirectoryWidget.addItem(f); 571902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 572902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 573902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 574902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::loadPicture(QString fileName) { 575d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fLoading = true; 576607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkStream* stream = new SkFILEStream(fileName.toAscii()); 577607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkPicture* picture = new SkPicture(stream); 578686e68019374dca3692cac6d5f8d94515e53d6c8chudy@google.com fCanvasWidget.resetWidgetTransform(); 579607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.loadPicture(picture); 5804c7962e0a866b8416fa7046791c129eb5430b677chudy@google.com 581607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkSafeUnref(stream); 582607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkSafeUnref(picture); 583607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 58497cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com // Will this automatically clear out due to nature of refcnt? 58597cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com SkTDArray<SkString*>* commands = fDebugger.getDrawCommands(); 586607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 5877dcae67cae277549accdd38d0496b72d00151239chudy@google.com /* fDebugCanvas is reinitialized every load picture. Need it to retain value 588607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * of the visibility filter. 589607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * TODO(chudy): This should be deprecated since fDebugger is not 590607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * recreated. 591607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * */ 592607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.highlightCurrentCommand(fSettingsWidget.getVisibilityButton()->isChecked()); 593607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 59497cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com setupListWidget(commands); 59597cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com setupComboBox(commands); 5967e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fInspectorWidget.setDisabled(false); 597e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com fSettingsWidget.setDisabled(false); 598d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuEdit.setDisabled(false); 599d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuNavigate.setDisabled(false); 600d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuView.setDisabled(false); 6010ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setDisabled(false); 6020ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setDisabled(false); 603d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fLoading = false; 604d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com actionPlay(); 605902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 606902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 60797cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.comvoid SkDebuggerGUI::setupListWidget(SkTDArray<SkString*>* command) { 608c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.clear(); 609902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int counter = 0; 61030d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com int indent = 0; 61197cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com for (int i = 0; i < command->count(); i++) { 612902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem *item = new QListWidgetItem(); 61397cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com item->setData(Qt::DisplayRole, (*command)[i]->c_str()); 614902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 1, counter++); 61530d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 61630d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com if (0 == strcmp("Restore", (*command)[i]->c_str())) { 61730d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com indent -= 10; 61830d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com } 61930d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 62030d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com item->setData(Qt::UserRole + 3, indent); 62130d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 62230d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com if (0 == strcmp("Save", (*command)[i]->c_str()) || 62330d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 0 == strcmp("Save Layer", (*command)[i]->c_str())) { 62430d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com indent += 10; 62530d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com } 62630d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 627c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.addItem(item); 628902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 629902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 630902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 63197cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.comvoid SkDebuggerGUI::setupComboBox(SkTDArray<SkString*>* command) { 632c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.clear(); 633c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.addItem("--Filter By Available Commands--"); 634902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 635902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com std::map<std::string, int> map; 63697cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com for (int i = 0; i < command->count(); i++) { 63797cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com map[(*command)[i]->c_str()]++; 638902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 639902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 640902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString overview; 641607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com int counter = 0; 6427dcae67cae277549accdd38d0496b72d00151239chudy@google.com for (std::map<std::string, int>::iterator it = map.begin(); it != map.end(); 6437dcae67cae277549accdd38d0496b72d00151239chudy@google.com ++it) { 644902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append((it->first).c_str()); 645902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append(": "); 646902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append(QString::number(it->second)); 647902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("<br/>"); 6487dcae67cae277549accdd38d0496b72d00151239chudy@google.com counter += it->second; 649c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.addItem((it->first).c_str()); 650902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 651902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString total; 652902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com total.append("Total Draw Commands: "); 653902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com total.append(QString::number(counter)); 654902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com total.append("<br/>"); 655902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.insert(0, total); 656902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 657902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("<br/>"); 658607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com overview.append("SkPicture Width: "); 659902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): This is where we can pull out the SkPictures width. 660607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com overview.append(QString::number(fDebugger.pictureWidth())); 661902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("px<br/>"); 662607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com overview.append("SkPicture Height: "); 663607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com overview.append(QString::number(fDebugger.pictureHeight())); 664902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("px"); 6656bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com fInspectorWidget.setText(overview, SkInspectorWidget::kOverview_TabType); 666902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 667902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): Makes first item unselectable. 6687dcae67cae277549accdd38d0496b72d00151239chudy@google.com QStandardItemModel* model = qobject_cast<QStandardItemModel*>( 669c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.model()); 670c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QModelIndex firstIndex = model->index(0, fFilter.modelColumn(), 671c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.rootModelIndex()); 672902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QStandardItem* firstItem = model->itemFromIndex(firstIndex); 673902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com firstItem->setSelectable(false); 674902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 675