X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fmainwindow.cpp;h=183ba401980034f1eda98deaa3b33c32b17f8d96;hb=ec494edf0f473db4088c23ec7a97f20eab393c2d;hp=877c93d41b5fc1259882cc2d70d80e7966be9032;hpb=b108d689126a9cda26ad5f8d63173fee142375c0;p=apitrace diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 877c93d..183ba40 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -37,7 +37,8 @@ MainWindow::MainWindow() : QMainWindow(), m_selectedEvent(0), - m_stateEvent(0) + m_stateEvent(0), + m_nonDefaultsLookupEvent(0) { m_ui.setupUi(this); initObjects(); @@ -219,6 +220,7 @@ void MainWindow::replayError(const QString &message) m_ui.actionReplay->setEnabled(true); m_ui.actionLookupState->setEnabled(true); m_stateEvent = 0; + m_nonDefaultsLookupEvent = 0; m_progressBar->hide(); statusBar()->showMessage( @@ -434,6 +436,32 @@ variantToItem(const QString &key, const QVariant &var, const QVariant &defaultVa return item; } +static void addSurfaceItem(const ApiSurface &surface, + const QString &label, + QTreeWidgetItem *parent, + QTreeWidget *tree) +{ + int width = surface.size().width(); + int height = surface.size().height(); + QIcon icon(QPixmap::fromImage(surface.thumb())); + QTreeWidgetItem *item = new QTreeWidgetItem(parent); + + item->setIcon(0, icon); + + QString descr = + QString::fromLatin1("%1, %2 x %3") + .arg(label) + .arg(width) + .arg(height); + + //item->setText(1, descr); + QLabel *l = new QLabel(descr, tree); + l->setWordWrap(true); + tree->setItemWidget(item, 1, l); + + item->setData(0, Qt::UserRole, surface.image()); +} + void MainWindow::fillStateForFrame() { QVariantMap params; @@ -441,6 +469,12 @@ void MainWindow::fillStateForFrame() if (!m_selectedEvent || m_selectedEvent->state().isEmpty()) return; + if (m_nonDefaultsLookupEvent) { + m_ui.nonDefaultsCB->blockSignals(true); + m_ui.nonDefaultsCB->setChecked(true); + m_ui.nonDefaultsCB->blockSignals(false); + } + bool nonDefaults = m_ui.nonDefaultsCB->isChecked(); QVariantMap defaultParams; if (nonDefaults) { @@ -482,20 +516,9 @@ void MainWindow::fillStateForFrame() for (int i = 0; i < textures.count(); ++i) { const ApiTexture &texture = textures[i]; - QIcon icon(QPixmap::fromImage(texture.thumb())); - QTreeWidgetItem *item = new QTreeWidgetItem(textureItem); - item->setIcon(0, icon); - int width = texture.size().width(); - int height = texture.size().height(); - QString descr = - QString::fromLatin1("%1, %2 x %3") - .arg(texture.target()) - .arg(width) - .arg(height); - item->setText(1, descr); - - item->setData(0, Qt::UserRole, - texture.image()); + addSurfaceItem(texture, texture.label(), + textureItem, + m_ui.surfacesTreeWidget); } } if (!fbos.isEmpty()) { @@ -508,20 +531,9 @@ void MainWindow::fillStateForFrame() for (int i = 0; i < fbos.count(); ++i) { const ApiFramebuffer &fbo = fbos[i]; - QIcon icon(QPixmap::fromImage(fbo.thumb())); - QTreeWidgetItem *item = new QTreeWidgetItem(fboItem); - item->setIcon(0, icon); - int width = fbo.size().width(); - int height = fbo.size().height(); - QString descr = - QString::fromLatin1("%1, %2 x %3") - .arg(fbo.type()) - .arg(width) - .arg(height); - item->setText(1, descr); - - item->setData(0, Qt::UserRole, - fbo.image()); + addSurfaceItem(fbo, fbo.type(), + fboItem, + m_ui.surfacesTreeWidget); } } m_ui.surfacesTab->setEnabled(true); @@ -753,7 +765,8 @@ void MainWindow::initConnections() m_ui.actionShowErrorsDock, SLOT(setChecked(bool))); connect(m_ui.actionShowErrorsDock, SIGNAL(triggered(bool)), m_ui.errorsDock, SLOT(setVisible(bool))); - connect(m_ui.errorsTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + connect(m_ui.errorsTreeWidget, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT(slotErrorSelected(QTreeWidgetItem*))); } @@ -761,11 +774,13 @@ void MainWindow::replayStateFound(const ApiTraceState &state) { m_stateEvent->setState(state); m_model->stateSetOnEvent(m_stateEvent); - if (m_selectedEvent == m_stateEvent) { + if (m_selectedEvent == m_stateEvent || + m_nonDefaultsLookupEvent == m_selectedEvent) { fillStateForFrame(); } else { m_ui.stateDock->hide(); } + m_nonDefaultsLookupEvent = 0; } void MainWindow::slotGoTo() @@ -912,22 +927,12 @@ void MainWindow::fillState(bool nonDefaults) m_ui.nonDefaultsCB->blockSignals(true); m_ui.nonDefaultsCB->setChecked(false); m_ui.nonDefaultsCB->blockSignals(false); - int ret = QMessageBox::question( - this, tr("Empty Default State"), - tr("The applcation needs to figure out the " - "default state for the current trace. " - "This only has to be done once and " - "afterwards you will be able to enable " - "displaying of non default state for all calls." - "\nDo you want to lookup the default state now?"), - QMessageBox::Yes | QMessageBox::No); - if (ret != QMessageBox::Yes) - return; ApiTraceFrame *firstFrame = m_trace->frameAt(0); ApiTraceEvent *oldSelected = m_selectedEvent; if (!firstFrame) return; + m_nonDefaultsLookupEvent = m_selectedEvent; m_selectedEvent = firstFrame; lookupState(); m_selectedEvent = oldSelected; @@ -947,12 +952,14 @@ void MainWindow::customContextMenuRequested(QPoint pos) ApiTraceEvent *event = index.data(ApiTraceModel::EventRole).value(); - if (!event || event->type() != ApiTraceEvent::Call) + if (!event) return; menu.addAction(QIcon(":/resources/media-record.png"), tr("Lookup state"), this, SLOT(lookupState())); - menu.addAction(tr("Edit"), this, SLOT(editCall())); + if (event->type() == ApiTraceEvent::Call) { + menu.addAction(tr("Edit"), this, SLOT(editCall())); + } menu.exec(QCursor::pos()); }