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" 93f0424ff57f93666df7347d4787816b210233eb0fmalita#include "SkPicture.h" 10cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen#include <QListWidgetItem> 11cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen#include <QtGui> 123e5c2b1041b15641931638d1d78b30d3c435fc71robertphillips#include "sk_tool_utils.h" 13e174a8bd74f35fafec1f740d9265efae092cea90robertphillips@google.com 14902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comSkDebuggerGUI::SkDebuggerGUI(QWidget *parent) : 15c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QMainWindow(parent) 16bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org , fCentralSplitter(this) 172d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com , fStatusBar(this) 182d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com , fToolBar(this) 19c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionOpen(this) 20c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionBreakpoint(this) 21c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionCancel(this) 227e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fActionClearBreakpoints(this) 23e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com , fActionClearDeletes(this) 24c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionClose(this) 25e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com , fActionCreateBreakpoint(this) 26c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionDelete(this) 27c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionDirectory(this) 28c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionGoToLine(this) 29c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionInspector(this) 302ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com , fActionSettings(this) 31c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionPlay(this) 32e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com , fActionPause(this) 33c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionRewind(this) 340ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com , fActionSave(this) 350ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com , fActionSaveAs(this) 367e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com , fActionShowDeletes(this) 37c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionStepBack(this) 38c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fActionStepForward(this) 39a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com , fActionZoomIn(this) 40a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com , fActionZoomOut(this) 41a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com , fMapper(this) 42bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org , fListWidget(&fCentralSplitter) 43bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org , fDirectoryWidget(&fCentralSplitter) 44607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com , fCanvasWidget(this, &fDebugger) 4563a470227beed0de553d769724e0108808391e42kkinnunen , fDrawCommandGeometryWidget(&fDebugger) 46c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuBar(this) 47c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuFile(this) 48c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuNavigate(this) 49c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com , fMenuView(this) 50d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com , fLoading(false) 51c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com{ 52902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupUi(this); 53dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com fListWidget.setSelectionMode(QAbstractItemView::ExtendedSelection); 540cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen connect(&fListWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, 550cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen SLOT(updateDrawCommandInfo())); 56c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); 57ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory())); 58ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); 59a745186c939ec641a861c74064155ec4aa3beb33djsollen connect(&fDirectoryWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(populateDirectoryWidget())); 60c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); 61ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(toggleBreakpoint())); 62c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); 63c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); 64c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack())); 65ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForward())); 66ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoints())); 67ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionInspector, SIGNAL(triggered()), this, SLOT(actionInspector())); 682ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com connect(&fActionSettings, SIGNAL(triggered()), this, SLOT(actionSettings())); 69ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fFilter, SIGNAL(activated(QString)), this, SLOT(toggleFilter(QString))); 70c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionCancel, SIGNAL(triggered()), this, SLOT(actionCancel())); 717e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com connect(&fActionClearBreakpoints, SIGNAL(triggered()), this, SLOT(actionClearBreakpoints())); 727e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com connect(&fActionClearDeletes, SIGNAL(triggered()), this, SLOT(actionClearDeletes())); 73c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com connect(&fActionClose, SIGNAL(triggered()), this, SLOT(actionClose())); 74e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU 7541c79cc0ff3003ef77cb48590f7887221856f941kkinnunen connect(&fSettingsWidget, SIGNAL(glSettingsChanged()), this, SLOT(actionGLSettingsChanged())); 76e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif 7741c79cc0ff3003ef77cb48590f7887221856f941kkinnunen connect(&fSettingsWidget, SIGNAL(rasterSettingsChanged()), this, SLOT(actionRasterSettingsChanged())); 7841c79cc0ff3003ef77cb48590f7887221856f941kkinnunen connect(&fSettingsWidget, SIGNAL(visualizationsChanged()), this, SLOT(actionVisualizationsChanged())); 7932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com connect(&fSettingsWidget, SIGNAL(texFilterSettingsChanged()), this, SLOT(actionTextureFilter())); 80ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fActionPause, SIGNAL(toggled(bool)), this, SLOT(pauseDrawing(bool))); 81e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com connect(&fActionCreateBreakpoint, SIGNAL(activated()), this, SLOT(toggleBreakpoint())); 827e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com connect(&fActionShowDeletes, SIGNAL(triggered()), this, SLOT(showDeletes())); 83ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(selectCommand(int))); 8441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(updateHit(int))); 85ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com connect(&fCanvasWidget, SIGNAL(scaleFactorChanged(float)), this, SLOT(actionScale(float))); 8663a470227beed0de553d769724e0108808391e42kkinnunen 870ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com connect(&fActionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); 880ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com connect(&fActionSave, SIGNAL(triggered()), this, SLOT(actionSave())); 897e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 90e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com fMapper.setMapping(&fActionZoomIn, SkCanvasWidget::kIn_ZoomCommand); 91e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com fMapper.setMapping(&fActionZoomOut, SkCanvasWidget::kOut_ZoomCommand); 92a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com 93a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com connect(&fActionZoomIn, SIGNAL(triggered()), &fMapper, SLOT(map())); 94a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com connect(&fActionZoomOut, SIGNAL(triggered()), &fMapper, SLOT(map())); 95e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com connect(&fMapper, SIGNAL(mapped(int)), &fCanvasWidget, SLOT(zoom(int))); 96a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com 9741c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateFrame.setDisabled(true); 987e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fInspectorWidget.setDisabled(true); 99d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuEdit.setDisabled(true); 100d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuNavigate.setDisabled(true); 101d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuView.setDisabled(true); 102bbad34de3b117347bedea619feaf1685586d4202chudy@google.com} 103902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 104902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionBreakpoints() { 105f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen bool breakpointsActivated = fActionBreakpoint.isChecked(); 1067e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 1077e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QListWidgetItem *item = fListWidget.item(row); 108f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen item->setHidden(item->checkState() == Qt::Unchecked && breakpointsActivated); 109902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 1107e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com} 111902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1127e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.comvoid SkDebuggerGUI::showDeletes() { 113f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen bool deletesActivated = fActionShowDeletes.isChecked(); 114c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 115c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem *item = fListWidget.item(row); 116f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen item->setHidden(fDebugger.isCommandVisible(row) && deletesActivated); 117902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 118902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 119d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com 120902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionCancel() { 121c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 122c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.item(row)->setHidden(false); 123902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 124902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 125902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1267e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.comvoid SkDebuggerGUI::actionClearBreakpoints() { 1277e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 1287e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QListWidgetItem* item = fListWidget.item(row); 1297e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setCheckState(Qt::Unchecked); 1307e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com item->setData(Qt::DecorationRole, 1318e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com QPixmap(":/blank.png")); 1327e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com } 1337e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com} 1347e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 1357e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.comvoid SkDebuggerGUI::actionClearDeletes() { 1367e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 1377e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com QListWidgetItem* item = fListWidget.item(row); 1388e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com item->setData(Qt::UserRole + 2, QPixmap(":/blank.png")); 139607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.setCommandVisible(row, true); 1405f97114fd28e03e8c4c1c22c924d383b45cdced1robertphillips@google.com fSkipCommands[row] = false; 1417e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com } 142cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen this->updateImage(); 1437e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com} 1447e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 145902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionClose() { 146902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com this->close(); 147902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 148902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 149902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionDelete() { 1507e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 151dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com for (int row = 0; row < fListWidget.count(); ++row) { 152dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com QListWidgetItem* item = fListWidget.item(row); 153dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com 154dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com if (!item->isSelected()) { 155dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com continue; 156dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com } 157dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com 158dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com if (fDebugger.isCommandVisible(row)) { 159dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com item->setData(Qt::UserRole + 2, QPixmap(":/delete.png")); 160dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com fDebugger.setCommandVisible(row, false); 161dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com fSkipCommands[row] = true; 162dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com } else { 163dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com item->setData(Qt::UserRole + 2, QPixmap(":/blank.png")); 164dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com fDebugger.setCommandVisible(row, true); 165dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com fSkipCommands[row] = false; 166dd4b74548accfbf42b8e6b8d7eefbfb8c8f17e00robertphillips@google.com } 167902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 1687e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 169cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen this->updateImage(); 170902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 171902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 172e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU 17341c79cc0ff3003ef77cb48590f7887221856f941kkinnunenvoid SkDebuggerGUI::actionGLSettingsChanged() { 174fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org bool isToggled = fSettingsWidget.isGLActive(); 175fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org if (isToggled) { 176fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org fCanvasWidget.setGLSampleCount(fSettingsWidget.getGLSampleCount()); 177fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org } 178ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kGPU_WidgetType, !isToggled); 179ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com} 180e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif 181ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 182902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionInspector() { 18341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen bool newState = !fInspectorWidget.isHidden(); 18441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen 18541c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fInspectorWidget.setHidden(newState); 18641c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateFrame.setHidden(newState); 18763a470227beed0de553d769724e0108808391e42kkinnunen fDrawCommandGeometryWidget.setHidden(newState); 188902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 189902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 190902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionPlay() { 191c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = fListWidget.currentRow() + 1; row < fListWidget.count(); 1927dcae67cae277549accdd38d0496b72d00151239chudy@google.com row++) { 193c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem *item = fListWidget.item(row); 194902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Checked) { 195c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentItem(item); 196902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com return; 197902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 199c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentRow(fListWidget.count() - 1); 200902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 201902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 20241c79cc0ff3003ef77cb48590f7887221856f941kkinnunenvoid SkDebuggerGUI::actionRasterSettingsChanged() { 20341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kRaster_8888_WidgetType, 20441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen !fSettingsWidget.isRasterEnabled()); 205cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen this->updateImage(); 206768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org} 207768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org 20841c79cc0ff3003ef77cb48590f7887221856f941kkinnunenvoid SkDebuggerGUI::actionVisualizationsChanged() { 20941c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fDebugger.setMegaViz(fSettingsWidget.isMegaVizEnabled()); 21041c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fDebugger.setPathOps(fSettingsWidget.isPathOpsEnabled()); 21141c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fDebugger.highlightCurrentCommand(fSettingsWidget.isVisibilityFilterEnabled()); 212f42fca4027ed4f235ef927786813a5ed0e6652b9robertphillips fDebugger.setOverdrawViz(fSettingsWidget.isOverdrawVizEnabled()); 213cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen this->updateImage(); 2142a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org} 2152a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 21632bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.comvoid SkDebuggerGUI::actionTextureFilter() { 217e7903c7397c694e343c2c0fcc5cabea351212f23reed SkFilterQuality quality; 218e7903c7397c694e343c2c0fcc5cabea351212f23reed bool enabled = fSettingsWidget.getFilterOverride(&quality); 219e7903c7397c694e343c2c0fcc5cabea351212f23reed fDebugger.setTexFilterOverride(enabled, quality); 22032bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com fCanvasWidget.update(); 22132bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com} 22232bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 223902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionRewind() { 224e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fListWidget.setCurrentRow(0); 225902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 226902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2270ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.comvoid SkDebuggerGUI::actionSave() { 228e219baf74742ee5cda3c99fabe6acaa8f878fe00robertphillips@google.com fFileName = fPath.toAscii().data(); 229d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com fFileName.append("/"); 230e219baf74742ee5cda3c99fabe6acaa8f878fe00robertphillips@google.com fFileName.append(fDirectoryWidget.currentItem()->text().toAscii().data()); 231d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com saveToFile(fFileName); 2320ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com} 2330ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 2340ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.comvoid SkDebuggerGUI::actionSaveAs() { 2350ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com QString filename = QFileDialog::getSaveFileName(this, "Save File", "", 2360ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com "Skia Picture (*skp)"); 23738b08ce020f451a66263110b32e70f5022df4f83chudy@google.com if (!filename.endsWith(".skp", Qt::CaseInsensitive)) { 2380ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com filename.append(".skp"); 2390ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com } 240c3c8216949146641222f7d2f7a464340627ae43adjsollen@google.com saveToFile(SkString(filename.toAscii().data())); 2410ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com} 2420ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 2437dcae67cae277549accdd38d0496b72d00151239chudy@google.comvoid SkDebuggerGUI::actionScale(float scaleFactor) { 24441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fZoomBox.setText(QString::number(scaleFactor * 100, 'f', 0).append("%")); 2457dcae67cae277549accdd38d0496b72d00151239chudy@google.com} 2467dcae67cae277549accdd38d0496b72d00151239chudy@google.com 247902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionSettings() { 248c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com if (fSettingsWidget.isHidden()) { 249c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setHidden(false); 250902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 251c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fSettingsWidget.setHidden(true); 252902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 253902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 254902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 255902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionStepBack() { 256c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com int currentRow = fListWidget.currentRow(); 257902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (currentRow != 0) { 258c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentRow(currentRow - 1); 259902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 260902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 261902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 262902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionStepForward() { 263c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com int currentRow = fListWidget.currentRow(); 264902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString curRow = QString::number(currentRow); 265c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QString curCount = QString::number(fListWidget.count()); 266c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com if (currentRow < fListWidget.count() - 1) { 267c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setCurrentRow(currentRow + 1); 268902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 269902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 270902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 271a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.comvoid SkDebuggerGUI::drawComplete() { 272cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen SkString clipStack; 273cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen fDebugger.getClipStackText(&clipStack); 274cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen fInspectorWidget.setText(clipStack.c_str(), SkInspectorWidget::kClipStack_TabType); 275cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen 276607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fInspectorWidget.setMatrix(fDebugger.getCurrentMatrix()); 277607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fInspectorWidget.setClip(fDebugger.getCurrentClip()); 278a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com} 279a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com 280d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.comvoid SkDebuggerGUI::saveToFile(const SkString& filename) { 281d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com SkFILEWStream file(filename.c_str()); 28225bc2f86c2b94ee1f0921d90e6629d8cb22f69b7robertphillips@google.com SkAutoTUnref<SkPicture> copy(fDebugger.copyPicture()); 28325bc2f86c2b94ee1f0921d90e6629d8cb22f69b7robertphillips@google.com 284f2848b60358deb23eca38a4587247c1d2e335d30halcanary SkAutoTUnref<SkPixelSerializer> serializer( 285f2848b60358deb23eca38a4587247c1d2e335d30halcanary SkImageEncoder::CreatePixelSerializer()); 286f2848b60358deb23eca38a4587247c1d2e335d30halcanary copy->serialize(&file, serializer); 2870ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com} 2880ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 289902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::loadFile(QListWidgetItem *item) { 290a745186c939ec641a861c74064155ec4aa3beb33djsollen if (item == nullptr) { 291a745186c939ec641a861c74064155ec4aa3beb33djsollen return; 292a745186c939ec641a861c74064155ec4aa3beb33djsollen } 293a745186c939ec641a861c74064155ec4aa3beb33djsollen 294a745186c939ec641a861c74064155ec4aa3beb33djsollen SkString fileName(fPath.toAscii().data()); 295a745186c939ec641a861c74064155ec4aa3beb33djsollen // don't add a '/' to files in the local directory 296a745186c939ec641a861c74064155ec4aa3beb33djsollen if (fileName.size() > 0) { 297a745186c939ec641a861c74064155ec4aa3beb33djsollen fileName.append("/"); 298a745186c939ec641a861c74064155ec4aa3beb33djsollen } 299a745186c939ec641a861c74064155ec4aa3beb33djsollen fileName.append(item->text().toAscii().data()); 300a745186c939ec641a861c74064155ec4aa3beb33djsollen 301a745186c939ec641a861c74064155ec4aa3beb33djsollen if (!fileName.equals(fFileName)) { 302a745186c939ec641a861c74064155ec4aa3beb33djsollen fFileName = fileName; 303d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com loadPicture(fFileName); 304902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 305902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 306902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 307902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::openFile() { 308d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com QString temp = QFileDialog::getOpenFileName(this, tr("Open File"), "", 3097dcae67cae277549accdd38d0496b72d00151239chudy@google.com tr("Files (*.*)")); 310ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com openFile(temp); 311ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com} 312ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com 313ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.comvoid SkDebuggerGUI::openFile(const QString &filename) { 314ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com if (!filename.isEmpty()) { 315ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com QFileInfo pathInfo(filename); 316ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com loadPicture(SkString(filename.toAscii().data())); 317ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com setupDirectoryWidget(pathInfo.path()); 318902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 319902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 320902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 321c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.comvoid SkDebuggerGUI::pauseDrawing(bool isPaused) { 322607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fPausedRow = fListWidget.currentRow(); 323cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen this->updateDrawCommandInfo(); 3247dcae67cae277549accdd38d0496b72d00151239chudy@google.com} 3257dcae67cae277549accdd38d0496b72d00151239chudy@google.com 3260cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunenvoid SkDebuggerGUI::updateDrawCommandInfo() { 3270cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen int currentRow = -1; 3280cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen if (!fLoading) { 3290cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen currentRow = fListWidget.currentRow(); 3300cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen } 3310cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen if (currentRow == -1) { 3320cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fInspectorWidget.setText("", SkInspectorWidget::kDetail_TabType); 3330cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fInspectorWidget.setText("", SkInspectorWidget::kClipStack_TabType); 3340cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fCurrentCommandBox.setText(""); 3350cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fDrawCommandGeometryWidget.setDrawCommandIndex(-1); 3360cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen } else { 337cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen this->updateImage(); 338cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen 3390cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen const SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo(currentRow); 3400cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen 3410cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen /* TODO(chudy): Add command type before parameters. Rename v 3420cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen * to something more informative. */ 3430cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen if (currInfo) { 3440cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen QString info; 3450cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen info.append("<b>Parameters: </b><br/>"); 3460cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen for (int i = 0; i < currInfo->count(); i++) { 3470cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen info.append(QString((*currInfo)[i]->c_str())); 3480cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen info.append("<br/>"); 349d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com } 3500cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fInspectorWidget.setText(info, SkInspectorWidget::kDetail_TabType); 351902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 352ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com 3530cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fCurrentCommandBox.setText(QString::number(currentRow)); 3540cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen 3550cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fDrawCommandGeometryWidget.setDrawCommandIndex(currentRow); 3560cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen 3570cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fInspectorWidget.setDisabled(false); 3580cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fViewStateFrame.setDisabled(false); 359902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 360902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 361902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3629ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.comvoid SkDebuggerGUI::selectCommand(int command) { 363f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen if (this->isPaused()) { 3649ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com fListWidget.setCurrentRow(command); 3659ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com } 3669ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com} 3679ca9bfe9f6eaae41841446386e40be1013907e99chudy@google.com 368902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleBreakpoint() { 369c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem* item = fListWidget.currentItem(); 370902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Unchecked) { 371902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setCheckState(Qt::Checked); 372e565de4fad5598890124daadf385930043269415chudy@google.com item->setData(Qt::DecorationRole, 3738e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com QPixmap(":/breakpoint_16x16.png")); 374902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 375902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setCheckState(Qt::Unchecked); 376e565de4fad5598890124daadf385930043269415chudy@google.com item->setData(Qt::DecorationRole, 3778e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com QPixmap(":/blank.png")); 378902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 379902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 380902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 381902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleDirectory() { 382607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDirectoryWidget.setHidden(!fDirectoryWidget.isHidden()); 383902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 384902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 385902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleFilter(QString string) { 386c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com for (int row = 0; row < fListWidget.count(); row++) { 387c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QListWidgetItem *item = fListWidget.item(row); 388607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com item->setHidden(item->text() != string); 389902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 390902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 391902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 392902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupUi(QMainWindow *SkDebuggerGUI) { 393902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon windowIcon; 3948e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com windowIcon.addFile(QString::fromUtf8(":/skia.png"), QSize(), 3957dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 396902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setObjectName(QString::fromUtf8("SkDebuggerGUI")); 397902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->resize(1200, 1000); 398902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setWindowIcon(windowIcon); 399c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setWindowTitle("Skia Debugger"); 400902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 401e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionOpen.setShortcuts(QKeySequence::Open); 402c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionOpen.setText("Open"); 403902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 404c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon breakpoint; 4058e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com breakpoint.addFile(QString::fromUtf8(":/breakpoint.png"), 4067dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSize(), QIcon::Normal, QIcon::Off); 407e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionBreakpoint.setShortcut(QKeySequence(tr("Ctrl+B"))); 408c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionBreakpoint.setIcon(breakpoint); 4097e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionBreakpoint.setText("Breakpoints"); 410f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen fActionBreakpoint.setCheckable(true); 411902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 412c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon cancel; 4138e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com cancel.addFile(QString::fromUtf8(":/reload.png"), QSize(), 4147dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 415c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionCancel.setIcon(cancel); 416c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionCancel.setText("Clear Filter"); 417902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4187e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearBreakpoints.setShortcut(QKeySequence(tr("Alt+B"))); 4197e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearBreakpoints.setText("Clear Breakpoints"); 4207e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 4217e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearDeletes.setShortcut(QKeySequence(tr("Alt+X"))); 4227e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionClearDeletes.setText("Clear Deletes"); 4237e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 424e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionClose.setShortcuts(QKeySequence::Quit); 425c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionClose.setText("Exit"); 426902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 427e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionCreateBreakpoint.setShortcut(QKeySequence(tr("B"))); 428e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionCreateBreakpoint.setText("Set Breakpoint"); 429e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 430e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionDelete.setShortcut(QKeySequence(tr("X"))); 431c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionDelete.setText("Delete Command"); 432902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 433e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionDirectory.setShortcut(QKeySequence(tr("Ctrl+D"))); 434e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionDirectory.setText("Directory"); 435902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 436902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon inspector; 437d163636ec6914a95c7a8333dc94bc0cae68b226arobertphillips@google.com inspector.addFile(QString::fromUtf8(":/inspector.png"), 4387dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSize(), QIcon::Normal, QIcon::Off); 439e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionInspector.setShortcut(QKeySequence(tr("Ctrl+I"))); 440c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionInspector.setIcon(inspector); 441e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionInspector.setText("Inspector"); 442902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4432ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com QIcon settings; 4442ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com settings.addFile(QString::fromUtf8(":/inspector.png"), 4452ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com QSize(), QIcon::Normal, QIcon::Off); 4462ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com fActionSettings.setShortcut(QKeySequence(tr("Ctrl+G"))); 4472ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com fActionSettings.setIcon(settings); 4482ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com fActionSettings.setText("Settings"); 4490d55dd7d2c07a77b22478bed9b30ff44ceecad68skia.committer@gmail.com 450c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon play; 451d163636ec6914a95c7a8333dc94bc0cae68b226arobertphillips@google.com play.addFile(QString::fromUtf8(":/play.png"), QSize(), 4527dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 453e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPlay.setShortcut(QKeySequence(tr("Ctrl+P"))); 454c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionPlay.setIcon(play); 455c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionPlay.setText("Play"); 456902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 457e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com QIcon pause; 458d163636ec6914a95c7a8333dc94bc0cae68b226arobertphillips@google.com pause.addFile(QString::fromUtf8(":/pause.png"), QSize(), 4597dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 460e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setShortcut(QKeySequence(tr("Space"))); 461e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setCheckable(true); 462e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setIcon(pause); 463e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionPause.setText("Pause"); 464e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 465c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon rewind; 4668e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com rewind.addFile(QString::fromUtf8(":/rewind.png"), QSize(), 467c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon::Normal, QIcon::Off); 468e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionRewind.setShortcut(QKeySequence(tr("Ctrl+R"))); 469c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionRewind.setIcon(rewind); 470c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionRewind.setText("Rewind"); 471902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4720ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setShortcut(QKeySequence::Save); 4730ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setText("Save"); 4740ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setDisabled(true); 4750ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setShortcut(QKeySequence::SaveAs); 4760ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setText("Save As"); 4770ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setDisabled(true); 4780ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com 4797e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionShowDeletes.setShortcut(QKeySequence(tr("Ctrl+X"))); 4807e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fActionShowDeletes.setText("Deleted Commands"); 481f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen fActionShowDeletes.setCheckable(true); 4827e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 483c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon stepBack; 4848e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com stepBack.addFile(QString::fromUtf8(":/previous.png"), QSize(), 4857dcae67cae277549accdd38d0496b72d00151239chudy@google.com QIcon::Normal, QIcon::Off); 486e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionStepBack.setShortcut(QKeySequence(tr("["))); 487c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepBack.setIcon(stepBack); 488c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepBack.setText("Step Back"); 489902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 490c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QIcon stepForward; 4918e41a168b0c4eedfcfb05d46f6a19895cc9459ecrobertphillips@google.com stepForward.addFile(QString::fromUtf8(":/next.png"), 492c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QSize(), QIcon::Normal, QIcon::Off); 493e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fActionStepForward.setShortcut(QKeySequence(tr("]"))); 494c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepForward.setIcon(stepForward); 495c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionStepForward.setText("Step Forward"); 496c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 497a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomIn.setShortcut(QKeySequence(tr("Ctrl+="))); 498a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomIn.setText("Zoom In"); 499a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomOut.setShortcut(QKeySequence(tr("Ctrl+-"))); 500a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fActionZoomOut.setText("Zoom Out"); 501a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com 502c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setItemDelegate(new SkListWidget(&fListWidget)); 503c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.setObjectName(QString::fromUtf8("listWidget")); 504bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fListWidget.setMinimumWidth(250); 505902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 506c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.addItem("--Filter By Available Commands--"); 507902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 508bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fDirectoryWidget.setMinimumWidth(250); 509c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fDirectoryWidget.setStyleSheet("QListWidget::Item {padding: 5px;}"); 510902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 511c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fCanvasWidget.setSizePolicy(QSizePolicy::Expanding, 5127dcae67cae277549accdd38d0496b72d00151239chudy@google.com QSizePolicy::Expanding); 513902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 51463a470227beed0de553d769724e0108808391e42kkinnunen fDrawCommandGeometryWidget.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 5156dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 5166dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com fSettingsAndImageLayout.addWidget(&fSettingsWidget); 5176dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 51841c79cc0ff3003ef77cb48590f7887221856f941kkinnunen // View state group, part of inspector. 51941c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateFrame.setFrameStyle(QFrame::Panel); 52041c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateFrame.setLayout(&fViewStateFrameLayout); 52141c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateFrameLayout.addWidget(&fViewStateGroup); 52263a470227beed0de553d769724e0108808391e42kkinnunen fViewStateGroup.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 52341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateGroup.setTitle("View"); 52441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateLayout.addRow("Zoom Level", &fZoomBox); 52541c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fZoomBox.setText("100%"); 52641c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fZoomBox.setMinimumSize(QSize(50,25)); 52741c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fZoomBox.setMaximumSize(QSize(50,25)); 52841c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fZoomBox.setAlignment(Qt::AlignRight); 52941c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fZoomBox.setReadOnly(true); 53041c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateLayout.addRow("Command HitBox", &fCommandHitBox); 53141c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCommandHitBox.setText("0"); 53241c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCommandHitBox.setMinimumSize(QSize(50,25)); 53341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCommandHitBox.setMaximumSize(QSize(50,25)); 53441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCommandHitBox.setAlignment(Qt::AlignRight); 53541c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCommandHitBox.setReadOnly(true); 53641c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateLayout.addRow("Current Command", &fCurrentCommandBox); 53741c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCurrentCommandBox.setText("0"); 53841c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCurrentCommandBox.setMinimumSize(QSize(50,25)); 53941c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCurrentCommandBox.setMaximumSize(QSize(50,25)); 54041c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCurrentCommandBox.setAlignment(Qt::AlignRight); 54141c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCurrentCommandBox.setReadOnly(true); 54241c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateGroup.setLayout(&fViewStateLayout); 54341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fSettingsAndImageLayout.addWidget(&fViewStateFrame); 54441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen 54563a470227beed0de553d769724e0108808391e42kkinnunen fDrawCommandGeometryWidget.setToolTip("Current Command Geometry"); 54663a470227beed0de553d769724e0108808391e42kkinnunen fSettingsAndImageLayout.addWidget(&fDrawCommandGeometryWidget); 547c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 548bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fLeftColumnSplitter.addWidget(&fListWidget); 549bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fLeftColumnSplitter.addWidget(&fDirectoryWidget); 550bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fLeftColumnSplitter.setOrientation(Qt::Vertical); 551902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5526dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com fCanvasSettingsAndImageLayout.setSpacing(6); 55341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCanvasSettingsAndImageLayout.addWidget(&fCanvasWidget, 1); 55441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCanvasSettingsAndImageLayout.addLayout(&fSettingsAndImageLayout, 0); 5556dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 556c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMainAndRightColumnLayout.setSpacing(6); 5577c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen fMainAndRightColumnLayout.addLayout(&fCanvasSettingsAndImageLayout, 1); 5587c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen fMainAndRightColumnLayout.addWidget(&fInspectorWidget, 0); 559bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fMainAndRightColumnWidget.setLayout(&fMainAndRightColumnLayout); 560902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 561bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fCentralSplitter.addWidget(&fLeftColumnSplitter); 562bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fCentralSplitter.addWidget(&fMainAndRightColumnWidget); 563bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fCentralSplitter.setStretchFactor(0, 0); 564bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org fCentralSplitter.setStretchFactor(1, 1); 565902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 566bcd431e1778001990c4d877929b14959dc96a0d3commit-bot@chromium.org SkDebuggerGUI->setCentralWidget(&fCentralSplitter); 567c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setStatusBar(&fStatusBar); 568902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 569e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fToolBar.setIconSize(QSize(32, 32)); 570c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 571c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->addToolBar(Qt::TopToolBarArea, &fToolBar); 572902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5730ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fSpacer.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 574902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 575c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionRewind); 576c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionStepBack); 577e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fToolBar.addAction(&fActionPause); 578c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionStepForward); 579c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionPlay); 580c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addSeparator(); 581e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fToolBar.addAction(&fActionInspector); 5822ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com fToolBar.addAction(&fActionSettings); 583d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com 584d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com fToolBar.addSeparator(); 5850ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fToolBar.addWidget(&fSpacer); 586c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addWidget(&fFilter); 587c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fToolBar.addAction(&fActionCancel); 588902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 589d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com fFileName = ""; 590ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com setupDirectoryWidget(""); 591902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 592902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // Menu Bar 593c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuFile.setTitle("File"); 594c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuFile.addAction(&fActionOpen); 5950ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fMenuFile.addAction(&fActionSave); 5960ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fMenuFile.addAction(&fActionSaveAs); 597c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuFile.addAction(&fActionClose); 598e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 599e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuEdit.setTitle("Edit"); 600e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuEdit.addAction(&fActionDelete); 6017e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuEdit.addAction(&fActionClearDeletes); 6027e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuEdit.addSeparator(); 603e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuEdit.addAction(&fActionCreateBreakpoint); 6047e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuEdit.addAction(&fActionClearBreakpoints); 605e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 606c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuNavigate.setTitle("Navigate"); 607e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionRewind); 608e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionStepBack); 609e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionStepForward); 610e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionPlay); 611e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuNavigate.addAction(&fActionPause); 612c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuNavigate.addAction(&fActionGoToLine); 613e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 614c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuView.setTitle("View"); 615e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuView.addAction(&fActionBreakpoint); 6167e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fMenuView.addAction(&fActionShowDeletes); 617a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fMenuView.addAction(&fActionZoomIn); 618a1226319b72df0fb4c8a9a6aae5e493a4e3527cbchudy@google.com fMenuView.addAction(&fActionZoomOut); 619e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com 620e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuWindows.setTitle("Window"); 621e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuWindows.addAction(&fActionInspector); 6222ff6d1d1dc2c4668b0c587c55fd37407fb8d68abbungeman@google.com fMenuWindows.addAction(&fActionSettings); 623e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuWindows.addAction(&fActionDirectory); 624c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com 625c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionGoToLine.setText("Go to Line..."); 626c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fActionGoToLine.setDisabled(true); 627c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuBar.addAction(fMenuFile.menuAction()); 628e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuBar.addAction(fMenuEdit.menuAction()); 629c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuBar.addAction(fMenuView.menuAction()); 630c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fMenuBar.addAction(fMenuNavigate.menuAction()); 631e504de0a50f268189399567f58183c8c6a27b2afchudy@google.com fMenuBar.addAction(fMenuWindows.menuAction()); 632902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 633c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com SkDebuggerGUI->setMenuBar(&fMenuBar); 634902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QMetaObject::connectSlotsByName(SkDebuggerGUI); 635902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 636902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 637ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.comvoid SkDebuggerGUI::setupDirectoryWidget(const QString& path) { 638ff6e6bade36c34a4c4fce4c14b480b9d2435bcd5robertphillips@google.com fPath = path; 639a745186c939ec641a861c74064155ec4aa3beb33djsollen populateDirectoryWidget(); 640a745186c939ec641a861c74064155ec4aa3beb33djsollen 641a745186c939ec641a861c74064155ec4aa3beb33djsollen // clear the existing watched directory and setup a new directory to watch 642a745186c939ec641a861c74064155ec4aa3beb33djsollen if (!fDirectoryWatcher.directories().empty()) { 643a745186c939ec641a861c74064155ec4aa3beb33djsollen fDirectoryWatcher.removePaths(fDirectoryWatcher.directories()); 644a745186c939ec641a861c74064155ec4aa3beb33djsollen } 645a745186c939ec641a861c74064155ec4aa3beb33djsollen if (!path.isEmpty()) { 646a745186c939ec641a861c74064155ec4aa3beb33djsollen fDirectoryWatcher.addPath(fPath); 647a745186c939ec641a861c74064155ec4aa3beb33djsollen } 648a745186c939ec641a861c74064155ec4aa3beb33djsollen} 649a745186c939ec641a861c74064155ec4aa3beb33djsollen 650a745186c939ec641a861c74064155ec4aa3beb33djsollenvoid SkDebuggerGUI::populateDirectoryWidget() { 651a745186c939ec641a861c74064155ec4aa3beb33djsollen QDir dir(fPath); 652902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QRegExp r(".skp"); 653c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com const QStringList files = dir.entryList(); 654a745186c939ec641a861c74064155ec4aa3beb33djsollen 655a745186c939ec641a861c74064155ec4aa3beb33djsollen // check if a file has been removed 656a745186c939ec641a861c74064155ec4aa3beb33djsollen for (int i = fDirectoryWidget.count() - 1; i >= 0; i--) { 657a745186c939ec641a861c74064155ec4aa3beb33djsollen QListWidgetItem* item = fDirectoryWidget.item(i); 658a745186c939ec641a861c74064155ec4aa3beb33djsollen if (!files.contains(item->text())) { 659a745186c939ec641a861c74064155ec4aa3beb33djsollen fDirectoryWidget.removeItemWidget(item); 660a745186c939ec641a861c74064155ec4aa3beb33djsollen delete item; 661a745186c939ec641a861c74064155ec4aa3beb33djsollen } 662a745186c939ec641a861c74064155ec4aa3beb33djsollen } 663a745186c939ec641a861c74064155ec4aa3beb33djsollen 664a745186c939ec641a861c74064155ec4aa3beb33djsollen // add any new files 665902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com foreach (QString f, files) { 666a745186c939ec641a861c74064155ec4aa3beb33djsollen if (f.contains(r) && fDirectoryWidget.findItems(f, Qt::MatchExactly).size() == 0) { 667c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fDirectoryWidget.addItem(f); 668a745186c939ec641a861c74064155ec4aa3beb33djsollen } 669902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 670902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 671902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 672d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.comvoid SkDebuggerGUI::loadPicture(const SkString& fileName) { 673d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com fFileName = fileName; 674d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fLoading = true; 675385fe4d4b62d7d1dd76116dd570df3290a2f487bhalcanary SkAutoTDelete<SkStream> stream(new SkFILEStream(fileName.c_str())); 6762d40ec4e9a3fb3540756fa45a6cffd541ada2c78robertphillips@google.com 677f1754ec69131801c1a6ed3c704501a9400bbf324scroggo@google.com SkPicture* picture = SkPicture::CreateFromStream(stream); 6782d40ec4e9a3fb3540756fa45a6cffd541ada2c78robertphillips@google.com 67996fcdcc219d2a0d3579719b84b28bede76efba64halcanary if (nullptr == picture) { 6802d40ec4e9a3fb3540756fa45a6cffd541ada2c78robertphillips@google.com QMessageBox::critical(this, "Error loading file", "Couldn't read file, sorry."); 6812d40ec4e9a3fb3540756fa45a6cffd541ada2c78robertphillips@google.com return; 6822d40ec4e9a3fb3540756fa45a6cffd541ada2c78robertphillips@google.com } 6832bde91dcb6f2840e01216054897fe98a930e9104robertphillips@google.com 684686e68019374dca3692cac6d5f8d94515e53d6c8chudy@google.com fCanvasWidget.resetWidgetTransform(); 685607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger.loadPicture(picture); 6864c7962e0a866b8416fa7046791c129eb5430b677chudy@google.com 6876d9c92b2f6e5be64dd5dd98e44d672877e4c9fbcrobertphillips@google.com fSkipCommands.setCount(fDebugger.getSize()); 6886d9c92b2f6e5be64dd5dd98e44d672877e4c9fbcrobertphillips@google.com for (int i = 0; i < fSkipCommands.count(); ++i) { 6895f97114fd28e03e8c4c1c22c924d383b45cdced1robertphillips@google.com fSkipCommands[i] = false; 6905f97114fd28e03e8c4c1c22c924d383b45cdced1robertphillips@google.com } 6915f97114fd28e03e8c4c1c22c924d383b45cdced1robertphillips@google.com 692607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkSafeUnref(picture); 693607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 6947dcae67cae277549accdd38d0496b72d00151239chudy@google.com /* fDebugCanvas is reinitialized every load picture. Need it to retain value 695607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * of the visibility filter. 696607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * TODO(chudy): This should be deprecated since fDebugger is not 697607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * recreated. 698607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * */ 69941c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fDebugger.highlightCurrentCommand(fSettingsWidget.isVisibilityFilterEnabled()); 700607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 7015037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen this->setupListWidget(); 7025037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen this->setupComboBox(); 70396fcdcc219d2a0d3579719b84b28bede76efba64halcanary this->setupOverviewText(nullptr, 0.0, 1); 7047e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com fInspectorWidget.setDisabled(false); 70541c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fViewStateFrame.setDisabled(false); 706e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com fSettingsWidget.setDisabled(false); 707d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuEdit.setDisabled(false); 708d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuNavigate.setDisabled(false); 709d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fMenuView.setDisabled(false); 7100ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSave.setDisabled(false); 7110ab03397afd3420ea8fd9323d78ddd562a7b7bdfchudy@google.com fActionSaveAs.setDisabled(false); 712f3a9e993399fcb8dae4bf6f1dd9674a72b289da3kkinnunen fActionPause.setChecked(false); 7130cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen fDrawCommandGeometryWidget.setDrawCommandIndex(-1); 7140cfeaf3ac1e7edcf3b618c9f33f4b4bc30321324kkinnunen 715d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com fLoading = false; 716d3058f5fd8bb786c5b70a0dd222bde646502258achudy@google.com actionPlay(); 717902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 718902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7195037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunenvoid SkDebuggerGUI::setupListWidget() { 720546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips 721546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips SkASSERT(!strcmp("Save", 722546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips SkDrawCommand::GetCommandString(SkDrawCommand::kSave_OpType))); 723546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips SkASSERT(!strcmp("SaveLayer", 724546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips SkDrawCommand::GetCommandString(SkDrawCommand::kSaveLayer_OpType))); 725546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips SkASSERT(!strcmp("Restore", 726546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips SkDrawCommand::GetCommandString(SkDrawCommand::kRestore_OpType))); 727160ebb2bfa0794d72d31a786793b13413289863dfmalita SkASSERT(!strcmp("BeginDrawPicture", 728160ebb2bfa0794d72d31a786793b13413289863dfmalita SkDrawCommand::GetCommandString(SkDrawCommand::kBeginDrawPicture_OpType))); 729160ebb2bfa0794d72d31a786793b13413289863dfmalita SkASSERT(!strcmp("EndDrawPicture", 730160ebb2bfa0794d72d31a786793b13413289863dfmalita SkDrawCommand::GetCommandString(SkDrawCommand::kEndDrawPicture_OpType))); 731546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips 732c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.clear(); 733902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int counter = 0; 73430d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com int indent = 0; 7355037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen for (int i = 0; i < fDebugger.getSize(); i++) { 736902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem *item = new QListWidgetItem(); 7375037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen SkDrawCommand* command = fDebugger.getDrawCommandAt(i); 7385037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen SkString commandString = command->toString(); 7395037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen item->setData(Qt::DisplayRole, commandString.c_str()); 740902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 1, counter++); 74130d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 7425037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen if (0 == strcmp("Restore", commandString.c_str()) || 743160ebb2bfa0794d72d31a786793b13413289863dfmalita 0 == strcmp("EndDrawPicture", commandString.c_str())) { 74430d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com indent -= 10; 74530d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com } 74630d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 74730d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com item->setData(Qt::UserRole + 3, indent); 74830d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 7495037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen if (0 == strcmp("Save", commandString.c_str()) || 750546db46a76ad5f7485cebeb27efaf8b4806fa914robertphillips 0 == strcmp("SaveLayer", commandString.c_str()) || 751160ebb2bfa0794d72d31a786793b13413289863dfmalita 0 == strcmp("BeginDrawPicture", commandString.c_str())) { 75230d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com indent += 10; 75330d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com } 75430d35f23ae390043462e2aa5fc6863a4621aa74drobertphillips@google.com 75557f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org item->setData(Qt::UserRole + 4, -1); 756d26c70688fda9dd33369f5ea9da78f26c8666d63robertphillips@google.com 757c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fListWidget.addItem(item); 758902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 759902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 760902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 76191274b99722d9be62e077ab979c630c23cdd04b1skia.committer@gmail.comvoid SkDebuggerGUI::setupOverviewText(const SkTDArray<double>* typeTimes, 762e428f9b1132c12299c204a333192495d7e748511robertphillips@google.com double totTime, 763e428f9b1132c12299c204a333192495d7e748511robertphillips@google.com int numRuns) { 7642d9dbd4f78314b4b36f67d6ebbf3e0f2d9a163e3borenet@google.com SkString overview; 765e428f9b1132c12299c204a333192495d7e748511robertphillips@google.com fDebugger.getOverviewText(typeTimes, totTime, &overview, numRuns); 7662d9dbd4f78314b4b36f67d6ebbf3e0f2d9a163e3borenet@google.com fInspectorWidget.setText(overview.c_str(), SkInspectorWidget::kOverview_TabType); 7678a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com} 7688a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com 7692a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 7705037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunenvoid SkDebuggerGUI::setupComboBox() { 7718a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com fFilter.clear(); 7728a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com fFilter.addItem("--Filter By Available Commands--"); 7738a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com 7748a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com std::map<std::string, int> map; 7755037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen for (int i = 0; i < fDebugger.getSize(); i++) { 7765037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen map[fDebugger.getDrawCommandAt(i)->toString().c_str()]++; 7778a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com } 7788a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com 7793458716b52aa25dcd1b270141c7628c380696e35skia.committer@gmail.com for (std::map<std::string, int>::iterator it = map.begin(); it != map.end(); 7808a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com ++it) { 7818a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com fFilter.addItem((it->first).c_str()); 7828a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com } 783902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 784902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): Makes first item unselectable. 7857dcae67cae277549accdd38d0496b72d00151239chudy@google.com QStandardItemModel* model = qobject_cast<QStandardItemModel*>( 786c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.model()); 787c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com QModelIndex firstIndex = model->index(0, fFilter.modelColumn(), 788c432f00a84e2b3d759b3f24ec687af7320121eeachudy@google.com fFilter.rootModelIndex()); 789902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QStandardItem* firstItem = model->itemFromIndex(firstIndex); 790902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com firstItem->setSelectable(false); 791902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 79241c79cc0ff3003ef77cb48590f7887221856f941kkinnunen 793cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunenvoid SkDebuggerGUI::updateImage() { 794cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen if (this->isPaused()) { 795cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen fCanvasWidget.drawTo(fPausedRow); 796cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen } else { 797cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen fCanvasWidget.drawTo(fListWidget.currentRow()); 798cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen } 799cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen} 800cfdc0e3fee69694e0f6b083d8455665b2a810589kkinnunen 80141c79cc0ff3003ef77cb48590f7887221856f941kkinnunenvoid SkDebuggerGUI::updateHit(int newHit) { 80241c79cc0ff3003ef77cb48590f7887221856f941kkinnunen fCommandHitBox.setText(QString::number(newHit)); 80341c79cc0ff3003ef77cb48590f7887221856f941kkinnunen} 80441c79cc0ff3003ef77cb48590f7887221856f941kkinnunen 805