qpidctrl  0.7.1
qpidplot.cpp
Go to the documentation of this file.
1 #include "qpidplot.h"
2 #include "qpidcontroller.h"
3 #include "qwt_scale_draw.h"
4 #include "qpidplotzoomer.h"
5 #include "qwt_picker_machine.h"
6 
7 class TimeScaleDraw: public QwtScaleDraw
8 {
9 public:
11  {
12  }
13  virtual QwtText label(double v) const
14  {
15  QDateTime dt = QDateTime().fromTime_t((uint) v);
16  return dt.toLocalTime().toString("hh:mm:ss");
17  }
18 private:
19  QTime baseTime;
20 };
21 
22 QPidPlot::QPidPlot(QWidget *parent) :
23  QwtPlot(parent),
24 // m_Legend(NULL),
25  m_Zoomer(NULL),
26  m_Panner(NULL),
27  m_Magnifier(NULL)/*,
28  m_Measurer(NULL)*/,
29  m_Controller()
30 {
31  m_Zoomer = new QPidPlotZoomer(canvas());
32 // m_Zoomer -> setSelectionFlags(QwtPicker::DragSelection | QwtPicker::CornerToCorner);
33  m_Zoomer -> setStateMachine(new QwtPickerDragRectMachine);
34  m_Zoomer -> setTrackerMode(QwtPicker::AlwaysOn);
35  m_Zoomer -> setRubberBand(QwtPicker::RectRubberBand);
36 
37  m_Zoomer -> setMousePattern(QwtEventPattern::MouseSelect2,
38  Qt::LeftButton, Qt::ControlModifier | Qt::ShiftModifier);
39  m_Zoomer -> setMousePattern(QwtEventPattern::MouseSelect3,
40  Qt::LeftButton, Qt::ControlModifier);
41 
42  m_Zoomer -> setEnabled(true);
43 
44  m_Panner = new QwtPlotPanner(canvas());
45  m_Panner -> setEnabled(true);
46  m_Panner -> setMouseButton(Qt::MidButton);
47  m_Panner -> setAxisEnabled(QwtPlot::yRight, false);
48 
49  m_Magnifier = new QwtPlotMagnifier(canvas());
50  m_Magnifier -> setEnabled(true);
51  m_Magnifier -> setMouseButton(Qt::NoButton);
52  m_Magnifier -> setAxisEnabled(QwtPlot::yRight, false);
53 
54  setAxisScaleDraw(QwtPlot::xBottom,
55  new TimeScaleDraw());
56 }
57 
59 {
60  m_Controller = ctl;
61 }
62 
64 {
65  setAxisAutoScale(QwtPlot::yLeft);
66 
67 // QPidControllerPtr ctl(m_Controller);
68 
69 // if (ctl) {
70 // setAxisScale(QwtPlot::xBottom, 0, ctl->get_HistoryLength());
71 // } else {
72  setAxisAutoScale(QwtPlot::xBottom);
73 // }
74 
75  m_Zoomer -> setZoomBase();
76 }
77 
78 void QPidPlot::contextMenuEvent(QContextMenuEvent */*event*/)
79 {
80  autoScale();
81 }
void init(QPidControllerWPtr ctl)
Definition: qpidplot.cpp:58
virtual QwtText label(double v) const
Definition: qpidplot.cpp:13
QWeakPointer< QPidController > QPidControllerWPtr
QwtPlotMagnifier * m_Magnifier
Definition: qpidplot.h:27
void contextMenuEvent(QContextMenuEvent *event)
Definition: qpidplot.cpp:78
QPidControllerWPtr m_Controller
Definition: qpidplot.h:28
QTime baseTime
Definition: qpidplot.cpp:19
void autoScale()
Definition: qpidplot.cpp:63
QwtPlotZoomer * m_Zoomer
Definition: qpidplot.h:25
QwtPlotPanner * m_Panner
Definition: qpidplot.h:26
QPidPlot(QWidget *parent=0)
Definition: qpidplot.cpp:22