Exemple #1
0
    def __init__(self, parent=None):
        Qt.QWidget.__init__(self, parent)
        self.loadUi()

        self._controllers = []

        # construct the layout for controllers container
        self.ctrlLayout = Qt.QHBoxLayout(self.controllersContainer)
        self.ctrlLayout.setContentsMargins(5, 0, 5, 0)
        self.ctrlLayout.setSpacing(1)

        # implement scroll bars for the controllers container
        self.scrollArea = Qt.QScrollArea(self)
        self.scrollArea.setWidget(self.controllersContainer)
        self.scrollArea.setVerticalScrollBarPolicy(Qt.Qt.ScrollBarAlwaysOff)
        self.scrollArea.setWidgetResizable(True)
        self.cpointsGroupBox.layout().insertWidget(0, self.scrollArea)

        # initialize data
        cpoints = 2
        self.x = numpy.arange(256, dtype='double')
        self.y = numpy.zeros(256, dtype='double')
        self.xp = numpy.linspace(self.x[0], self.x[-1], cpoints)
        self.corrp = numpy.zeros(cpoints)
        self.yp = numpy.interp(self.xp, self.x, self.y)
        self.corr = numpy.zeros(self.x.size)

        # markers
        self.markerPos = self.xp[0]
        self.marker1 = Qwt5.QwtPlotMarker()
        self.marker1.setSymbol(
            Qwt5.QwtSymbol(Qwt5.QwtSymbol.Rect, Qt.QBrush(Qt.Qt.NoBrush),
                           Qt.QPen(Qt.Qt.green), Qt.QSize(8, 8)))
        self.marker1.attach(self.plot1)
        self.marker2 = Qwt5.QwtPlotMarker()
        self.marker2.setSymbol(
            Qwt5.QwtSymbol(Qwt5.QwtSymbol.Rect, Qt.QBrush(Qt.Qt.NoBrush),
                           Qt.QPen(Qt.Qt.green), Qt.QSize(8, 8)))
        self.marker2.attach(self.plot2)

        # cpointsPickers
        self._cpointMovingIndex = None
        self._cpointsPicker1 = Qwt5.QwtPicker(self.plot1.canvas())
        self._cpointsPicker1.setSelectionFlags(Qwt5.QwtPicker.PointSelection)
        self._cpointsPicker2 = Qwt5.QwtPicker(self.plot2.canvas())
        self._cpointsPicker2.setSelectionFlags(Qwt5.QwtPicker.PointSelection)
        self._cpointsPicker1.widgetMousePressEvent = self.plot1MousePressEvent
        self._cpointsPicker1.widgetMouseReleaseEvent = self.plot1MouseReleaseEvent
        self._cpointsPicker2.widgetMousePressEvent = self.plot2MousePressEvent
        self._cpointsPicker2.widgetMouseReleaseEvent = self.plot2MouseReleaseEvent
        self._cpointsPicker1.widgetMouseDoubleClickEvent = self.plot1MouseDoubleClickEvent
        self._cpointsPicker2.widgetMouseDoubleClickEvent = self.plot2MouseDoubleClickEvent
        self._populatePlots()
        self.resetCorrection()
        self._selectedController = self._controllers[0]

        self._addCPointsDialog = AddCPointsDialog(self)

        # Launch low-priority initializations (to speed up load time)
        # Qt.QTimer.singleShot(0, <method>)

        # connections
        self.addCPointsBT.clicked.connect(self._addCPointsDialog.show)
        self._addCPointsDialog.editBT.clicked.connect(
            self.showEditCPointsDialog)
        self._addCPointsDialog.cleanBT.clicked.connect(self.resetCorrection)
        self._addCPointsDialog.addSingleCPointBT.clicked.connect(
            self.onAddSingleCPointBT)
        self._addCPointsDialog.addRegEspCPointsBT.clicked.connect(
            self.onAddRegEspCPointsBT)
