X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/212ef3a04d19bcb5299c38fd153ee434e0f26efd..7ddb99003292dbe619bfdabe1156dcbd11f18d42:/client/proxguiqt.cpp diff --git a/client/proxguiqt.cpp b/client/proxguiqt.cpp index f0038683..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; } @@ -263,7 +266,7 @@ void ProxWidget::paintEvent(QPaintEvent *event) painter.setPen(QColor(255, 0, 255)); painter.drawPath(cursorBPath); - char str[100]; + char str[200]; sprintf(str, "@%d max=%d min=%d mean=%d n=%d/%d dt=%d [%.3f] zoom=%.3f CursorA=%d [%d] CursorB=%d [%d]", GraphStart, yMax, yMin, yMean, n, GraphTraceLen, CursorBPos - CursorAPos, (CursorBPos - CursorAPos)/CursorScaleFactor,GraphPixelsPerPoint,CursorAPos,GraphBuffer[CursorAPos],CursorBPos,GraphBuffer[CursorBPos]); @@ -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: