]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/proxguiqt.cpp
align clock grid with demods on graph (#276)
[proxmark3-svn] / client / proxguiqt.cpp
index b34eecfdb4890aae78cce9666b00e899171da8b5..85f408f79bacf331bce4524fee18c3fec4c1251e 100644 (file)
@@ -7,6 +7,7 @@
 //-----------------------------------------------------------------------------
 // GUI (QT)
 //-----------------------------------------------------------------------------
+#include "proxguiqt.h"
 
 #include <iostream>
 #include <QPainterPath>
 #include <math.h>
 #include <limits.h>
 #include <stdio.h>
-#include "proxguiqt.h"
 #include "proxgui.h"
 
-int GridOffset= 0;
-bool GridLocked= 0;
 int startMax;
 int PageWidth;
 
@@ -102,7 +100,7 @@ ProxGuiQT::~ProxGuiQT(void)
 void ProxWidget::paintEvent(QPaintEvent *event)
 {
        QPainter painter(this);
-       QPainterPath penPath, whitePath, greyPath, lightgreyPath, cursorAPath, cursorBPath;
+       QPainterPath penPath, whitePath, greyPath, lightgreyPath, cursorAPath, cursorBPath, cursorCPath, cursorDPath;
        QRect r;
        QBrush brush(QColor(100, 255, 100));
        QPen pen(QColor(100, 255, 100));
@@ -117,6 +115,10 @@ void ProxWidget::paintEvent(QPaintEvent *event)
                CursorAPos= 0;
        if(CursorBPos > GraphTraceLen)
                CursorBPos= 0;
+       if(CursorCPos > GraphTraceLen)
+               CursorCPos= 0;
+       if(CursorDPos > GraphTraceLen)
+               CursorDPos= 0;
 
        r = rect();
 
@@ -242,13 +244,17 @@ void ProxWidget::paintEvent(QPaintEvent *event)
                        penPath.moveTo(x,y);
                }
 
-               if(i == CursorAPos || i == CursorBPos) {
+               if(i == CursorAPos || i == CursorBPos || i == CursorCPos || i == CursorDPos) {
                        QPainterPath *cursorPath;
 
                        if(i == CursorAPos) {
                                cursorPath = &cursorAPath;
-                       } else {
+                       } else if (i == CursorBPos) {
                                cursorPath = &cursorBPath;
+                       } else if (i == CursorCPos) {
+                               cursorPath = &cursorCPath;
+                       } else {
+                               cursorPath = &cursorDPath;
                        }
                        cursorPath->moveTo(x, r.top());
                        cursorPath->lineTo(x, r.bottom());
@@ -268,11 +274,15 @@ void ProxWidget::paintEvent(QPaintEvent *event)
        painter.drawPath(cursorAPath);
        painter.setPen(QColor(255, 0, 255));
        painter.drawPath(cursorBPath);
+       painter.setPen(QColor(255, 153, 0)); //orange
+       painter.drawPath(cursorCPath);
+       painter.setPen(QColor(0, 0, 205)); //light blue
+       painter.drawPath(cursorDPath);
 
        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]",
+       sprintf(str, "@%d   max=%d min=%d mean=%d n=%d/%d    dt=%d [%.3f] zoom=%.3f CursorA=%d [%d] CursorB=%d [%d]    GridX=%d GridY=%d (%s)",
                        GraphStart, yMax, yMin, yMean, n, GraphTraceLen,
-                       CursorBPos - CursorAPos, (CursorBPos - CursorAPos)/CursorScaleFactor,GraphPixelsPerPoint,CursorAPos,GraphBuffer[CursorAPos],CursorBPos,GraphBuffer[CursorBPos]);
+                       CursorBPos - CursorAPos, (CursorBPos - CursorAPos)/CursorScaleFactor,GraphPixelsPerPoint,CursorAPos,GraphBuffer[CursorAPos],CursorBPos,GraphBuffer[CursorBPos],PlotGridXdefault,PlotGridYdefault,GridLocked?"Locked":"Unlocked");
 
        painter.setPen(QColor(255, 255, 255));
        painter.drawText(50, r.bottom() - 20, str);
@@ -280,7 +290,7 @@ void ProxWidget::paintEvent(QPaintEvent *event)
 
 ProxWidget::ProxWidget(QWidget *parent) : QWidget(parent), GraphStart(0), GraphPixelsPerPoint(1)
 {
-       resize(600, 500);
+       resize(600, 300);
 
        QPalette palette(QColor(0,0,0,0));
        palette.setColor(QPalette::WindowText, QColor(255,255,255));
@@ -288,6 +298,8 @@ ProxWidget::ProxWidget(QWidget *parent) : QWidget(parent), GraphStart(0), GraphP
        palette.setColor(QPalette::Button, QColor(100, 100, 100));
        setPalette(palette);
        setAutoFillBackground(true);
+       CursorAPos = 0;
+       CursorBPos = 0;
 }
 
 void ProxWidget::closeEvent(QCloseEvent *event)
@@ -324,9 +336,11 @@ void ProxWidget::keyPressEvent(QKeyEvent *event)
                        offset= PageWidth - (PageWidth % PlotGridX);
                else
                        offset= PageWidth;
-       }
-       else
-               offset= (int)(20 / GraphPixelsPerPoint);
+       } else 
+               if(event->modifiers() & Qt::ControlModifier)
+                       offset= 1;
+               else
+                       offset= (int)(20 / GraphPixelsPerPoint);
 
        switch(event->key()) {
                case Qt::Key_Down:
@@ -404,17 +418,21 @@ void ProxWidget::keyPressEvent(QKeyEvent *event)
 
                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(" <SHIFT>LEFT       Page left");
-                       puts(" L                 Toggle lock grid relative to samples");
-                       puts(" Q                 Hide window");
-                       puts(" RIGHT             Move right");
-                       puts(" <SHIFT>RIGHT      Page right");
-                       puts(" UP                Zoom out");
+                       puts(" Key                      Action\n");
+                       puts(" DOWN                     Zoom in");
+                       puts(" G                        Toggle grid display");
+                       puts(" H                        Show help");
+                       puts(" L                        Toggle lock grid relative to samples");
+                       puts(" LEFT                     Move left");
+                       puts(" <CTL>LEFT                Move left 1 sample");
+                       puts(" <SHIFT>LEFT              Page left");
+                       puts(" LEFT-MOUSE-CLICK         Set yellow cursor");
+                       puts(" Q                        Hide window");
+                       puts(" RIGHT                    Move right");
+                       puts(" <CTL>RIGHT               Move right 1 sample");
+                       puts(" <SHIFT>RIGHT             Page right");
+                       puts(" RIGHT-MOUSE-CLICK        Set purple cursor");
+                       puts(" UP                       Zoom out");
                        puts("");
                        puts("Use client window 'data help' for more plot commands\n");
                        break;
Impressum, Datenschutz