SkDebuggerGUI.cpp revision 902ebe5eb41a350b766238b3b103c22fe9fc0fb5
1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/* 3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc. 4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * 5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be 6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file. 7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <iostream> 10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkDebuggerGUI.h" 11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QListWidgetItem> 12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 13902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comSkDebuggerGUI::SkDebuggerGUI(QWidget *parent) : 14902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QMainWindow(parent) { 15902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 16902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupUi(this); 17902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fListWidget, SIGNAL(currentItemChanged(QListWidgetItem*, 18902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem*)), this, SLOT(registerListClick(QListWidgetItem *))); 19902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionOpen, SIGNAL(triggered()), this, SLOT(openFile())); 20902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionDirectory, SIGNAL(triggered()), this, SLOT(toggleDirectory())); 21902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fDirectoryWidget, SIGNAL(currentItemChanged(QListWidgetItem*, 22902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem*)), this, SLOT(loadFile(QListWidgetItem *))); 23902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionDelete, SIGNAL(triggered()), this, SLOT(actionDelete())); 24902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionReload, SIGNAL(triggered()), this, SLOT(actionReload())); 25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(toggleBreakpoint())); 26902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionRewind, SIGNAL(triggered()), this, SLOT(actionRewind())); 27902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionPlay, SIGNAL(triggered()), this, SLOT(actionPlay())); 28902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionStepBack, SIGNAL(triggered()), this, SLOT(actionStepBack())); 29902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionStepForward, SIGNAL(triggered()), this, SLOT(actionStepForward())); 30902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionBreakpoint, SIGNAL(triggered()), this, SLOT(actionBreakpoints())); 31902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionInspector, SIGNAL(triggered()), this, SLOT(actionInspector())); 32902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fFilter, SIGNAL(activated(QString)), this, SLOT(toggleFilter(QString))); 33902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionCancel, SIGNAL(triggered()), this, SLOT(actionCancel())); 34902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionClose, SIGNAL(triggered()), this, SLOT(actionClose())); 35902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionSettings, SIGNAL(triggered()), this, SLOT(actionSettings())); 36902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com connect(fActionToggleCurrentCommand, SIGNAL(triggered()), this, SLOT(actionCommandFilter())); 37902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 38902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 39902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comSkDebuggerGUI::~SkDebuggerGUI() { 40902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 41902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 42902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionBreakpoints() { 43902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if(!fBreakpointsActivated) { 44902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fBreakpointsActivated = true; 45902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 46902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fBreakpointsActivated = false; 47902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 48902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 49902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for(int row=0; row<fListWidget->count(); row++) { 50902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem *item = fListWidget->item(row); 51902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 52902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Unchecked && fBreakpointsActivated) { 53902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setHidden(true); 54902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 55902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setHidden(false); 56902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 57902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 58902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 59902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 60902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionCancel() { 61902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for(int row=0; row<fListWidget->count(); row++) { 62902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->item(row)->setHidden(false); 63902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 64902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 65902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 66902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionCommandFilter() { 67902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fActionToggleCurrentCommand->text() == "Show Filter") { 68902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->toggleCurrentCommandFilter(true); 69902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionToggleCurrentCommand->setText("Hide Filter"); 70902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 71902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionToggleCurrentCommand->setText("Show Filter"); 72902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->toggleCurrentCommandFilter(false); 73902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 74902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 75902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->drawTo(fListWidget->currentRow()); 76902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 77902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 78902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 79902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionClose() { 80902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com this->close(); 81902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 82902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 83902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionDelete() { 84902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem* item = fListWidget->currentItem(); 85902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 86902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if(item->data(Qt::UserRole + 2) == true) { 87902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 2, false); 88902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 89902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/delete.png")); 90902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 91902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 92902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 2, true); 93902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if(item->checkState() == Qt::Unchecked) { 94902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 95902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/blank.png")); 96902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 97902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 98902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/breakpoint_16x16.png")); 99902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 100902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 101902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 102902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 103902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int currentRow = fListWidget->currentRow(); 104902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 105902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): Forces a redraw up to current selected command. 106902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fCanvasWidget) { 107902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->toggleCommand(currentRow); 108902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->drawTo(currentRow); 109902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 110902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 111902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 112902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionInspector() { 113902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fInspectorWidget->isHidden()) { 114902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setHidden(false); 115902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 116902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setHidden(true); 117902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 118902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 119902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 120902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionPlay() { 121902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for(int row=fListWidget->currentRow()+1; row<fListWidget->count(); row++) { 122902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem *item = fListWidget->item(row); 123902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Checked) { 124902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setCurrentItem(item); 125902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com return; 126902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 127902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 128902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 129902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setCurrentRow(fListWidget->count() - 1); 130902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 131902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 132902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionReload() { 133902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for(int row=0; row<fListWidget->count(); row++) { 134902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem* item = fListWidget->item(row); 135902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 2, true); 136902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 137902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/blank.png")); 138902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->toggleCommand(row, true); 139902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 140902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 141902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->drawTo(fListWidget->currentRow()); 142902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 143902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 144902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionRewind() { 145902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /* NOTE(chudy): Hack. All skps opened so far start with save and concat 146902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * commands that don't clear or reset the canvas. */ 147902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setCurrentRow(2); 148902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 149902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 150902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionSettings() { 151902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fSettingsWidget->isHidden()) { 152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fSettingsWidget->setHidden(false); 153902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 154902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fSettingsWidget->setHidden(true); 155902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 156902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 157902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 158902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionStepBack() { 159902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int currentRow = fListWidget->currentRow(); 160902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (currentRow != 0) { 161902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setCurrentRow(currentRow - 1); 162902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 163902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 164902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 165902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::actionStepForward() { 166902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int currentRow = fListWidget->currentRow(); 167902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 168902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString curRow = QString::number(currentRow); 169902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString curCount = QString::number(fListWidget->count()); 170902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 171902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 172902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (currentRow < fListWidget->count() - 1) { 173902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setCurrentRow(currentRow + 1); 174902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 175902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 176902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 177902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::loadFile(QListWidgetItem *item) { 178902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fDirectoryWidgetActive) { 179902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString fileName; 180902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fileName.append(fPath); 181902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fileName.append("/"); 182902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fileName.append(item->text()); 183902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com loadPicture(fileName); 184902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 185902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 186902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 187902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::openFile() { 188902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), 189902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com "", 190902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com tr("Files (*.*)")); 191902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = false; 192902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (!fileName.isNull()) { 193902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 194902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QFileInfo pathInfo(fileName); 195902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fPath = pathInfo.path(); 196902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com loadPicture(fileName); 197902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupDirectoryWidget(); 198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 199902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /* TODO(chudy): Need something here that sets the active directory 200902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * widget selection to what was opened. OR we can just add a new function 201902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * to change the directory (would be much easier). 202902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 203902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = true; 204902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 205902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 206902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::registerListClick(QListWidgetItem *item) { 207902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int currentRow = fListWidget->currentRow(); 208902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 209902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): Prevents initialization errors. 210902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fCanvasWidget) { 211902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->drawTo(currentRow); 212902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com std::vector<std::string> *v = 213902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->getCurrentCommandInfo(currentRow); 214902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 215902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 216902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /* TODO(chudy): Add command type before parameters. Rename v 217902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * to something more informative. */ 218902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (v) { 219902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com std::vector<std::string>::iterator it; 220902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 221902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString info; 222902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com info.append("<b>Parameters: </b><br/>"); 223902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for (it = v->begin(); it != v->end(); ++it) { 224902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com info.append(QString((*it).c_str())); 225902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com info.append("<br/>"); 226902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 227902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setDetailText(info); 228902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 229902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 230902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 231902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 232902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleBreakpoint() { 233902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem* item = fListWidget->currentItem(); 234902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->checkState() == Qt::Unchecked) { 235902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setCheckState(Qt::Checked); 236902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 237902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 238902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /* NOTE(chudy): If the command is toggled as hidden that takes 239902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * precendence over the breakpoint icon. 240902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 241902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if(item->data(Qt::UserRole + 2) == false) { 242902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 243902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/delete.png")); 244902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 245902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 246902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/breakpoint_16x16.png")); 247902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 248902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 249902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 250902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 251902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /* NOTE(chudy): When untoggling as a breakpoint if the command 252902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * is hidden then the portraying icon should remain the delete icon. 253902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 254902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setCheckState(Qt::Unchecked); 255902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 256902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if(item->data(Qt::UserRole + 2) == false) { 257902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 258902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/delete.png")); 259902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 260902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DecorationRole, 261902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QPixmap(":/images/Icons/blank.png")); 262902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 263902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 264902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 265902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 266902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 267902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleDirectory() { 268902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (fDirectoryWidget->isHidden()) { 269902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget->setHidden(false); 270902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 271902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget->setHidden(true); 272902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 273902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 274902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 275902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::toggleFilter(QString string) { 276902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for(int row=0; row<fListWidget->count(); row++) { 277902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem *item = fListWidget->item(row); 278902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (item->text() == string) { 279902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setHidden(false); 280902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } else { 281902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setHidden(true); 282902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 283902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 284902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 285902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 286902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupUi(QMainWindow *SkDebuggerGUI) { 287902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon windowIcon; 288902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com windowIcon.addFile(QString::fromUtf8(":/images/Icons/skia.png"), QSize(), QIcon::Normal, QIcon::Off); 289902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setObjectName(QString::fromUtf8("SkDebuggerGUI")); 290902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->resize(1200, 1000); 291902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setWindowIcon(windowIcon); 292902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 293902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon open; 294902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com open.addFile(QString::fromUtf8(":/images/Icons/package-br32.png"), QSize(), QIcon::Normal, QIcon::Off); 295902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionOpen = new QAction(SkDebuggerGUI); 296902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionOpen->setObjectName(QString::fromUtf8("actionOpen")); 297902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionOpen->setIcon(open); 298902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 299902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon directory; 300902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com directory.addFile(QString::fromUtf8(":/images/Icons/drawer-open-icon.png"), QSize(), QIcon::Normal, QIcon::Off); 301902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDirectory = new QAction(SkDebuggerGUI); 302902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDirectory->setObjectName(QString::fromUtf8("actionDirectory")); 303902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDirectory->setIcon(directory); 304902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDirectory->setText("Toggle Directory"); 305902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 306902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon rewind; 307902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com rewind.addFile(QString::fromUtf8(":/images/Icons/rewind.png"), QSize(), QIcon::Normal, QIcon::Off); 308902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionRewind = new QAction(SkDebuggerGUI); 309902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionRewind->setObjectName(QString::fromUtf8("actionRewind")); 310902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionRewind->setIcon(rewind); 311902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionRewind->setText("Rewind"); 312902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 313902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon stepBack; 314902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com stepBack.addFile(QString::fromUtf8(":/images/Icons/back.png"), QSize(), QIcon::Normal, QIcon::Off); 315902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepBack = new QAction(SkDebuggerGUI); 316902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepBack->setObjectName(QString::fromUtf8("actionStepBack")); 317902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepBack->setIcon(stepBack); 318902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepBack->setText("Step Back"); 319902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 320902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon stepForward; 321902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com stepForward.addFile(QString::fromUtf8(":/images/Icons/go-next.png"), QSize(), QIcon::Normal, QIcon::Off); 322902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepForward = new QAction(SkDebuggerGUI); 323902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepForward->setObjectName(QString::fromUtf8("actionStepBack")); 324902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepForward->setIcon(stepForward); 325902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionStepForward->setText("Step Forward"); 326902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 327902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon play; 328902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com play.addFile(QString::fromUtf8(":/images/Icons/play.png"), QSize(), QIcon::Normal, QIcon::Off); 329902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionPlay = new QAction(SkDebuggerGUI); 330902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionPlay->setObjectName(QString::fromUtf8("actionPlay")); 331902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionPlay->setIcon(play); 332902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionPlay->setText("Play"); 333902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 334902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon breakpoint; 335902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com breakpoint.addFile(QString::fromUtf8(":/images/Icons/breakpoint.png"), QSize(), QIcon::Normal, QIcon::Off); 336902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionBreakpoint = new QAction(SkDebuggerGUI); 337902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionBreakpoint->setObjectName(QString::fromUtf8("actionBreakpoint")); 338902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionBreakpoint->setIcon(breakpoint); 339902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionBreakpoint->setText("Show Breakpoints"); 340902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 341902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon inspector; 342902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com inspector.addFile(QString::fromUtf8(":/images/Icons/inspector.png"), QSize(), QIcon::Normal, QIcon::Off); 343902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionInspector = new QAction(SkDebuggerGUI); 344902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionInspector->setObjectName(QString::fromUtf8("actionInspector")); 345902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionInspector->setIcon(inspector); 346902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionInspector->setText("Inspector"); 347902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 348902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon deleteIcon; 349902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com deleteIcon.addFile(QString::fromUtf8(":/images/Icons/delete.png"), QSize(), QIcon::Normal, QIcon::Off); 350902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDelete = new QAction(SkDebuggerGUI); 351902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDelete->setObjectName(QString::fromUtf8("actionDelete")); 352902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDelete->setIcon(deleteIcon); 353902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionDelete->setText("Delete Command"); 354902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 355902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon reload; 356902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com reload.addFile(QString::fromUtf8(":/images/Icons/reload.png"), QSize(), QIcon::Normal, QIcon::Off); 357902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionReload = new QAction(SkDebuggerGUI); 358902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionReload->setObjectName(QString::fromUtf8("actionReload")); 359902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionReload->setIcon(reload); 360902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionReload->setText("Reset Picture"); 361902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 362902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon settings; 363902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com settings.addFile(QString::fromUtf8(":/images/Icons/settings.png"), QSize(), QIcon::Normal, QIcon::Off); 364902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionSettings = new QAction(SkDebuggerGUI); 365902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionSettings->setObjectName(QString::fromUtf8("actionSettings")); 366902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionSettings->setIcon(settings); 367902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionSettings->setText("Settings"); 368902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 369902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QIcon cancel; 370902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com cancel.addFile(QString::fromUtf8(":/images/Icons/reset.png"), QSize(), QIcon::Normal, QIcon::Off); 371902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionCancel = new QAction(SkDebuggerGUI); 372902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionCancel->setObjectName(QString::fromUtf8("actionCancel")); 373902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionCancel->setIcon(cancel); 374902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionCancel->setText("Clear Filter"); 375902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 376902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCentralWidget = new QWidget(SkDebuggerGUI); 377902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCentralWidget->setObjectName(QString::fromUtf8("centralWidget")); 378902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 379902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout = new QHBoxLayout(fCentralWidget); 380902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout->setSpacing(6); 381902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout->setContentsMargins(11, 11, 11, 11); 382902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); 383902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 384902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout = new QVBoxLayout(); 385902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout->setSpacing(6); 386902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); 387902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 388902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout_2 = new QVBoxLayout(); 389902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout_2->setSpacing(6); 390902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); 391902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 392902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget = new QListWidget(fCentralWidget); 393902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setItemDelegate(new SkListWidget(fListWidget)); 394902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setObjectName(QString::fromUtf8("listWidget")); 395902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->setMaximumWidth(250); 396902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 397902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget = new SkInspectorWidget(); 398902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setObjectName(QString::fromUtf8("inspectorWidget")); 399902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 400902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setMaximumHeight(300); 401902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 402902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter = new QComboBox(fCentralWidget); 403902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter->setObjectName(QString::fromUtf8("comboBox")); 404902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter->addItem("--Filter By Available Commands--"); 405902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 406902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget = new QListWidget(fCentralWidget); 407902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget->setObjectName(QString::fromUtf8("listWidget_2")); 408902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget->setMaximumWidth(250); 409902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget->setStyleSheet("QListWidget::Item {padding: 5px;}"); 410902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 411902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout_2->addWidget(fListWidget); 412902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout_2->addWidget(fDirectoryWidget); 413902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 414902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget = new SkCanvasWidget(fCentralWidget); 415902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 416902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 417902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fSettingsWidget = new SkSettingsWidget(fCentralWidget); 418902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fSettingsWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 419902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fSettingsWidget->setMaximumWidth(250); 420902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fSettingsWidget->setHidden(true); 421902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 422902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout_2 = new QHBoxLayout(); 423902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout_2->setSpacing(6); 424902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 425902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout_2->addWidget(fCanvasWidget); 426902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout_2->addWidget(fSettingsWidget); 427902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 428902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout->addLayout(fHorizontalLayout_2); 429902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fVerticalLayout->addWidget(fInspectorWidget); 430902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 431902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout->addLayout(fVerticalLayout_2); 432902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fHorizontalLayout->addLayout(fVerticalLayout); 433902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 434902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setCentralWidget(fCentralWidget); 435902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fStatusBar = new QStatusBar(SkDebuggerGUI); 436902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fStatusBar->setObjectName(QString::fromUtf8("statusBar")); 437902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setStatusBar(fStatusBar); 438902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar = new QToolBar(SkDebuggerGUI); 439902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->setObjectName(QString::fromUtf8("toolBar")); 440902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->setIconSize(QSize(24, 24)); 441902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com //fToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 442902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->addToolBar(Qt::TopToolBarArea, fToolBar); 443902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 444902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QWidget *spacer = new QWidget(); 445902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 446902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 447902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionOpen); 448902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addSeparator(); 449902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionDirectory); 450902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addSeparator(); 451902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionRewind); 452902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionStepBack); 453902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionStepForward); 454902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionPlay); 455902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addSeparator(); 456902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionBreakpoint); 457902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionInspector); 458902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addSeparator(); 459902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionDelete); 460902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionReload); 461902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addSeparator(); 462902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionSettings); 463902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addWidget(spacer); 464902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addWidget(fFilter); 465902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->addAction(fActionCancel); 466902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 467902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // TODO(chudy): Remove static call. 468902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = false; 469902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fPath= "/usr/local/google/home/chudy/trunk-linux/debugger/skp"; 470902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupDirectoryWidget(); 471902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidgetActive = true; 472902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 473902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuBar = new QMenuBar(SkDebuggerGUI); 474902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 475902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // File 476902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuFile = new QMenu(SkDebuggerGUI); 477902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuFile->setTitle("File"); 478902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 479902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionClose = new QAction(SkDebuggerGUI); 480902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionClose->setText("Close"); 481902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 482902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuFile->addAction(fActionOpen); 483902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuFile->addAction(fActionClose); 484902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 485902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // View 486902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuView = new QMenu(SkDebuggerGUI); 487902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuView->setTitle("View"); 488902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 489902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionToggleCurrentCommand = new QAction(SkDebuggerGUI); 490902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionToggleCurrentCommand->setText("Show Filter"); 491902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 492902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuView->addAction(fActionToggleCurrentCommand); 493902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 494902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // Navigate 495902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuNavigate = new QMenu(SkDebuggerGUI); 496902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuNavigate->setTitle("Navigate"); 497902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 498902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionGoToLine = new QAction(SkDebuggerGUI); 499902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionGoToLine->setText("Go to Line..."); 500902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionGoToLine->setDisabled(true); 501902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 502902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuNavigate->addAction(fActionGoToLine); 503902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 504902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // Menu Bar 505902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuBar->addAction(fMenuFile->menuAction()); 506902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuBar->addAction(fMenuView->menuAction()); 507902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fMenuBar->addAction(fMenuNavigate->menuAction()); 508902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 509902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setMenuBar(fMenuBar); 510902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 511902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com retranslateUi(SkDebuggerGUI); 512902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QMetaObject::connectSlotsByName(SkDebuggerGUI); 513902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 514902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 515902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupDirectoryWidget() { 516902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDir = new QDir(fPath); 517902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QRegExp r(".skp"); 518902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fDirectoryWidget->clear(); 519902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const QStringList files = fDir->entryList(); 520902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com foreach (QString f, files) { 521902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com if (f.contains(r)) fDirectoryWidget->addItem(f); 522902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 523902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 524902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 525902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// TODO(chudy): Is this necessary? 526902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::retranslateUi(QMainWindow *SkDebuggerGUI) { 527902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDebuggerGUI->setWindowTitle(QApplication::translate("SkDebuggerGUI", "SkDebuggerGUI", 0, QApplication::UnicodeUTF8)); 528902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fActionOpen->setText(QApplication::translate("SkDebuggerGUI", "Open", 0, QApplication::UnicodeUTF8)); 529902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fToolBar->setWindowTitle(QApplication::translate("SkDebuggerGUI", "toolBar", 0, QApplication::UnicodeUTF8)); 530902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 531902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 532902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::loadPicture(QString fileName) { 533902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fCanvasWidget->loadPicture(fileName); 534902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com std::vector<std::string> *cv = fCanvasWidget->getDrawCommands(); 535902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupListWidget(cv); 536902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com setupComboBox(cv); 537902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 538902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 539902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupListWidget(std::vector<std::string>* cv) { 540902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->clear(); 541902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int counter = 0; 542902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for (unsigned int i = 0; i < cv->size(); i++) { 543902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QListWidgetItem *item = new QListWidgetItem(); 544902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::DisplayRole, (*cv)[i].c_str()); 545902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 1, counter++); 546902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com item->setData(Qt::UserRole + 2, true); 547902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fListWidget->addItem(item); 548902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 549902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 550902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 551902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comvoid SkDebuggerGUI::setupComboBox(std::vector<std::string>* cv) { 552902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter->clear(); 553902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter->addItem("--Filter By Available Commands--"); 554902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 555902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com std::map<std::string, int> map; 556902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for (unsigned int i = 0; i < cv->size(); i++) { 557902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com map[(*cv)[i]]++; 558902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 559902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 560902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString overview; 561902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com int counter; 562902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com for(std::map<std::string, int>::iterator it = map.begin(); it != map.end(); ++it) { 563902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append((it->first).c_str()); 564902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append(": "); 565902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append(QString::number(it->second)); 566902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("<br/>"); 567902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com counter+=it->second; 568902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter->addItem((it->first).c_str()); 569902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 570902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QString total; 571902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com total.append("Total Draw Commands: "); 572902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com total.append(QString::number(counter)); 573902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com total.append("<br/>"); 574902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.insert(0, total); 575902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 576902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("<br/>"); 577902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("SkBitmap Width: "); 578902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): This is where we can pull out the SkPictures width. 579902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append(QString::number(fCanvasWidget->getBitmapWidth())); 580902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("px<br/>"); 581902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("SkBitmap Height: "); 582902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append(QString::number(fCanvasWidget->getBitmapHeight())); 583902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com overview.append("px"); 584902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fInspectorWidget->setOverviewText(overview); 585902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 586902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // NOTE(chudy): Makes first item unselectable. 587902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QStandardItemModel* model = 588902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com qobject_cast<QStandardItemModel*>(fFilter->model()); 589902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QModelIndex firstIndex = model->index(0, fFilter->modelColumn(), 590902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com fFilter->rootModelIndex()); 591902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com QStandardItem* firstItem = model->itemFromIndex(firstIndex); 592902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com firstItem->setSelectable(false); 593902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 594