def _setup_ui(self): vbox = QtGui.QVBoxLayout(self) self.setLayout(vbox) grid = QtGui.QGridLayout() self.form = MAXForm(withButtons=False) grid.addWidget(self.form, 0, 0, 2, 1) # rescale taurus form methode self.form.scrollArea.sizeHint = self.scaleSize self.status_label = StatusArea() grid.addWidget(self.status_label, 0, 1, 1, 1) commandbox = QtGui.QVBoxLayout(self) self.start_button = TaurusCommandButton(command="StartCycle") self.start_button.setUseParentModel(True) self.stop_button = TaurusCommandButton(command="StopCycle") self.stop_button.setUseParentModel(True) commandbox.addWidget(self.start_button) commandbox.addWidget(self.stop_button) grid.addLayout(commandbox, 1, 1, 1, 1) vbox.addLayout(grid) self.trend = TaurusTrend() vbox.addWidget(self.trend, stretch=1) self.trend_trigger.connect(self.set_trend_paused) self.cyclingState = None
def __init__(self, parent=None, designMode=False): TaurusTrend.__init__(self, parent, designMode) self._plotables = CaselessDict() self._movingMotors = [] self._macroNames = [] self._doorName = None self.setMinimumSize(300, 200) self.setXIsTime(True) self.setAxisScale(Qwt5.QwtPlot.xBottom, 0, 60) self.setXDynScale(True)
def __init__(self, parent=None, designMode=False): TaurusTrend.__init__(self, parent, designMode) self.setUseParentModel(False) self._plotables = CaselessDict() self._movingMotors = [] self._macroNames = [] self._doorName = None self.setMinimumSize(300, 200) self.setXIsTime(True) self.setAxisScale(Qwt5.QwtPlot.xBottom, 0, 60) self.setXDynScale(True)
def open_new_trend(self): from taurus.qt.qtgui.plot import TaurusTrend tt = TaurusTrend() tt.show() self.extras.append(tt) tt.setUseArchiving(True) tt.showLegend(True) return tt
def event(self, event): # if event.type() == Qt.QEvent.ToolTip: print "!!!!!!!", event.type() if event.type() == Qt.QEvent.ToolTip: # info = self.getMonitorInfo() # self.setToolTip(info) event.accept() return TaurusTrend.event(self, event)
def __init__(self, parent=None, designMode=False): TaurusTrend.__init__(self, parent=parent, designMode=designMode) self.setXIsTime(True) # set a 5 minutes range by default self.setAxisScale(self.xBottom, 0, 5 * 60) self.setXDynScale(True) self.setCanvasBackground(Qt.Qt.black) self.showLegend(False) self.enableAxis(self.xBottom, False) self.enableAxis(self.xTop, False) self.enableAxis(self.yLeft, False) self.enableAxis(self.yRight, False) self.setAllowZoomers(False) self.toggleDataInspectorMode(enable=True) self.setMaximumSize(60, 60)
def setupUi(self, LiberaBrilliancePlusMini): LiberaBrilliancePlusMini.setObjectName(_fromUtf8("LiberaBrilliancePlusMini")) LiberaBrilliancePlusMini.resize(338, 670) self.gridLayout = QtGui.QGridLayout(LiberaBrilliancePlusMini) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.taurusTrend_2 = TaurusTrend(LiberaBrilliancePlusMini) self.taurusTrend_2.setObjectName(_fromUtf8("taurusTrend_2")) self.gridLayout.addWidget(self.taurusTrend_2, 3, 0, 1, 1) self.taurusTrend = TaurusTrend(LiberaBrilliancePlusMini) self.taurusTrend.setObjectName(_fromUtf8("taurusTrend")) self.gridLayout.addWidget(self.taurusTrend, 1, 0, 2, 1) #self.taurusCurveDialog = TaurusCurveDialog(LiberaBrilliancePlusMini) #self.taurusCurveDialog.setModifiableByUser(False) #self.taurusCurveDialog.setObjectName(_fromUtf8("taurusCurveDialog")) #self.gridLayout.addWidget(self.taurusCurveDialog, 0, 0, 1, 1) self.retranslateUi(LiberaBrilliancePlusMini) QtCore.QMetaObject.connectSlotsByName(LiberaBrilliancePlusMini)
def setupUi(self, LiberaSinglePassMini): LiberaSinglePassMini.setObjectName(_fromUtf8("LiberaSinglePassMini")) LiberaSinglePassMini.resize(338, 670) self.gridLayout = QtGui.QGridLayout(LiberaSinglePassMini) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.taurusTrend_2 = TaurusTrend(LiberaSinglePassMini) self.taurusTrend_2.setObjectName(_fromUtf8("taurusTrend_2")) self.gridLayout.addWidget(self.taurusTrend_2, 3, 0, 1, 1) self.taurusTrend = TaurusTrend(LiberaSinglePassMini) self.taurusTrend.setObjectName(_fromUtf8("taurusTrend")) self.gridLayout.addWidget(self.taurusTrend, 1, 0, 2, 1) self.taurusCurveDialog = TaurusCurveDialog(LiberaSinglePassMini) self.taurusCurveDialog.setModifiableByUser(False) self.taurusCurveDialog.setObjectName(_fromUtf8("taurusCurveDialog")) self.gridLayout.addWidget(self.taurusCurveDialog, 0, 0, 1, 1) self.retranslateUi(LiberaSinglePassMini) QtCore.QMetaObject.connectSlotsByName(LiberaSinglePassMini)
class Ui_LiberaSinglePassEMini(object): def setupUi(self, LiberaSinglePassEMini): LiberaSinglePassEMini.setObjectName(_fromUtf8("LiberaSinglePassEMini")) LiberaSinglePassEMini.resize(338, 670) self.gridLayout = QtGui.QGridLayout(LiberaSinglePassEMini) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.taurusTrend_2 = TaurusTrend(LiberaSinglePassEMini) self.taurusTrend_2.setObjectName(_fromUtf8("taurusTrend_2")) self.gridLayout.addWidget(self.taurusTrend_2, 3, 0, 1, 1) self.taurusTrend = TaurusTrend(LiberaSinglePassEMini) self.taurusTrend.setObjectName(_fromUtf8("taurusTrend")) self.gridLayout.addWidget(self.taurusTrend, 1, 0, 2, 1) #self.taurusCurveDialog = TaurusCurveDialog(LiberaSinglePassEMini) #self.taurusCurveDialog.setModifiableByUser(False) #self.taurusCurveDialog.setObjectName(_fromUtf8("taurusCurveDialog")) #self.gridLayout.addWidget(self.taurusCurveDialog, 0, 0, 1, 1) self.retranslateUi(LiberaSinglePassEMini) QtCore.QMetaObject.connectSlotsByName(LiberaSinglePassEMini) def retranslateUi(self, LiberaSinglePassEMini): LiberaSinglePassEMini.setWindowTitle(_translate("LiberaSinglePassEMini", "Form", None))
class Ui_LiberaBrilliancePlusMini(object): def setupUi(self, LiberaBrilliancePlusMini): LiberaBrilliancePlusMini.setObjectName( _fromUtf8("LiberaBrilliancePlusMini")) LiberaBrilliancePlusMini.resize(338, 670) self.gridLayout = QtGui.QGridLayout(LiberaBrilliancePlusMini) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.taurusTrend_2 = TaurusTrend(LiberaBrilliancePlusMini) self.taurusTrend_2.setObjectName(_fromUtf8("taurusTrend_2")) self.gridLayout.addWidget(self.taurusTrend_2, 3, 0, 1, 1) self.taurusTrend = TaurusTrend(LiberaBrilliancePlusMini) self.taurusTrend.setObjectName(_fromUtf8("taurusTrend")) self.gridLayout.addWidget(self.taurusTrend, 1, 0, 2, 1) #self.taurusCurveDialog = TaurusCurveDialog(LiberaBrilliancePlusMini) #self.taurusCurveDialog.setModifiableByUser(False) #self.taurusCurveDialog.setObjectName(_fromUtf8("taurusCurveDialog")) #self.gridLayout.addWidget(self.taurusCurveDialog, 0, 0, 1, 1) self.retranslateUi(LiberaBrilliancePlusMini) QtCore.QMetaObject.connectSlotsByName(LiberaBrilliancePlusMini) def retranslateUi(self, LiberaBrilliancePlusMini): LiberaBrilliancePlusMini.setWindowTitle( _translate("LiberaBrilliancePlusMini", "Form", None))
def _updateTemporaryTrends1D(self, trends1d): '''adds necessary trend1D panels and removes no longer needed ones :param trends1d: (dict) A dict whose keys are tuples of axes and whose values are list of model names to plot :returns: (tuple) two lists new,rm:new contains the names of the new panels and rm contains the names of the removed panels ''' from taurus.qt.qtgui.plot import TaurusTrend newpanels = [] for axes, plotables in trends1d.items(): if not axes: continue if axes not in self._trends1d: w = TaurusTrend() w.setXIsTime(False) w.setScanDoor(self.getModelObj().fullname) # TODO: use a standard key for <idx> and <mov> w.setScansXDataKey(axes[0]) pname = u'Trend1D - %s' % ":".join(axes) panel = self.createPanel(w, pname, registerconfig=False, permanent=False) try: # if the panel is a dockwidget, raise it panel.raise_() except: pass self._trends1d[axes] = pname newpanels.append(pname) widget = self.getPanelWidget(self._trends1d[axes]) flt = ChannelFilter(plotables) widget.onScanPlotablesFilterChanged(flt) # remove trends that are no longer configured removedpanels = [] olditems = list(self._trends1d.items()) for axes, name in olditems: if axes not in trends1d: removedpanels.append(name) self.removePanel(name) self._trends1d.pop(axes) return newpanels, removedpanels
def _updateTemporaryTrends1D(self, trends1d): '''adds necessary trend1D panels and removes no longer needed ones :param trends1d: (dict) A dict whose keys are tuples of axes and whose values are list of model names to plot :returns: (tuple) two lists new,rm:new contains the names of the new panels and rm contains the names of the removed panels ''' from taurus.qt.qtgui.plot import TaurusTrend # TODO: use tpg instead! newpanels = [] for axes, plotables in trends1d.items(): if not axes: continue if axes not in self._trends1d: w = TaurusTrend() w.setXIsTime(False) w.setScanDoor(self.getModelObj().fullname) # TODO: use a standard key for <idx> and <mov> w.setScansXDataKey(axes[0]) pname = u'Trend1D - %s' % ":".join(axes) panel = self.createPanel(w, pname, registerconfig=False, permanent=False) try: # if the panel is a dockwidget, raise it panel.raise_() except Exception: pass self._trends1d[axes] = pname newpanels.append(pname) widget = self.getPanelWidget(self._trends1d[axes]) flt = ChannelFilter(plotables) widget.onScanPlotablesFilterChanged(flt) # remove trends that are no longer configured removedpanels = [] olditems = list(self._trends1d.items()) for axes, name in olditems: if axes not in trends1d: removedpanels.append(name) self.removePanel(name) self._trends1d.pop(axes) return newpanels, removedpanels
#!/usr/bin/env python import sys from taurus.external.qt import Qt from taurus.qt.qtgui.plot import TaurusTrend app = Qt.QApplication(sys.argv) ########################## # BEGIN EXAMPLE CODE ########################## panel = TaurusTrend() model = ['sys/taurustest/1/position'] panel.setXIsTime(True) # to show the x values as time panel.setModel(model) ######################## # END EXAMPLE CODE ######################## panel.show() sys.exit(app.exec_())
def get_archive_trend(models=None, length=4 * 3600, show=False): # This method is to be added to # PyTangoArchiving.widgets.trend in next releases #class PressureTrend(TaurusTrend): #def showEvent(self,event): #if not getattr(self,'_tuned',False): #setup_pressure_trend(self) #setattr(self,'_tuned',True) #TaurusTrend.showEvent(self,event) from taurus.external.qt import Qwt5 tt = TaurusTrend() try: tt.setXDynScale(True) tt.setUseArchiving(True) tt.setModelInConfig(False) tt.disconnect(tt.axisWidget(tt.xBottom), Qt.SIGNAL("scaleDivChanged ()"), tt._scaleChangeWarning) xMax = time.time() #tt.axisScaleDiv(Qwt5.QwtPlot.xBottom).upperBound() rg = length #abs(self.str2deltatime(str(self.ui.xRangeCB.currentText()))) xMin = xMax - rg tt.setAxisScale(Qwt5.QwtPlot.xBottom, xMin, xMax) if models: tt.setModel(models) if show: tt.show() tt.setWindowTitle('Trend') except: print 'Exception in set_pressure_trend(%s)' % tt print traceback.format_exc() return tt
import sys from taurus.external.qt import Qt from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(sys.argv, cmd_line_parser=None) panel = Qt.QWidget() layout = Qt.QHBoxLayout() panel.setLayout(layout) #from taurus.qt.qtgui.display import TaurusLabel #w = TaurusLabel() #layout.addWidget(w) #w.model = 'ET7000_server/test/pet7_7026/ai00' from taurus.qt.qtgui.plot import TaurusTrend panel = TaurusTrend() model = ['ET7000_server/test/pet7_7026/ai00'] #panel.setXIsTime(True) #to show the x values as time panel.setModel(model) panel.show() sys.exit(app.exec_())
class CyclePanel(TaurusWidget): "Panel for controlling the cycling functionality" trend_trigger = QtCore.pyqtSignal(bool) attrs = [ "CyclingTimePlateau", "CyclingIterations", "CyclingSteps", "CyclingRampTime", "NominalSetPoint" ] scale_factor = 1.1 def __init__(self, parent=None): TaurusWidget.__init__(self, parent) self._setup_ui() print('CyclePanel juste avant setmodel') # self.setModel('sys/tg_test/1') def scaleSize(self): size = self.form.scrollArea.widget().frameSize() return QtCore.QSize(size.width(), size.height() * self.scale_factor) def _setup_ui(self): vbox = QtGui.QVBoxLayout(self) self.setLayout(vbox) grid = QtGui.QGridLayout() self.form = MAXForm(withButtons=False) grid.addWidget(self.form, 0, 0, 2, 1) # rescale taurus form methode self.form.scrollArea.sizeHint = self.scaleSize self.status_label = StatusArea() grid.addWidget(self.status_label, 0, 1, 1, 1) commandbox = QtGui.QVBoxLayout(self) self.start_button = TaurusCommandButton(command="StartCycle") self.start_button.setUseParentModel(True) self.stop_button = TaurusCommandButton(command="StopCycle") self.stop_button.setUseParentModel(True) commandbox.addWidget(self.start_button) commandbox.addWidget(self.stop_button) grid.addLayout(commandbox, 1, 1, 1, 1) vbox.addLayout(grid) self.trend = TaurusTrend() vbox.addWidget(self.trend, stretch=1) self.trend_trigger.connect(self.set_trend_paused) self.cyclingState = None def setModel(self, device): print self.__class__.__name__, "setModel", device TaurusWidget.setModel(self, device) # self.state_button.setModel(device) if device: self.form.setModel( ["%s/%s" % (device, attribute) for attribute in self.attrs]) self.status_label.setModel("%s/cyclingStatus" % device) ps = str(PyTango.Database().get_device_property( device, "PowerSupplyProxy")["PowerSupplyProxy"][0]) self.trend.setPaused() self.trend.setModel(["%s/Current" % ps]) self.trend.setForcedReadingPeriod(0.2) self.trend.showLegend(True) # let's pause the trend when not cycling self.cyclingState = self.getModelObj().getAttribute("cyclingState") self.cyclingState.addListener(self.handle_cycling_state) else: if self.cyclingState: self.cyclingState.removeListener(self.handle_cycling_state) self.trend.setModel(None) self.status_label.setModel(None) def handle_cycling_state(self, evt_src, evt_type, evt_value): if evt_type in [ PyTango.EventType.CHANGE_EVENT, PyTango.EventType.PERIODIC_EVENT ]: self.trend_trigger.emit(evt_value.value) def set_trend_paused(self, value): self.trend.setForcedReadingPeriod(0.2 if value else -1) self.trend.setPaused(not value)
#!/usr/bin/env python import sys from taurus.qt.qtgui.plot import TaurusTrend from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(sys.argv) ########################## # BEGIN EXAMPLE CODE ########################## panel = TaurusTrend() model = ['sys/taurustest/1/position'] panel.setXIsTime(True) # to show the x values as time panel.setModel(model) ######################## # END EXAMPLE CODE ######################## panel.show() sys.exit(app.exec_())
def get_archive_trend(models=None,length=4*3600,show=False): # This method is to be added to PyTangoArchiving.widgets.trend in next releases #class PressureTrend(TaurusTrend): #def showEvent(self,event): #if not getattr(self,'_tuned',False): #setup_pressure_trend(self) #setattr(self,'_tuned',True) #TaurusTrend.showEvent(self,event) from PyQt4 import Qwt5 tt = TaurusTrend() try: tt.setXDynScale(True) tt.setUseArchiving(True) tt.setModelInConfig(False) tt.disconnect(tt.axisWidget(tt.xBottom), Qt.SIGNAL("scaleDivChanged ()"), tt._scaleChangeWarning) xMax = time.time() #tt.axisScaleDiv(Qwt5.QwtPlot.xBottom).upperBound() rg = length #abs(self.str2deltatime(str(self.ui.xRangeCB.currentText()))) xMin=xMax-rg tt.setAxisScale(Qwt5.QwtPlot.xBottom,xMin, xMax) if models: tt.setModel(models) if show: tt.show() tt.setWindowTitle('Trend') except: print 'Exception in set_pressure_trend(%s)'%tt print traceback.format_exc() return tt