]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
Add plot window keystroke help
authorfnargwibble@gmail.com <fnargwibble@gmail.com@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Sat, 21 Jan 2012 13:32:54 +0000 (13:32 +0000)
committerfnargwibble@gmail.com <fnargwibble@gmail.com@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Sat, 21 Jan 2012 13:32:54 +0000 (13:32 +0000)
Add grid display/lock commands to plot window

client/cmddata.c
client/proxgui.h
client/proxguiqt.cpp
client/ui.c
client/ui.h

index 5d012199f14867ec4adaf7ba72b741b0124db9bf..77640d9d8a15e0ce754e39d59efa4a23e6a56f76 100644 (file)
@@ -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, "<filename> -- Save trace (from graph window)"},
   {"scale",         CmdScale,           1, "<int> -- Set cursor display scale"},
index 8e86bd9c107ba98f66855fda767b02f7ea4216f1..6fcf4d0a35dbe10fff3231f8c99f278bf4dc4f28 100644 (file)
@@ -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;
 
index 6719fcacbfc05992e30828b4e87ebea1253b2bc6..2c6894193ae44f21b12c44b06e5a068b2f2fe955 100644 (file)
 #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:
index 554230cb098fdb0f7f09d628aa53c8e66c9c0b0c..09479620a0afaefb1dd99b8cffe70204994fe38d 100644 (file)
@@ -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";
index 383ce83dbc1b04d241184c586633618d156a65d7..3a6d385ed514f24b10f17806ceffc29acbad3b44 100644 (file)
@@ -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
Impressum, Datenschutz