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)
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