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
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 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 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)
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
#!/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_())