From fb23ba1af4bf0f9f86f251226b4bddecfcfc090e Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Fri, 15 Apr 2011 19:29:45 -0400 Subject: [PATCH] Make the editor a dialog. --- gui/argumentseditor.cpp | 2 +- gui/argumentseditor.h | 4 +-- gui/mainwindow.cpp | 38 +++++++++++++++++++--- gui/mainwindow.h | 2 ++ gui/ui/argumentseditor.ui | 68 +++++++++++++++++++++++++++++++-------- gui/ui/mainwindow.ui | 15 --------- 6 files changed, 93 insertions(+), 36 deletions(-) diff --git a/gui/argumentseditor.cpp b/gui/argumentseditor.cpp index f050ec3..de46784 100644 --- a/gui/argumentseditor.cpp +++ b/gui/argumentseditor.cpp @@ -120,7 +120,7 @@ bool BooleanComboBox::value() const } ArgumentsEditor::ArgumentsEditor(QWidget *parent) - : QWidget(parent), + : QDialog(parent), m_model(new QStandardItemModel()), m_call(0) { diff --git a/gui/argumentseditor.h b/gui/argumentseditor.h index aa8452d..4454e00 100644 --- a/gui/argumentseditor.h +++ b/gui/argumentseditor.h @@ -3,9 +3,9 @@ #include "ui_argumentseditor.h" #include +#include #include #include -#include class ApiTraceCall; @@ -27,7 +27,7 @@ public: QByteArray valuePropertyName(QVariant::Type) const; }; -class ArgumentsEditor : public QWidget +class ArgumentsEditor : public QDialog { Q_OBJECT public: diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 081f0bf..d67bc03 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -100,7 +100,6 @@ void MainWindow::callItemSelected(const QModelIndex &index) ApiTraceCall *call = static_cast(event); m_ui.detailsWebView->setHtml(call->toHtml()); m_ui.detailsDock->show(); - m_argsEditor->setCall(call); if (call->hasBinaryData()) { QByteArray data = call->argValues[call->binaryDataIndex()].toByteArray(); @@ -122,7 +121,6 @@ void MainWindow::callItemSelected(const QModelIndex &index) } } } - m_ui.argsEditorDock->show(); m_ui.vertexDataDock->setVisible(call->hasBinaryData()); m_selectedEvent = call; } else { @@ -582,6 +580,7 @@ void MainWindow::initObjects() m_ui.callView->resizeColumnToContents(0); m_ui.callView->header()->swapSections(0, 1); m_ui.callView->setColumnWidth(1, 42); + m_ui.callView->setContextMenuPolicy(Qt::CustomContextMenu); m_progressBar = new QProgressBar(); m_progressBar->setRange(0, 0); @@ -589,16 +588,13 @@ void MainWindow::initObjects() m_progressBar->hide(); m_argsEditor = new ArgumentsEditor(this); - m_ui.argsEditorLayout->addWidget(m_argsEditor); m_ui.detailsDock->hide(); m_ui.vertexDataDock->hide(); m_ui.stateDock->hide(); - m_ui.argsEditorDock->hide(); setDockOptions(dockOptions() | QMainWindow::ForceTabbedDocks); tabifyDockWidget(m_ui.stateDock, m_ui.vertexDataDock); - tabifyDockWidget(m_ui.vertexDataDock, m_ui.argsEditorDock); m_ui.surfacesTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); @@ -665,6 +661,8 @@ void MainWindow::initConnections() connect(m_ui.callView, SIGNAL(activated(const QModelIndex &)), this, SLOT(callItemSelected(const QModelIndex &))); + connect(m_ui.callView, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(customContextMenuRequested(QPoint))); connect(m_ui.surfacesTreeWidget, SIGNAL(customContextMenuRequested(const QPoint &)), @@ -872,4 +870,34 @@ void MainWindow::fillState(bool nonDefaults) fillStateForFrame(); } +void MainWindow::customContextMenuRequested(QPoint pos) +{ + QMenu menu; + QModelIndex index = m_ui.callView->indexAt(pos); + + callItemSelected(index); + if (!index.isValid()) + return; + + ApiTraceEvent *event = + index.data(ApiTraceModel::EventRole).value(); + if (!event || event->type() != ApiTraceEvent::Call) + return; + + menu.addAction(QIcon(":/resources/media-record.png"), + tr("Lookup state"), this, SLOT(lookupState())); + menu.addAction(tr("Edit"), this, SLOT(editCall())); + + menu.exec(QCursor::pos()); +} + +void MainWindow::editCall() +{ + if (m_selectedEvent && m_selectedEvent->type() == ApiTraceEvent::Call) { + ApiTraceCall *call = static_cast(m_selectedEvent); + m_argsEditor->setCall(call); + m_argsEditor->show(); + } +} + #include "mainwindow.moc" diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 99f722d..d2c9f28 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -58,6 +58,8 @@ private slots: void slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity); void slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity); void fillState(bool nonDefaults); + void customContextMenuRequested(QPoint pos); + void editCall(); private: void initObjects(); diff --git a/gui/ui/argumentseditor.ui b/gui/ui/argumentseditor.ui index 268e838..9ee0769 100644 --- a/gui/ui/argumentseditor.ui +++ b/gui/ui/argumentseditor.ui @@ -1,17 +1,23 @@ ArgumentsEditor - + 0 0 - 290 - 472 + 481 + 615 - Form + Trace Arguments Editor + + + false + + + true @@ -92,7 +98,7 @@ - 1 + 0 @@ -118,13 +124,6 @@ - - - - Editable - - - @@ -165,6 +164,16 @@ + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + @@ -177,5 +186,38 @@ - + + + buttonBox + accepted() + ArgumentsEditor + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ArgumentsEditor + reject() + + + 316 + 260 + + + 286 + 274 + + + + diff --git a/gui/ui/mainwindow.ui b/gui/ui/mainwindow.ui index c5f0526..d18a072 100644 --- a/gui/ui/mainwindow.ui +++ b/gui/ui/mainwindow.ui @@ -364,21 +364,6 @@ - - - Arguments Editor - - - 2 - - - - - - - - - Exit -- 2.43.0