From f3e238d35d84a021a2eebca04ecdefe8c9a38fb2 Mon Sep 17 00:00:00 2001 From: Teuniz Date: Wed, 10 Jun 2015 15:29:45 +0200 Subject: [PATCH] Work in progress. --- global.h | 11 +++++- mainwindow.h | 4 ++- mainwindow_constr.cpp | 2 ++ signalcurve.cpp | 78 +++++++++++++++++++++++++++++++++++++++---- signalcurve.h | 4 ++- timer_handlers.cpp | 6 ++++ 6 files changed, 96 insertions(+), 9 deletions(-) diff --git a/global.h b/global.h index f891972..c0a4733 100644 --- a/global.h +++ b/global.h @@ -31,7 +31,7 @@ #define PROGRAM_NAME "DSRemote" -#define PROGRAM_VERSION "0.1" +#define PROGRAM_VERSION "0.11" #define MAX_PATHLEN 4096 @@ -53,6 +53,15 @@ #define NAV_DIAL_FUNC_NONE 0 #define NAV_DIAL_FUNC_HOLDOFF 1 +#define LABEL_TIMER_IVAL 1000 + +#define LABEL_ACTIVE_NONE 0 +#define LABEL_ACTIVE_CHAN1 1 +#define LABEL_ACTIVE_CHAN2 2 +#define LABEL_ACTIVE_CHAN3 3 +#define LABEL_ACTIVE_CHAN4 4 +#define LABEL_ACTIVE_TRIG 5 + struct waveform_preamble diff --git a/mainwindow.h b/mainwindow.h index b7ec791..68f33ce 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -110,7 +110,8 @@ public: int adjDialFunc, navDialFunc; - QTimer *scrn_timer; + QTimer *scrn_timer, + *label_timer; private: @@ -205,6 +206,7 @@ private slots: void scrn_timer_handler(); void stat_timer_handler(); void adjdial_timer_handler(); + void label_timer_handler(); void test_timer_handler(); void show_about_dialog(); diff --git a/mainwindow_constr.cpp b/mainwindow_constr.cpp index 398d48e..db28b0a 100644 --- a/mainwindow_constr.cpp +++ b/mainwindow_constr.cpp @@ -348,12 +348,14 @@ UI_Mainwindow::UI_Mainwindow() adjdial_timer = new QTimer(this); navDial_timer = new QTimer(this); navDial_timer->setSingleShot(true); + label_timer = new QTimer(this); test_timer = new QTimer(this); connect(scrn_timer, SIGNAL(timeout()), this, SLOT(scrn_timer_handler())); connect(adjdial_timer, SIGNAL(timeout()), this, SLOT(adjdial_timer_handler())); connect(navDial, SIGNAL(sliderReleased()), this, SLOT(navDialReleased())); connect(navDial_timer, SIGNAL(timeout()), this, SLOT(navDial_timer_handler())); + connect(label_timer, SIGNAL(timeout()), this, SLOT(label_timer_handler())); connect(test_timer, SIGNAL(timeout()), this, SLOT(test_timer_handler())); ///// TEST ///////////////////////////////////// diff --git a/signalcurve.cpp b/signalcurve.cpp index ec37462..cec5e72 100644 --- a/signalcurve.cpp +++ b/signalcurve.cpp @@ -65,6 +65,8 @@ SignalCurve::SignalCurve(QWidget *w_parent) : QWidget(w_parent) mouse_old_x = 0; mouse_old_y = 0; + label_active = LABEL_ACTIVE_NONE; + for(i=0; iadjDialFunc == ADJ_DIAL_FUNC_HOLDOFF) || (mainwindow->navDialFunc == NAV_DIAL_FUNC_HOLDOFF)) { convert_to_metric_suffix(str, devparms->triggerholdoff, 2); strcat(str, "S"); - paintLabel(painter, curve_w - 110, 5, 100, 20, str); + paintLabel(painter, curve_w - 110, 5, 100, 20, str, Qt::white); } else if(mainwindow->adjDialFunc == ADJ_DIAL_FUNC_ACQ_AVG) { sprintf(str, "%i", devparms->acquireaverages); - paintLabel(painter, curve_w - 110, 5, 100, 20, str); + paintLabel(painter, curve_w - 110, 5, 100, 20, str, Qt::white); } + if(label_active == LABEL_ACTIVE_TRIG) + { + convert_to_metric_suffix(str, devparms->triggeredgelevel[devparms->triggeredgesource], 2); + + strcat(str, "V"); + + paintLabel(painter, curve_w - 120, curve_h - 50, 100, 20, str, QColor(255, 128, 0)); + } + else if(label_active == LABEL_ACTIVE_CHAN1) + { + convert_to_metric_suffix(str, devparms->chanoffset[0], 2); + + strcat(str, "V"); + + paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[0]); + } + else if(label_active == LABEL_ACTIVE_CHAN2) + { + convert_to_metric_suffix(str, devparms->chanoffset[1], 2); + + strcat(str, "V"); + + paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[1]); + } + else if(label_active == LABEL_ACTIVE_CHAN3) + { + convert_to_metric_suffix(str, devparms->chanoffset[2], 2); + + strcat(str, "V"); + + paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[2]); + } + else if(label_active == LABEL_ACTIVE_CHAN4) + { + convert_to_metric_suffix(str, devparms->chanoffset[3], 2); + + strcat(str, "V"); + + paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[3]); + } + // clk_end = clock(); // // cpu_time_used += ((double) (clk_end - clk_start)) / CLOCKS_PER_SEC; @@ -1469,6 +1512,8 @@ void SignalCurve::mouseMoveEvent(QMouseEvent *move_event) { int chn; + double dtmp; + if(!use_move_events) { return; @@ -1509,6 +1554,17 @@ void SignalCurve::mouseMoveEvent(QMouseEvent *move_event) { trig_level_arrow_pos = h; } + + devparms->triggeredgelevel[devparms->triggeredgesource] = (((h / 2) - trig_level_arrow_pos) * ((devparms->chanscale[devparms->triggeredgesource] * 8) / h)) + - devparms->chanoffset[devparms->triggeredgesource]; + + dtmp = devparms->triggeredgelevel[devparms->triggeredgesource] / (devparms->chanscale[devparms->triggeredgesource] / 50); + + devparms->triggeredgelevel[devparms->triggeredgesource] = (devparms->chanscale[devparms->triggeredgesource] / 50) * dtmp; + + label_active = LABEL_ACTIVE_TRIG; + + mainwindow->label_timer->start(LABEL_TIMER_IVAL); } else { @@ -1533,6 +1589,16 @@ void SignalCurve::mouseMoveEvent(QMouseEvent *move_event) chan_arrow_pos[chn] = h; } + devparms->chanoffset[chn] = ((h / 2) - chan_arrow_pos[chn]) * ((devparms->chanscale[chn] * 8) / h); + + dtmp = devparms->chanoffset[chn] / (devparms->chanscale[chn] / 50); + + devparms->chanoffset[chn] = (devparms->chanscale[chn] / 50) * dtmp; + + label_active = chn + 1; + + mainwindow->label_timer->start(LABEL_TIMER_IVAL); + break; } } @@ -1576,7 +1642,7 @@ void SignalCurve::trig_stat_timer_handler() } -void SignalCurve::paintLabel(QPainter *painter, int xpos, int ypos, int xw, int yh, const char *str) +void SignalCurve::paintLabel(QPainter *painter, int xpos, int ypos, int xw, int yh, const char *str, QColor color) { QPainterPath path; @@ -1584,7 +1650,7 @@ void SignalCurve::paintLabel(QPainter *painter, int xpos, int ypos, int xw, int painter->fillPath(path, Qt::black); - painter->setPen(Qt::white); + painter->setPen(color); painter->drawRoundedRect(xpos, ypos, xw, yh, 3, 3); diff --git a/signalcurve.h b/signalcurve.h index 91dc81e..8c32158 100644 --- a/signalcurve.h +++ b/signalcurve.h @@ -68,6 +68,8 @@ public: QSize sizeHint() const {return minimumSizeHint(); } QSize minimumSizeHint() const {return QSize(30,10); } + int label_active; + void setSignalColor1(QColor); void setSignalColor2(QColor); void setSignalColor3(QColor); @@ -141,7 +143,7 @@ private: void drawTrigCenterArrow(QPainter *, int, int); void drawChanLabel(QPainter *, int, int, int); void drawTopLabels(QPainter *); - void paintLabel(QPainter *, int, int, int, int, const char *); + void paintLabel(QPainter *, int, int, int, int, const char *, QColor); void paintCounterLabel(QPainter *, int, int); struct device_settings *devparms; diff --git a/timer_handlers.cpp b/timer_handlers.cpp index f0adcaa..4a36f2b 100644 --- a/timer_handlers.cpp +++ b/timer_handlers.cpp @@ -36,6 +36,12 @@ void UI_Mainwindow::test_timer_handler() } +void UI_Mainwindow::label_timer_handler() +{ + waveForm->label_active = LABEL_ACTIVE_NONE; +} + + void UI_Mainwindow::navDial_timer_handler() { if(navDial->isSliderDown() == true)