proxmark3/client/proxguiqt.h

138 lines
3.3 KiB
C
Raw Normal View History

//-----------------------------------------------------------------------------
// Copyright (C) 2009 Michael Gernoth <michael at gernoth.net>
//
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
// at your option, any later version. See the LICENSE.txt file for the text of
// the license.
//-----------------------------------------------------------------------------
// GUI (QT)
//-----------------------------------------------------------------------------
2017-07-28 03:32:15 +08:00
#ifndef PROXGUI_QT
#define PROXGUI_QT
#include <stdint.h>
#include <string.h>
#include <QApplication>
#include <QPushButton>
#include <QObject>
#include <QWidget>
#include <QPainter>
2017-07-28 03:32:15 +08:00
#include <QtGui>
2017-07-28 03:32:15 +08:00
#include "ui/ui_overlays.h"
/**
* @brief The actual plot, black area were we paint the graph
*/
class Plot: public QWidget
{
private:
int GraphStart;
double GraphPixelsPerPoint;
int CursorAPos;
int CursorBPos;
void PlotGraph(int *buffer, int len, QRect r,QRect r2, QPainter* painter, int graphNum);
void PlotDemod(uint8_t *buffer, size_t len, QRect r,QRect r2, QPainter* painter, int graphNum, int plotOffset);
void plotGridLines(QPainter* painter,QRect r);
int xCoordOf(int i, QRect r );
int yCoordOf(int v, QRect r, int maxVal);
int valueOf_yCoord(int y, QRect r, int maxVal);
void setMaxAndStart(int *buffer, int len, QRect plotRect);
QColor getColor(int graphNum);
2017-08-12 00:15:01 +08:00
public:
Plot(QWidget *parent = 0);
protected:
void paintEvent(QPaintEvent *event);
void closeEvent(QCloseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); }
void keyPressEvent(QKeyEvent *event);
2017-07-28 03:32:15 +08:00
};
class ProxGuiQT;
/**
* The window with plot and controls
*/
class ProxWidget : public QWidget
{
Q_OBJECT; //needed for slot/signal classes
private:
ProxGuiQT *master;
Plot *plot;
Ui::Form *opsController;
QWidget* controlWidget;
public:
ProxWidget(QWidget *parent = 0, ProxGuiQT *master = NULL);
~ProxWidget(void);
//OpsShow(void);
protected:
// void paintEvent(QPaintEvent *event);
void closeEvent(QCloseEvent *event);
void showEvent(QShowEvent *event);
void hideEvent(QHideEvent *event);
// void mouseMoveEvent(QMouseEvent *event);
// void mousePressEvent(QMouseEvent *event) { mouseMoveEvent(event); }
// void keyPressEvent(QKeyEvent *event);
public slots:
void applyOperation();
void stickOperation();
void vchange_autocorr(int v);
void vchange_askedge(int v);
void vchange_dthr_up(int v);
void vchange_dthr_down(int v);
};
class ProxGuiQT : public QObject
{
Q_OBJECT;
private:
QApplication *plotapp;
ProxWidget *plotwidget;
int argc;
char **argv;
void (*main_func)(void);
2017-08-12 00:15:01 +08:00
public:
ProxGuiQT(int argc, char **argv);
~ProxGuiQT(void);
void ShowGraphWindow(void);
void RepaintGraphWindow(void);
void HideGraphWindow(void);
void MainLoop(void);
2017-07-28 03:32:15 +08:00
void Exit(void);
2017-08-12 00:15:01 +08:00
private slots:
void _ShowGraphWindow(void);
void _RepaintGraphWindow(void);
void _HideGraphWindow(void);
2017-07-28 03:32:15 +08:00
void _Exit(void);
2017-08-12 00:15:01 +08:00
signals:
void ShowGraphWindowSignal(void);
void RepaintGraphWindowSignal(void);
void HideGraphWindowSignal(void);
2017-07-28 03:32:15 +08:00
void ExitSignal(void);
};
class WorkerThread : public QThread {
Q_OBJECT;
2017-08-12 00:15:01 +08:00
public:
WorkerThread(char*, bool);
~WorkerThread();
void run();
private:
char *script_cmds_file = NULL;
bool usb_present;
};
2017-07-28 03:32:15 +08:00
#endif // PROXGUI_QT