From 0c79d778e9e2e0364f53855bc677065c7ae08e04 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 13 Feb 2017 14:29:50 +0000 Subject: [PATCH] Add shortcuts for functionality in event browser --- qrenderdoc/Widgets/Extended/RDTreeWidget.cpp | 6 ++ qrenderdoc/Widgets/Extended/RDTreeWidget.h | 2 + qrenderdoc/Windows/EventBrowser.cpp | 76 ++++++++++++++++++++ qrenderdoc/Windows/EventBrowser.h | 1 + qrenderdoc/Windows/EventBrowser.ui | 7 +- 5 files changed, 91 insertions(+), 1 deletion(-) diff --git a/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp b/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp index a70673e19..53842f014 100644 --- a/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp +++ b/qrenderdoc/Widgets/Extended/RDTreeWidget.cpp @@ -126,6 +126,12 @@ void RDTreeWidget::focusOutEvent(QFocusEvent *event) QTreeWidget::focusOutEvent(event); } +void RDTreeWidget::keyPressEvent(QKeyEvent *e) +{ + emit(keyPress(e)); + QTreeWidget::keyPressEvent(e); +} + void RDTreeWidget::clearHovers(QTreeWidgetItem *root, QTreeWidgetItem *exception) { for(int i = 0; i < root->childCount(); i++) diff --git a/qrenderdoc/Widgets/Extended/RDTreeWidget.h b/qrenderdoc/Widgets/Extended/RDTreeWidget.h index f3c415e8c..64cedb075 100644 --- a/qrenderdoc/Widgets/Extended/RDTreeWidget.h +++ b/qrenderdoc/Widgets/Extended/RDTreeWidget.h @@ -48,6 +48,7 @@ public: signals: void mouseMove(QMouseEvent *e); void leave(QEvent *e); + void keyPress(QKeyEvent *e); public slots: @@ -56,6 +57,7 @@ private: void mouseReleaseEvent(QMouseEvent *e) override; void leaveEvent(QEvent *e) override; void focusOutEvent(QFocusEvent *event) override; + void keyPressEvent(QKeyEvent *e) override; void clearHovers(QTreeWidgetItem *root, QTreeWidgetItem *exception); diff --git a/qrenderdoc/Windows/EventBrowser.cpp b/qrenderdoc/Windows/EventBrowser.cpp index 0a442d07f..425d2d8e4 100644 --- a/qrenderdoc/Windows/EventBrowser.cpp +++ b/qrenderdoc/Windows/EventBrowser.cpp @@ -23,6 +23,8 @@ ******************************************************************************/ #include "EventBrowser.h" +#include +#include #include #include "3rdparty/flowlayout/FlowLayout.h" #include "Code/CaptureContext.h" @@ -76,6 +78,7 @@ EventBrowser::EventBrowser(CaptureContext &ctx, QWidget *parent) QObject::connect(ui->closeJump, &QToolButton::clicked, this, &EventBrowser::on_HideFindJump); QObject::connect(ui->jumpToEID, &RDLineEdit::leave, this, &EventBrowser::on_HideFindJump); QObject::connect(ui->findEvent, &RDLineEdit::leave, this, &EventBrowser::on_HideFindJump); + QObject::connect(ui->events, &RDTreeWidget::keyPress, this, &EventBrowser::events_keyPress); ui->jumpStrip->hide(); ui->findStrip->hide(); ui->bookmarkStrip->hide(); @@ -90,6 +93,42 @@ EventBrowser::EventBrowser(CaptureContext &ctx, QWidget *parent) m_CurrentIcon.addFile(QStringLiteral(":/flag_green.png"), QSize(), QIcon::Normal, QIcon::Off); m_FindIcon.addFile(QStringLiteral(":/find.png"), QSize(), QIcon::Normal, QIcon::Off); m_BookmarkIcon.addFile(QStringLiteral(":/asterisk_orange.png"), QSize(), QIcon::Normal, QIcon::Off); + + Qt::Key keys[] = { + Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, + Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, + }; + for(int i = 0; i < 10; i++) + { + QShortcut *sc = new QShortcut(QKeySequence(keys[i] | Qt::ControlModifier), this); + QObject::connect(sc, &QShortcut::activated, [this, i]() { jumpToBookmark(i); }); + } + + { + QShortcut *sc = new QShortcut(QKeySequence(Qt::Key_Left | Qt::ControlModifier), this); + QObject::connect(sc, &QShortcut::activated, [this]() { + if(!m_Ctx.LogLoaded()) + return; + + const FetchDrawcall *draw = m_Ctx.CurDrawcall(); + + if(draw && draw->previous >= 0) + SelectEvent(draw->previous); + }); + } + + { + QShortcut *sc = new QShortcut(QKeySequence(Qt::Key_Right | Qt::ControlModifier), this); + QObject::connect(sc, &QShortcut::activated, [this]() { + if(!m_Ctx.LogLoaded()) + return; + + const FetchDrawcall *draw = m_Ctx.CurDrawcall(); + + if(draw && draw->next >= 0) + SelectEvent(draw->next); + }); + } } EventBrowser::~EventBrowser() @@ -342,6 +381,43 @@ void EventBrowser::on_findPrev_clicked() Find(false); } +void EventBrowser::events_keyPress(QKeyEvent *event) +{ + if(!m_Ctx.LogLoaded()) + return; + + if(event->key() == Qt::Key_F3) + { + if(event->modifiers() == Qt::ShiftModifier) + Find(false); + else + Find(true); + } + + if(event->modifiers() == Qt::ControlModifier) + { + if(event->key() == Qt::Key_F) + { + on_find_clicked(); + event->accept(); + } + else if(event->key() == Qt::Key_G) + { + on_gotoEID_clicked(); + event->accept(); + } + else if(event->key() == Qt::Key_B) + { + on_bookmark_clicked(); + event->accept(); + } + else if(event->key() == Qt::Key_T) + { + on_timeDraws_clicked(); + event->accept(); + } + } +} void EventBrowser::clearBookmarks() { diff --git a/qrenderdoc/Windows/EventBrowser.h b/qrenderdoc/Windows/EventBrowser.h index b1dc7d0b2..9d2aab66d 100644 --- a/qrenderdoc/Windows/EventBrowser.h +++ b/qrenderdoc/Windows/EventBrowser.h @@ -70,6 +70,7 @@ private slots: // manual slots void findHighlight_timeout(); + void events_keyPress(QKeyEvent *event); public slots: void clearBookmarks(); diff --git a/qrenderdoc/Windows/EventBrowser.ui b/qrenderdoc/Windows/EventBrowser.ui index f7e816966..c981b7205 100644 --- a/qrenderdoc/Windows/EventBrowser.ui +++ b/qrenderdoc/Windows/EventBrowser.ui @@ -477,7 +477,7 @@ - + QFrame::NoFrame @@ -551,6 +551,11 @@ QLineEdit
Widgets/Extended/RDLineEdit.h
+ + RDTreeWidget + QTreeWidget +
Widgets/Extended/RDTreeWidget.h
+