Esempio n. 1
0
    def __init__(self, parent=None, fps=100, title="", *args):
        # super(FastPlotWidget, self).__init__(parent)
        super(PlotWidget, self).__init__(*args)
        self.setupUi(self)

        self.setSizePolicy(QtGui.QSizePolicy(
                                         QtGui.QSizePolicy.MinimumExpanding,
                                         QtGui.QSizePolicy.MinimumExpanding))

        self.setMinimumSize(self.minimumSizeHint())
        self.parent = parent

        self.plotCaption.setText(title)
        self.plotCaption.setFont(QtGui.QFont('SansSerif', 16))
        self.fpw = FastPlotWidget()

        self.plotLayout.addWidget(self.fpw)

        self.enableUpdate.toggled.connect(self.fpw.setEnabled)

        self.saveToFile.clicked.connect(self.saveToFileSignal)
        self.hcount = 0
        self.vcount = 0
        self.zoom = 1.0

        self.zoomInBtn.clicked.connect(self.zoomIn)
        self.zoomOutBtn.clicked.connect(self.zoomOut)
    def __init__(self, parent=None, fps=100, title="", *args):
        #super(FastPlotWidget, self).__init__(parent)
        super(PlotWidget, self).__init__(*args)
        self.setupUi(self)

        self.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,QtGui.QSizePolicy.MinimumExpanding))

        self.setMinimumSize(self.minimumSizeHint())
        self.parent = parent

        self.plotCaption.setText(title)
        self.plotCaption.setFont(QtGui.QFont('SansSerif', 16))
        self.fpw = FastPlotWidget()

        self.plotLayout.addWidget(self.fpw)

        self.enableUpdate.toggled.connect(self.fpw.setEnabled)

        self.saveToFile.clicked.connect(self.saveToFileSignal)
        self.hcount = 0
        self.vcount = 0
        self.zoom = 1.0

        self.zoomInBtn.clicked.connect(self.zoomIn)
        self.zoomOutBtn.clicked.connect(self.zoomOut)
Esempio n. 3
0
class PlotWidget(QtGui.QWidget, plot_widget_class):

    LEGEND_ON_BOTTOM = 1
    LEGEND_ON_RIGHT = 2

    # Add support for
    # * Multipe axis
    # * Klicking to pause
    # * Klicking to show data value (or mouse of if ok CPU wise..)
    # * Scrolling when paused
    # * Zooming
    # * Change axis
    # * Auto size of min/max X-axis
    # * Redraw of resize (stop on minimum size)
    # * Fill parent as much as possible
    # * Add legend (either hard, option or mouse over)

    saveToFileSignal = pyqtSignal()
    stopSavingSignal = pyqtSignal()
    # isSavingToFileSignal = pyqtSignal()

    def __init__(self, parent=None, fps=100, title="", *args):
        # super(FastPlotWidget, self).__init__(parent)
        super(PlotWidget, self).__init__(*args)
        self.setupUi(self)

        self.setSizePolicy(QtGui.QSizePolicy(
                                         QtGui.QSizePolicy.MinimumExpanding,
                                         QtGui.QSizePolicy.MinimumExpanding))

        self.setMinimumSize(self.minimumSizeHint())
        self.parent = parent

        self.plotCaption.setText(title)
        self.plotCaption.setFont(QtGui.QFont('SansSerif', 16))
        self.fpw = FastPlotWidget()

        self.plotLayout.addWidget(self.fpw)

        self.enableUpdate.toggled.connect(self.fpw.setEnabled)

        self.saveToFile.clicked.connect(self.saveToFileSignal)
        self.hcount = 0
        self.vcount = 0
        self.zoom = 1.0

        self.zoomInBtn.clicked.connect(self.zoomIn)
        self.zoomOutBtn.clicked.connect(self.zoomOut)

    def zoomIn(self):
        self.zoom = self.zoom + 0.2
        self.fpw.setZoom(self.zoom)

    def zoomOut(self):
        self.zoom = self.zoom - 0.2
        if self.zoom < 0.1:
            self.zoom = 0.1
        self.fpw.setZoom(self.zoom)

    def stopSaving(self):
        self.saveToFile.setText("Start saving to file")
        self.saveToFile.clicked.disconnect(self.stopSaving)
        self.saveToFile.clicked.connect(self.saveToFileSignal)
        self.stopSavingSignal.emit()

    def isSavingToFile(self):
        self.saveToFile.setText("Stop saving")
        self.saveToFile.clicked.disconnect(self.saveToFileSignal)
        self.saveToFile.clicked.connect(self.stopSaving)

    def setTitle(self, newTitle):
        self.plotCaption.setText(newTitle)

    def addDataset(self, dataset):
        self.fpw.addDataset(dataset)

        newLayout = QHBoxLayout()
        dsEnabled = QCheckBox(dataset.title)
        dsEnabled.setChecked(True)
        dsEnabled.toggled.connect(dataset.setEnabled)
        newLayout.addWidget(dsEnabled)
        self.legend.addLayout(newLayout, self.hcount, self.vcount)
        self.hcount = self.hcount + 1
        logger.debug("Creating new layout for [%s] at %d,%d",
                     dataset.title, self.hcount, self.vcount)
        if (self.hcount == 2):
            self.vcount = self.vcount + 1
            self.hcount = 0

    def removeDataset(self, dataset):
        logger.warning("removeDataset() not implemented")

    def removeAllDatasets(self):
        self.fpw.datasets = []
        # TODO: Fix this!
        for w in range(self.legend.count()):
            l = self.legend.itemAt(w)
            if (l != None):
                l.itemAt(0).widget().setVisible(False)
            # self.legend.removeItem(self.legend.itemAt(w))
            # self.legend.itemAt(w).hide()
            # print "Taking %d" % w
        self.hcount = 0
        self.vcount = 0