Exemple #2
0
    def __init__(self, parent=None):
        super(CurveStatsDialog, self).__init__(parent)
        self.loadUi()

        plot = parent
        xIsTime = plot.getXIsTime()
        self.ui.minDTE.setVisible(xIsTime)
        self.ui.maxDTE.setVisible(xIsTime)
        self.ui.minSB.setVisible(not xIsTime)
        self.ui.maxSB.setVisible(not xIsTime)

        self.ui.minSB.setMinimum(float('-inf'))
        self.ui.minSB.setMaximum(float('inf'))
        self.ui.maxSB.setMinimum(float('-inf'))
        self.ui.maxSB.setMaximum(float('inf'))

        icon = getIcon(':/actions/system-search.svg')
        self.ui.selectMinPB.setIcon(icon)
        self.ui.selectMaxPB.setIcon(icon)

        self.refreshCurves()

        cbs = (self.ui.npointsStatCB, self.ui.minStatCB, self.ui.maxStatCB,
               self.ui.meanStatCB, self.ui.stdStatCB, self.ui.rmsStatCB)
        self._checkboxToColMap = dict(zip(cbs, xrange(len(self.statColumns))))

        self.minPicker = Qwt5.QwtPlotPicker(Qwt5.QwtPlot.xBottom,
                                            Qwt5.QwtPlot.yLeft,
                                            Qwt5.QwtPicker.PointSelection,
                                            Qwt5.QwtPicker.VLineRubberBand,
                                            Qwt5.QwtPicker.AlwaysOn, plot.canvas())

        self.maxPicker = Qwt5.QwtPlotPicker(Qwt5.QwtPlot.xBottom,
                                            Qwt5.QwtPlot.yLeft,
                                            Qwt5.QwtPicker.PointSelection,
                                            Qwt5.QwtPicker.VLineRubberBand,
                                            Qwt5.QwtPicker.AlwaysOn, plot.canvas())

        self.minPicker.setEnabled(False)
        self.maxPicker.setEnabled(False)

        # initialize min and max display
        xmin = plot.axisScaleDiv(Qwt5.QwtPlot.xBottom).lowerBound()
        xmax = plot.axisScaleDiv(Qwt5.QwtPlot.xBottom).upperBound()

        self.minMarker = Qwt5.QwtPlotMarker()
        self.minMarker.setLineStyle(Qwt5.QwtPlotMarker.VLine)
        self.minMarker.setLinePen(Qt.QPen(Qt.Qt.green, 3))
        self.minMarker.setXValue(xmin)
        self.minMarker.attach(plot)
        self.minMarker.hide()

        self.maxMarker = Qwt5.QwtPlotMarker()
        self.maxMarker.setLineStyle(Qwt5.QwtPlotMarker.VLine)
        self.maxMarker.setLinePen(Qt.QPen(Qt.Qt.red, 3))
        self.maxMarker.setXValue(xmax)
        self.maxMarker.attach(plot)
        self.maxMarker.hide()

        if xIsTime:
            self.ui.minDTE.setDateTime(self._timestamptToQDateTime(xmin))
            self.ui.maxDTE.setDateTime(self._timestamptToQDateTime(xmax))
        else:
            self.ui.minSB.setValue(xmin)
            self.ui.maxSB.setValue(xmax)

        refreshAction = Qt.QAction(getThemeIcon(
            'view-refresh'), "Refresh available curves", self.ui.statsTW)
        refreshAction.setShortcut(Qt.Qt.Key_F5)
        self.connect(refreshAction, Qt.SIGNAL(
            "triggered()"), self.refreshCurves)
        self.ui.statsTW.addAction(refreshAction)

        # connections
        for cb in cbs:
            self.connect(cb, Qt.SIGNAL('toggled(bool)'), self.onStatToggled)
        self.connect(self.ui.calculatePB, Qt.SIGNAL(
            'clicked()'), self.onCalculate)
        self.connect(self.ui.selectMinPB, Qt.SIGNAL(
            'clicked()'), self.onSelectMin)
        self.connect(self.ui.selectMaxPB, Qt.SIGNAL(
            'clicked()'), self.onSelectMax)
        self.connect(self.minPicker, Qt.SIGNAL(
            'selected(QwtDoublePoint)'), self.minSelected)
        self.connect(self.maxPicker, Qt.SIGNAL(
            'selected(QwtDoublePoint)'), self.maxSelected)
        self.connect(self.ui.minSB, Qt.SIGNAL(
            'valueChanged(double)'), self.onMinChanged)
        self.connect(self.ui.minDTE, Qt.SIGNAL(
            'dateTimeChanged(QDateTime)'), self.onMinChanged)
        self.connect(self.ui.maxSB, Qt.SIGNAL(
            'valueChanged(double)'), self.onMaxChanged)
        self.connect(self.ui.maxDTE, Qt.SIGNAL(
            'dateTimeChanged(QDateTime)'), self.onMaxChanged)
        self.connect(self.ui.minCB, Qt.SIGNAL(
            'toggled(bool)'), self.onMinChanged)
        self.connect(self.ui.maxCB, Qt.SIGNAL(
            'toggled(bool)'), self.onMaxChanged)