add: Home (Pos1) and End key bindings in graph GUI (based on @mcd1992 change on RRG repo) (#823)

This commit is contained in:
pwpiwi 2019-05-27 07:58:09 +02:00 committed by GitHub
parent 2378bb24c3
commit 5f18b0c45d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 20 deletions

View file

@ -32,6 +32,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
- Added `hf mfp ndef` `hf mf ndef` parsing NDEF records (Merlok) - Added `hf mfp ndef` `hf mf ndef` parsing NDEF records (Merlok)
- Added Mifare Mini, Mifare 2K and 4K support to `hf mf sim` (piwi) - Added Mifare Mini, Mifare 2K and 4K support to `hf mf sim` (piwi)
- Added Legic detection to `hf search` (dnet) - Added Legic detection to `hf search` (dnet)
- Added Home (Pos1) and End key bindings to the plot GUI (based on @mcd1992)
## [v3.1.0][2018-10-10] ## [v3.1.0][2018-10-10]

View file

@ -34,8 +34,8 @@ extern "C" {
bool g_useOverlays = false; bool g_useOverlays = false;
int g_absVMax = 0; int g_absVMax = 0;
int startMax; int startMax; // Maximum offset in the graph (right side of graph)
int PageWidth; int PageWidth; // How many samples are currently visible on this 'page' / graph
int unlockStart = 0; int unlockStart = 0;
void ProxGuiQT::ShowGraphWindow(void) void ProxGuiQT::ShowGraphWindow(void)
@ -134,8 +134,8 @@ ProxGuiQT::~ProxGuiQT(void)
{ {
//if (plotwidget) { //if (plotwidget) {
//plotwidget->destroy(true,true); //plotwidget->destroy(true,true);
// delete plotwidget; // delete plotwidget;
// plotwidget = NULL; // plotwidget = NULL;
//} //}
if (plotapp) { if (plotapp) {
plotapp->quit(); plotapp->quit();
@ -474,7 +474,7 @@ void Plot::plotGridLines(QPainter* painter,QRect r)
if ((PlotGridX > 0) && ((PlotGridX * GraphPixelsPerPoint) > 1)) { if ((PlotGridX > 0) && ((PlotGridX * GraphPixelsPerPoint) > 1)) {
for(i = (offset * GraphPixelsPerPoint); i < r.right(); i += grid_delta_x) { for(i = (offset * GraphPixelsPerPoint); i < r.right(); i += grid_delta_x) {
painter->drawLine(r.left()+i, r.top(), r.left()+i, r.bottom()); painter->drawLine(r.left()+i, r.top(), r.left()+i, r.bottom());
} }
} }
if (PlotGridY > 0) { if (PlotGridY > 0) {
for(i = 0; yCoordOf(i,r,g_absVMax) > r.top(); i += grid_delta_y) { for(i = 0; yCoordOf(i,r,g_absVMax) > r.top(); i += grid_delta_y) {
@ -509,8 +509,9 @@ void Plot::paintEvent(QPaintEvent *event)
if(CursorDPos > GraphTraceLen) if(CursorDPos > GraphTraceLen)
CursorDPos= 0; CursorDPos= 0;
QRect plotRect(WIDTH_AXES, 0, width()-WIDTH_AXES, height()-HEIGHT_INFO); QRect plotRect(WIDTH_AXES, 0, width() - WIDTH_AXES, height() - HEIGHT_INFO);
QRect infoRect(0, height()-HEIGHT_INFO, width(), HEIGHT_INFO); QRect infoRect(0, height() - HEIGHT_INFO, width(), HEIGHT_INFO);
PageWidth = plotRect.width() / GraphPixelsPerPoint;
//Grey background //Grey background
painter.fillRect(rect(), QColor(60, 60, 60)); painter.fillRect(rect(), QColor(60, 60, 60));
@ -529,7 +530,7 @@ void Plot::paintEvent(QPaintEvent *event)
//Start painting graph //Start painting graph
PlotGraph(GraphBuffer, GraphTraceLen,plotRect,infoRect,&painter,0); PlotGraph(GraphBuffer, GraphTraceLen,plotRect,infoRect,&painter,0);
if (showDemod && DemodBufferLen > 8) { if (showDemod && DemodBufferLen > 8) {
PlotDemod(DemodBuffer, DemodBufferLen,plotRect,infoRect,&painter,2,g_DemodStartIdx); PlotDemod(DemodBuffer, DemodBufferLen,plotRect,infoRect,&painter,2,g_DemodStartIdx);
} }
if (g_useOverlays) { if (g_useOverlays) {
@ -564,7 +565,7 @@ void Plot::paintEvent(QPaintEvent *event)
//Draw annotations //Draw annotations
char str[200]; char str[200];
sprintf(str, "@%d dt=%d [%2.2f] zoom=%2.2f CursorAPos=%d CursorBPos=%d GridX=%d GridY=%d (%s) GridXoffset=%d", sprintf(str, "@%d dt=%d [%2.2f] zoom=%2.2f CursorAPos=%d CursorBPos=%d GridX=%d GridY=%d (%s) GridXoffset=%d",
GraphStart, CursorBPos - CursorAPos, (CursorBPos - CursorAPos)/CursorScaleFactor, GraphStart, CursorBPos - CursorAPos, (CursorBPos - CursorAPos)/CursorScaleFactor,
GraphPixelsPerPoint,CursorAPos,CursorBPos,PlotGridXdefault,PlotGridYdefault,GridLocked?"Locked":"Unlocked",GridOffset); GraphPixelsPerPoint,CursorAPos,CursorBPos,PlotGridXdefault,PlotGridYdefault,GridLocked?"Locked":"Unlocked",GridOffset);
painter.setPen(QColor(255, 255, 255)); painter.setPen(QColor(255, 255, 255));
painter.drawText(20, infoRect.bottom() - 3, str); painter.drawText(20, infoRect.bottom() - 3, str);
@ -616,14 +617,14 @@ void Plot::mouseMoveEvent(QMouseEvent *event)
void Plot::keyPressEvent(QKeyEvent *event) void Plot::keyPressEvent(QKeyEvent *event)
{ {
int offset; int offset; // Left/right movement offset (in sample size)
if(event->modifiers() & Qt::ShiftModifier) { if(event->modifiers() & Qt::ShiftModifier) {
if (PlotGridX) if (PlotGridX)
offset= PageWidth - (PageWidth % PlotGridX); offset= PageWidth - (PageWidth % PlotGridX);
else else
offset= PageWidth; offset= PageWidth;
} else } else
if(event->modifiers() & Qt::ControlModifier) if(event->modifiers() & Qt::ControlModifier)
offset= 1; offset= 1;
else else
@ -671,20 +672,22 @@ void Plot::keyPressEvent(QKeyEvent *event)
case Qt::Key_H: case Qt::Key_H:
puts("Plot Window Keystrokes:\n"); puts("Plot Window Keystrokes:\n");
puts(" Key Action\n"); puts(" Key Action\n");
puts(" UP Zoom out");
puts(" DOWN Zoom in"); puts(" DOWN Zoom in");
puts(" G Toggle grid display"); puts(" G Toggle grid display");
puts(" H Show help"); puts(" H Show help");
puts(" L Toggle lock grid relative to samples"); puts(" L Toggle lock grid relative to samples");
puts(" Q Hide window");
puts(" HOME Move to the start of the graph");
puts(" END Move to the end of the graph");
puts(" LEFT Move left"); puts(" LEFT Move left");
puts(" <CTL>LEFT Move left 1 sample"); puts(" <CTL>LEFT Move left 1 sample");
puts(" <SHIFT>LEFT Page left"); puts(" <SHIFT>LEFT Page left");
puts(" LEFT-MOUSE-CLICK Set yellow cursor"); puts(" LEFT-MOUSE-CLICK Set yellow cursor");
puts(" Q Hide window");
puts(" RIGHT Move right"); puts(" RIGHT Move right");
puts(" <CTL>RIGHT Move right 1 sample"); puts(" <CTL>RIGHT Move right 1 sample");
puts(" <SHIFT>RIGHT Page right"); puts(" <SHIFT>RIGHT Page right");
puts(" RIGHT-MOUSE-CLICK Set purple cursor"); puts(" RIGHT-MOUSE-CLICK Set purple cursor");
puts(" UP Zoom out");
puts(""); puts("");
puts("Use client window 'data help' for more plot commands\n"); puts("Use client window 'data help' for more plot commands\n");
break; break;
@ -701,6 +704,14 @@ void Plot::keyPressEvent(QKeyEvent *event)
master->hide(); master->hide();
break; break;
case Qt::Key_Home:
GraphStart = 0;
break;
case Qt::Key_End:
GraphStart = startMax;
break;
default: default:
QWidget::keyPressEvent(event); QWidget::keyPressEvent(event);
return; return;

View file

@ -29,8 +29,8 @@ class Plot: public QWidget
{ {
private: private:
QWidget *master; QWidget *master;
int GraphStart; int GraphStart; // Starting point/offset for the left side of the graph
double GraphPixelsPerPoint; double GraphPixelsPerPoint; // How many visual pixels are between each sample point (x axis)
int CursorAPos; int CursorAPos;
int CursorBPos; int CursorBPos;
void PlotGraph(int *buffer, int len, QRect r,QRect r2, QPainter* painter, int graphNum); void PlotGraph(int *buffer, int len, QRect r,QRect r2, QPainter* painter, int graphNum);
@ -73,13 +73,13 @@ class ProxWidget : public QWidget
//OpsShow(void); //OpsShow(void);
protected: protected:
// void paintEvent(QPaintEvent *event); // void paintEvent(QPaintEvent *event);
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
void showEvent(QShowEvent *event); void showEvent(QShowEvent *event);
void hideEvent(QHideEvent *event); void hideEvent(QHideEvent *event);
// void mouseMoveEvent(QMouseEvent *event); // void mouseMoveEvent(QMouseEvent *event);
// void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); } // void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); }
// void keyPressEvent(QKeyEvent *event); // void keyPressEvent(QKeyEvent *event);
public slots: public slots:
void applyOperation(); void applyOperation();
void stickOperation(); void stickOperation();
@ -111,7 +111,7 @@ class ProxGuiQT : public QObject
int argc; int argc;
char **argv; char **argv;
WorkerThread *proxmarkThread; WorkerThread *proxmarkThread;
public: public:
ProxGuiQT(int argc, char **argv, WorkerThread *wthread); ProxGuiQT(int argc, char **argv, WorkerThread *wthread);
~ProxGuiQT(void); ~ProxGuiQT(void);