class PlotWidget(QtGui.QWidget, plot_widget_class):

    LEGEND_ON_BOTTOM = 1
    LEGEND_ON_RIGHT = 2

    # Add support for
    # * Multipe axis
    # * Klicking to pause
    # * Klicking to show data value (or mouse of if ok CPU wise..)
    # * Scrolling when paused
    # * Zooming
    # * Change axis
    # * Auto size of min/max X-axis
    # * Redraw of resize (stop on minimum size)
    # * Fill parent as much as possible
    # * Add legend (either hard, option or mouse over)

    saveToFileSignal = pyqtSignal()
    stopSavingSignal = pyqtSignal()
    #isSavingToFileSignal = pyqtSignal()

    def __init__(self, parent=None, fps=100, title="", *args):
        #super(FastPlotWidget, self).__init__(parent)
        super(PlotWidget, self).__init__(*args)
        self.setupUi(self)

        self.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,QtGui.QSizePolicy.MinimumExpanding))

        self.setMinimumSize(self.minimumSizeHint())
        self.parent = parent

        self.plotCaption.setText(title)
        self.plotCaption.setFont(QtGui.QFont('SansSerif', 16))
        self.fpw = FastPlotWidget()

        self.plotLayout.addWidget(self.fpw)

        self.enableUpdate.toggled.connect(self.fpw.setEnabled)

        self.saveToFile.clicked.connect(self.saveToFileSignal)
        self.hcount = 0
        self.vcount = 0
        self.zoom = 1.0

        self.zoomInBtn.clicked.connect(self.zoomIn)
        self.zoomOutBtn.clicked.connect(self.zoomOut)

    def zoomIn(self):
        self.zoom = self.zoom + 0.2
        self.fpw.setZoom(self.zoom)

    def zoomOut(self):
        self.zoom = self.zoom - 0.2
        if self.zoom < 0.1:
            self.zoom = 0.1
        self.fpw.setZoom(self.zoom)

    def stopSaving(self):
        self.saveToFile.setText("Start saving to file")
        self.saveToFile.clicked.disconnect(self.stopSaving)       
        self.saveToFile.clicked.connect(self.saveToFileSignal)
        self.stopSavingSignal.emit()

    def isSavingToFile(self):
        self.saveToFile.setText("Stop saving")
        self.saveToFile.clicked.disconnect(self.saveToFileSignal)
        self.saveToFile.clicked.connect(self.stopSaving)

    def setTitle(self, newTitle):
        self.plotCaption.setText(newTitle)
 
    def addDataset(self, dataset):
        self.fpw.addDataset(dataset)

        newLayout = QHBoxLayout()
        dsEnabled = QCheckBox(dataset.title)
        dsEnabled.setChecked(True)
        dsEnabled.toggled.connect(dataset.setEnabled)
        newLayout.addWidget(dsEnabled)
        self.legend.addLayout(newLayout, self.hcount, self.vcount)
        self.hcount = self.hcount + 1
        logger.debug("Creating new layout for [%s] at %d,%d", dataset.title, self.hcount, self.vcount)
        if (self.hcount == 2):
            self.vcount = self.vcount + 1
            self.hcount = 0
        
    def removeDataset(self, dataset):
        logger.warning("removeDataset() not implemented")

    def removeAllDatasets(self):
        self.fpw.datasets = []
        # TODO: Fix this!
        for w in range(self.legend.count()):
            l = self.legend.itemAt(w)
            if (l != None):            
                l.itemAt(0).widget().setVisible(False)
            #self.legend.removeItem(self.legend.itemAt(w))
            #self.legend.itemAt(w).hide()
            #print "Taking %d" % w
        self.hcount = 0
        self.vcount = 0