]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
Navigate a page at a time in plot window
authorfnargwibble@gmail.com <fnargwibble@gmail.com@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Mon, 23 Jan 2012 17:57:42 +0000 (17:57 +0000)
committerfnargwibble@gmail.com <fnargwibble@gmail.com@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Mon, 23 Jan 2012 17:57:42 +0000 (17:57 +0000)
client/proxguiqt.cpp

index 4e57fecc7ff8754cb46f30f84d64b2decc6daee3..b34eecfdb4890aae78cce9666b00e899171da8b5 100644 (file)
@@ -25,6 +25,7 @@
 int GridOffset= 0;
 bool GridLocked= 0;
 int startMax;
+int PageWidth;
 
 void ProxGuiQT::ShowGraphWindow(void)
 {
@@ -131,6 +132,8 @@ void ProxWidget::paintEvent(QPaintEvent *event)
        painter.setPen(QColor(100, 100, 100));
        painter.drawPath(greyPath);
 
+       PageWidth= (int)((r.right() - r.left() - 40) / GraphPixelsPerPoint);
+       
         // plot X and Y grid lines
         int i;
         if ((PlotGridX > 0) && ((PlotGridX * GraphPixelsPerPoint) > 1)) {
@@ -141,7 +144,7 @@ void ProxWidget::paintEvent(QPaintEvent *event)
                        lightgreyPath.moveTo(r.left()+i,r.top());
                        lightgreyPath.lineTo(r.left()+i,r.bottom());
                        painter.drawPath(lightgreyPath);
-                
+               } 
         } 
         if ((PlotGridY > 0) && ((PlotGridY * GraphPixelsPerPoint) > 1)){
                for(i = 0; i < ((r.top() + r.bottom())>>1); i += (int)(PlotGridY * GraphPixelsPerPoint)) {
@@ -151,9 +154,9 @@ void ProxWidget::paintEvent(QPaintEvent *event)
                        lightgreyPath.moveTo(r.left() + 40,zeroHeight - i);
                        lightgreyPath.lineTo(r.right(),zeroHeight - i);
                        painter.drawPath(lightgreyPath);
-                       }
                }
-       
+        }
+
        startMax = (GraphTraceLen - (int)((r.right() - r.left() - 40) / GraphPixelsPerPoint));
        if(startMax < 0) {
                startMax = 0;
@@ -311,6 +314,20 @@ void ProxWidget::mouseMoveEvent(QMouseEvent *event)
 
 void ProxWidget::keyPressEvent(QKeyEvent *event)
 {
+       int     offset;
+       int     gridchanged;
+
+       gridchanged= 0;
+
+       if(event->modifiers() & Qt::ShiftModifier) {
+               if (PlotGridX)
+                       offset= PageWidth - (PageWidth % PlotGridX);
+               else
+                       offset= PageWidth;
+       }
+       else
+               offset= (int)(20 / GraphPixelsPerPoint);
+
        switch(event->key()) {
                case Qt::Key_Down:
                        if(GraphPixelsPerPoint <= 50) {
@@ -326,32 +343,53 @@ void ProxWidget::keyPressEvent(QKeyEvent *event)
 
                case Qt::Key_Right:
                        if(GraphPixelsPerPoint < 20) {
-                               if (GridLocked && GraphStart < startMax)
-                                       GridOffset -= (int)(20 / GraphPixelsPerPoint);
-                               GraphStart += (int)(20 / GraphPixelsPerPoint);
+                               if (PlotGridX && GridLocked && GraphStart < startMax){
+                                       GridOffset -= offset;
+                                       GridOffset %= PlotGridX;
+                                       gridchanged= 1;
+                               }
+                               GraphStart += offset;
                        } else {
-                               if (GridLocked && GraphStart < startMax)
+                               if (PlotGridX && GridLocked && GraphStart < startMax){
                                        GridOffset--;
+                                       GridOffset %= PlotGridX;
+                                       gridchanged= 1;
+                               }
                                GraphStart++;
                        }
-                       if(GridOffset < 0)
+                       if(GridOffset < 0) {
                                GridOffset += PlotGridX;
-                       if (PlotGridX)
-                               GridOffset %= PlotGridX;
+                       }
+                       if (gridchanged)
+                               if (GraphStart > startMax) {
+                                       GridOffset += (GraphStart - startMax);
+                                       GridOffset %= PlotGridX;
+                               }
                        break;
 
                case Qt::Key_Left:
                        if(GraphPixelsPerPoint < 20) {
-                               if (GridLocked && GraphStart > 0)
-                                       GridOffset += (int)(20 / GraphPixelsPerPoint);
-                               GraphStart -= (int)(20 / GraphPixelsPerPoint);
+                               if (PlotGridX && GridLocked && GraphStart > 0){
+                                       GridOffset += offset;
+                                       GridOffset %= PlotGridX;
+                                       gridchanged= 1;
+                               }
+                               GraphStart -= offset;
                        } else {
-                               if (GridLocked && GraphStart > 0)
+                               if (PlotGridX && GridLocked && GraphStart > 0){
                                        GridOffset++;
+                                       GridOffset %= PlotGridX;
+                                       gridchanged= 1;
+                               }
                                GraphStart--;
                        }
-                       if (PlotGridX)
-                               GridOffset %= PlotGridX;
+                       if (gridchanged){
+                               if (GraphStart < 0)
+                                       GridOffset += GraphStart;
+                               if(GridOffset < 0)
+                                       GridOffset += PlotGridX;
+                       GridOffset %= PlotGridX;
+                       }
                        break;
 
                case Qt::Key_G:
@@ -366,15 +404,17 @@ 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(" L             Toggle lock grid relative to samples");
-                       puts(" Q             Hide window");
-                       puts(" RIGHT         Move right");
-                       puts(" UP            Zoom out");
+                       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("");
                        puts("Use client window 'data help' for more plot commands\n");
                        break;
Impressum, Datenschutz