00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <QFile>
00026 #include <QMessageBox>
00027 #include <QTextStream>
00028 #include <QScrollBar>
00029 #include <QPainter>
00030 #include <QMouseEvent>
00031 #include <QDateTime>
00032 #include <QtDebug>
00033 #include <QLabel>
00034
00035 #include <iostream>
00036
00037 #include <qwt_scale_map.h>
00038 #include <qwt_plot_curve.h>
00039 #include <qwt_symbol.h>
00040
00041 #include "plotting.h"
00042 #include "detailplot.h"
00043 #include "simpleplot.h"
00044 #include "datahandler.h"
00045
00046 Plotting::Plotting(QWidget *parent)
00047 : QWidget(parent)
00048 {
00049 simplePlot = NULL;
00050 detailPlot = NULL;
00051
00052 resolutionLabel = new QLabel(tr("10 mm/mV\n\n25 mm/s"));
00053
00054 setLayout(new QVBoxLayout);
00055 }
00056
00057 Plotting::~Plotting()
00058 {
00059 disconnect(simplePlot, SIGNAL(valueClicked(int,int)), this, SLOT(setDetailSample(int,int)));
00060 delete simplePlot;
00061 delete detailPlot;
00062 }
00063
00064 void Plotting::plotSingelChannel(DataHandler &dh)
00065 {
00066 dataHandler = &dh;
00067
00068 simplePlot = new SimplePlot(dh.getSamplesPrLine(),
00069 dh.getLineAxisBounds(),
00070 dh.getStartStamp(),
00071 this);
00072 simplePlot->setSampleBounds(dh.getDetailLineSampleBounds());
00073 connect(simplePlot, SIGNAL(valueClicked(int,int)),
00074 this, SLOT(setDetailSample(int,int)));
00075 detailPlot = new DetailPlot(dh.getSamplesPrDetailLine(),
00076 dh.getLineAxisBounds(),
00077 this);
00078
00079 layout()->addWidget(simplePlot);
00080 QHBoxLayout *temp = new QHBoxLayout;
00081 temp->addWidget(detailPlot);
00082 temp->addWidget(resolutionLabel);
00083 QVBoxLayout *vboxlayout = (QVBoxLayout *)layout();
00084 vboxlayout->addLayout(temp);
00085
00086 simplePlot->initCurves(DataHandler::numberofLines);
00087 simplePlot->setData(dh.getXLine(), dh.getYLines());
00088
00089 detailPlot->setData(dh.getXLine(), dh.getYLine(0), dh.getStartStampText());
00090 updateGeometry();
00091 }
00092
00093 void Plotting::setDetailSample(int line, int sample)
00094 {
00095 double *py = dataHandler->getLineSample(line, sample);
00096
00097 detailPlot->setData(dataHandler->getXLine(),
00098 py,
00099 dataHandler->getStartStampText(line, sample));
00100 }
00101
00102 void Plotting::updateScreen(DataHandler &dh)
00103 {
00104 simplePlot->setData(dh.getXLine(), dh.getYLines());
00105 detailPlot->setData(dh.getXLine(), dh.getYLine(0), dh.getStartStampText());
00106 }