Skip to content

Commit d0e2c82

Browse files
authored
Add basic keyboard shortcuts (#21)
1 parent bf8499b commit d0e2c82

File tree

4 files changed

+67
-5
lines changed

4 files changed

+67
-5
lines changed

apps/VC/CVolumeViewer.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,20 @@ void CVolumeViewer::ScaleImage(double nFactor)
136136
}
137137

138138
// Handle zoom in click
139-
void CVolumeViewer::OnZoomInClicked(void) { ScaleImage(1.25); }
139+
void CVolumeViewer::OnZoomInClicked(void)
140+
{
141+
if (fZoomInBtn->isEnabled()) {
142+
ScaleImage(1.25);
143+
}
144+
}
140145

141146
// Handle zoom out click
142-
void CVolumeViewer::OnZoomOutClicked(void) { ScaleImage(0.8); }
147+
void CVolumeViewer::OnZoomOutClicked(void)
148+
{
149+
if (fZoomOutBtn->isEnabled()) {
150+
ScaleImage(0.8);
151+
}
152+
}
143153

144154
// Handle reset click
145155
void CVolumeViewer::OnResetClicked(void)
@@ -154,14 +164,18 @@ void CVolumeViewer::OnResetClicked(void)
154164
void CVolumeViewer::OnNextClicked(void)
155165
{
156166
// send signal to controller (MVC) in order to update the content
157-
SendSignalOnNextClicked();
167+
if (fNextBtn->isEnabled()) {
168+
SendSignalOnNextClicked();
169+
}
158170
}
159171

160172
// Handle previous image click
161173
void CVolumeViewer::OnPrevClicked(void)
162174
{
163175
// send signal to controller (MVC ) in order to update the content
164-
SendSignalOnPrevClicked();
176+
if (fPrevBtn->isEnabled()) {
177+
SendSignalOnPrevClicked();
178+
}
165179
}
166180

167181
// Handle image index change

apps/VC/CVolumeViewer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class CVolumeViewer : public QWidget
3434
void mouseMoveEvent(QMouseEvent* event);
3535
void paintEvent(QPaintEvent* event);
3636

37-
private slots:
37+
public slots:
3838
void OnZoomInClicked(void);
3939
void OnZoomOutClicked(void);
4040
void OnResetClicked(void);

apps/VC/CWindow.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Chao Du 2014 Dec
33
#include "CWindow.hpp"
44

5+
#include <QKeySequence>
56
#include <QProgressBar>
67
#include <QSettings>
78
#include <opencv2/imgproc.hpp>
@@ -345,6 +346,39 @@ void CWindow::CreateWidgets(void)
345346

346347
// Set up the status bar
347348
statusBar = this->findChild<QStatusBar*>("statusBar");
349+
350+
// setup shortcuts
351+
slicePrev = new QShortcut(QKeySequence(tr("Left")), this);
352+
sliceNext = new QShortcut(QKeySequence(tr("Right")), this);
353+
sliceZoomIn = new QShortcut(QKeySequence::ZoomIn, this);
354+
sliceZoomOut = new QShortcut(QKeySequence::ZoomOut, this);
355+
impactDwn = new QShortcut(QKeySequence(tr("[")), this);
356+
impactUp = new QShortcut(QKeySequence(tr("]")), this);
357+
358+
connect(
359+
slicePrev, &QShortcut::activated, fVolumeViewerWidget,
360+
&CVolumeViewerWithCurve::OnPrevClicked);
361+
connect(
362+
sliceNext, &QShortcut::activated, fVolumeViewerWidget,
363+
&CVolumeViewerWithCurve::OnNextClicked);
364+
connect(
365+
sliceZoomIn, &QShortcut::activated, fVolumeViewerWidget,
366+
&CVolumeViewerWithCurve::OnZoomInClicked);
367+
connect(
368+
sliceZoomOut, &QShortcut::activated, fVolumeViewerWidget,
369+
&CVolumeViewerWithCurve::OnZoomOutClicked);
370+
connect(impactUp, &QShortcut::activated, [this]() {
371+
if (ui.sldImpactRange->isEnabled()) {
372+
ui.sldImpactRange->triggerAction(
373+
QSlider::SliderAction::SliderSingleStepAdd);
374+
}
375+
});
376+
connect(impactDwn, &QShortcut::activated, [this]() {
377+
if (ui.sldImpactRange->isEnabled()) {
378+
ui.sldImpactRange->triggerAction(
379+
QSlider::SliderAction::SliderSingleStepSub);
380+
}
381+
});
348382
}
349383

350384
// Create menus
@@ -368,13 +402,18 @@ void CWindow::CreateActions(void)
368402
{
369403
fOpenVolAct = new QAction(tr("&Open volpkg..."), this);
370404
connect(fOpenVolAct, SIGNAL(triggered()), this, SLOT(Open()));
405+
fOpenVolAct->setShortcut(QKeySequence::Open);
406+
371407
fExitAct = new QAction(tr("E&xit..."), this);
372408
connect(fExitAct, SIGNAL(triggered()), this, SLOT(Close()));
409+
373410
fAboutAct = new QAction(tr("&About..."), this);
374411
connect(fAboutAct, SIGNAL(triggered()), this, SLOT(About()));
412+
375413
fSavePointCloudAct = new QAction(tr("&Save volpkg..."), this);
376414
connect(
377415
fSavePointCloudAct, SIGNAL(triggered()), this, SLOT(SavePointCloud()));
416+
fSavePointCloudAct->setShortcut(QKeySequence::Save);
378417
}
379418

380419
void CWindow::CreateBackend()

apps/VC/CWindow.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <QMessageBox>
66
#include <QObject>
77
#include <QRect>
8+
#include <QShortcut>
89
#include <QSpinBox>
910
#include <QThread>
1011
#include <QTimer>
@@ -218,6 +219,14 @@ private slots:
218219
QSlider* fEdtImpactRange;
219220
QLabel* fLabImpactRange;
220221

222+
// keyboard shortcuts
223+
QShortcut* slicePrev;
224+
QShortcut* sliceNext;
225+
QShortcut* sliceZoomIn;
226+
QShortcut* sliceZoomOut;
227+
QShortcut* impactUp;
228+
QShortcut* impactDwn;
229+
221230
Ui_VCMainWindow ui;
222231

223232
QStatusBar* statusBar;

0 commit comments

Comments
 (0)