aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/mdbviz/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mdbviz/mainwindow.cpp')
-rw-r--r--tools/mdbviz/mainwindow.cpp46
1 files changed, 39 insertions, 7 deletions
diff --git a/tools/mdbviz/mainwindow.cpp b/tools/mdbviz/mainwindow.cpp
index c09ad091fa..5f5746b632 100644
--- a/tools/mdbviz/mainwindow.cpp
+++ b/tools/mdbviz/mainwindow.cpp
@@ -30,15 +30,33 @@ void MainWindow::openFile() {
void MainWindow::setupOpListWidget() {
fOpListWidget->clear();
+ QTreeWidgetItem* item = nullptr;
+ SkTDArray<QTreeWidgetItem*> parents;
+
for (int i = 0; i < fModel.numOps(); i++) {
- QListWidgetItem *item = new QListWidgetItem();
+ item = new QTreeWidgetItem();
+
+ item->setText(0, QString::number(i));
+ item->setData(0, Qt::UserRole, i);
+ item->setText(1, fModel.getOpName(i));
+
+ if (fModel.isHierarchyPop(i)) {
+ parents.pop();
+ }
- item->setData(Qt::DisplayRole, fModel.getOpName(i));
+ if (parents.isEmpty()) {
+ fOpListWidget->addTopLevelItem(item);
+ } else {
+ parents.top()->addChild(item);
+ }
- fOpListWidget->addItem(item);
+ if (fModel.isHierarchyPush(i)) {
+ *parents.push() = item;
+ }
}
- fOpListWidget->setCurrentRow(fModel.numOps()-1);
+ fOpListWidget->setCurrentItem(item);
+ fOpListWidget->expandToDepth(100);
}
void MainWindow::presentCurrentRenderState() {
@@ -115,7 +133,8 @@ void MainWindow::createActions() {
aboutAct->setStatusTip(tr("Show the application's About box"));
}
-void MainWindow::onCurrentRowChanged(int currentRow) {
+void MainWindow::onCurrentItemChanged(QTreeWidgetItem* cur, QTreeWidgetItem* /* prev */) {
+ int currentRow = cur->data(0, Qt::UserRole).toInt();
fModel.setCurOp(currentRow);
this->presentCurrentRenderState();
}
@@ -131,14 +150,23 @@ void MainWindow::createDockWindows() {
QDockWidget* opListDock = new QDockWidget("Ops", this);
opListDock->setAllowedAreas(Qt::LeftDockWidgetArea);
- fOpListWidget = new QListWidget(opListDock);
+ fOpListWidget = new QTreeWidget(opListDock);
+
+ QTreeWidgetItem* headerItem = new QTreeWidgetItem;
+ headerItem->setText(0, "Index");
+ headerItem->setText(1, "Op Name");
+ fOpListWidget->setHeaderItem(headerItem);
+
+ fOpListWidget->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
+ fOpListWidget->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
opListDock->setWidget(fOpListWidget);
this->addDockWidget(Qt::LeftDockWidgetArea, opListDock);
fViewMenu->addAction(opListDock->toggleViewAction());
- connect(fOpListWidget, SIGNAL(currentRowChanged(int)), this, SLOT(onCurrentRowChanged(int)));
+ connect(fOpListWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
+ this, SLOT(onCurrentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)));
}
// Main canvas Window
@@ -148,6 +176,10 @@ void MainWindow::createDockWindows() {
fImageLabel = new QLabel(mainCanvasDock);
+ fImage = QImage(1024, 1024, QImage::Format_RGBA8888);
+ fImage.fill(0);
+ fImageLabel->setPixmap(QPixmap::fromImage(fImage));
+
mainCanvasDock->setWidget(fImageLabel);
this->addDockWidget(Qt::RightDockWidgetArea, mainCanvasDock);