From: fnargwibble@gmail.com Date: Sat, 21 Jan 2012 13:32:54 +0000 (+0000) Subject: Add plot window keystroke help X-Git-Tag: v1.0.0~234 X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/7ddb99003292dbe619bfdabe1156dcbd11f18d42?ds=sidebyside Add plot window keystroke help Add grid display/lock commands to plot window --- diff --git a/client/cmddata.c b/client/cmddata.c index 5d012199..77640d9d 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -388,6 +388,8 @@ int CmdFSKdemod(const char *Cmd) int CmdGrid(const char *Cmd) { sscanf(Cmd, "%i %i", &PlotGridX, &PlotGridY); + PlotGridXdefault= PlotGridX; + PlotGridYdefault= PlotGridY; RepaintGraphWindow(); return 0; } @@ -874,7 +876,7 @@ static command_t CommandTable[] = {"mandemod", CmdManchesterDemod, 1, "[i] [clock rate] -- Manchester demodulate binary stream (option 'i' to invert output)"}, {"manmod", CmdManchesterMod, 1, "[clock rate] -- Manchester modulate a binary stream"}, {"norm", CmdNorm, 1, "Normalize max/min to +/-500"}, - {"plot", CmdPlot, 1, "Show graph window"}, + {"plot", CmdPlot, 1, "Show graph window (hit 'h' in window for keystroke help)"}, {"samples", CmdSamples, 0, "[128 - 16000] -- Get raw samples for graph window"}, {"save", CmdSave, 1, " -- Save trace (from graph window)"}, {"scale", CmdScale, 1, " -- Set cursor display scale"}, diff --git a/client/proxgui.h b/client/proxgui.h index 8e86bd9c..6fcf4d0a 100644 --- a/client/proxgui.h +++ b/client/proxgui.h @@ -23,7 +23,7 @@ void ExitGraphics(void); extern int GraphBuffer[MAX_GRAPH_TRACE_LEN]; extern int GraphTraceLen; extern double CursorScaleFactor; -extern int PlotGridX, PlotGridY; +extern int PlotGridX, PlotGridY, PlotGridXdefault, PlotGridYdefault; extern int CommandFinished; extern int offline; diff --git a/client/proxguiqt.cpp b/client/proxguiqt.cpp index 6719fcac..2c689419 100644 --- a/client/proxguiqt.cpp +++ b/client/proxguiqt.cpp @@ -22,6 +22,10 @@ #include "proxguiqt.h" #include "proxgui.h" +int GridOffset= 0; +bool GridLocked= 0; +int startMax; + void ProxGuiQT::ShowGraphWindow(void) { emit ShowGraphWindowSignal(); @@ -130,7 +134,7 @@ void ProxWidget::paintEvent(QPaintEvent *event) // plot X and Y grid lines int i; if ((PlotGridX > 0) && ((PlotGridX * GraphPixelsPerPoint) > 1)) { - for(i = 40; i < r.right(); i += (int)(PlotGridX * GraphPixelsPerPoint)) { + for(i = 40 + GridOffset; i < r.right(); i += (int)(PlotGridX * GraphPixelsPerPoint)) { //SelectObject(hdc, GreyPenLite); //MoveToEx(hdc, r.left + i, r.top, NULL); //LineTo(hdc, r.left + i, r.bottom); @@ -150,8 +154,7 @@ void ProxWidget::paintEvent(QPaintEvent *event) } } - int startMax = - (GraphTraceLen - (int)((r.right() - r.left() - 40) / GraphPixelsPerPoint)); + startMax = (GraphTraceLen - (int)((r.right() - r.left() - 40) / GraphPixelsPerPoint)); if(startMax < 0) { startMax = 0; } @@ -323,18 +326,65 @@ void ProxWidget::keyPressEvent(QKeyEvent *event) case Qt::Key_Right: if(GraphPixelsPerPoint < 20) { + if (GridLocked && GraphStart < startMax) + GridOffset -= (int)(20 / GraphPixelsPerPoint); GraphStart += (int)(20 / GraphPixelsPerPoint); } else { GraphStart++; + if (GridLocked && GraphStart < startMax) + GridOffset--; } + if(GridOffset < 0) + GridOffset += PlotGridX; + if (PlotGridX) + GridOffset %= PlotGridX; break; case Qt::Key_Left: if(GraphPixelsPerPoint < 20) { + if (GridLocked && GraphStart > 0) + GridOffset += (int)(20 / GraphPixelsPerPoint); GraphStart -= (int)(20 / GraphPixelsPerPoint); } else { GraphStart--; + if (GridLocked && GraphStart > 0) + GridOffset++; } + if (PlotGridX) + GridOffset %= PlotGridX; + break; + + case Qt::Key_G: + if(PlotGridX || PlotGridY) { + PlotGridX= 0; + PlotGridY= 0; + } else { + PlotGridX= PlotGridXdefault; + PlotGridY= PlotGridYdefault; + } + break; + + case Qt::Key_H: + puts("Plot Window Keystrokes:\n"); + puts(" Key Action\n"); + puts(" DOWN Zoom in"); + puts(" G Toggle grid display"); + puts(" H Show help"); + puts(" LEFT Move left"); + puts(" L Toggle lock grid relative to samples"); + puts(" Q Hide window"); + puts(" RIGHT Move right"); + puts(" UP Zoom out"); + puts(""); + puts("Use client window 'data help' for more plot commands\n"); + break; + + case Qt::Key_L: + GridLocked= !GridLocked; + break; + + case Qt::Key_Q: + this->hide(); break; default: diff --git a/client/ui.c b/client/ui.c index 554230cb..09479620 100644 --- a/client/ui.c +++ b/client/ui.c @@ -18,7 +18,7 @@ #include "ui.h" double CursorScaleFactor; -int PlotGridX, PlotGridY; +int PlotGridX, PlotGridY, PlotGridXdefault= 64, PlotGridYdefault= 64; int offline; static char *logfilename = "proxmark3.log"; diff --git a/client/ui.h b/client/ui.h index 383ce83d..3a6d385e 100644 --- a/client/ui.h +++ b/client/ui.h @@ -19,7 +19,7 @@ void PrintAndLog(char *fmt, ...); void SetLogFilename(char *fn); extern double CursorScaleFactor; -extern int PlotGridX, PlotGridY; +extern int PlotGridX, PlotGridY, PlotGridXdefault, PlotGridYdefault; extern int offline; #endif