##('PDFs','icon-all.gif',[ #('Pdf Q1','icon-all.gif',lambda:launch('%s %s'%('kpdf','TC_Q1.pdf'))), #('Pdf Q2','icon-all.gif',lambda:launch('%s %s'%('kpdf','TC_Q2.pdf'))), #('Pdf Q3','icon-all.gif',lambda:launch('%s %s'%('kpdf','TC_Q3.pdf'))), #('Pdf Q4','icon-all.gif',lambda:launch('%s %s'%('kpdf','TC_Q4.pdf'))), ## ]), #('Archiving Viewer','Mambo-icon.ico', lambda:launch('mambo')), ('Show New Trend', 'qwtplot.png', table.open_new_trend), ]) toolbar.add_to_main_window(tmw, where=Qt.Qt.BottomToolBarArea) tmw.show() if args: table.updateSearch(*args) if '--range' in opts: tracer('Setting trend range to %s' % opts['--range']) table.trend.applyNewDates(opts['--range'].replace('_', ' ').split(',')) return tmw if __name__ == "__main__": import sys if 'qapp' not in locals() and 'qapp' not in globals(): qapp = Qt.QApplication([]) import taurus taurus.setLogLevel('WARNING') t = main(args=sys.argv[1:]) sys.exit(qapp.exec_())
def show_new_dialog(klass, attribute, schema='*', parent=None, dates=[]): try: if not Qt.QApplication.instance(): Qt.QApplication([]) except: pass print 'in Vacca.widgets.show_history(%s)' print 'getting archiving readers ...' from PyTangoArchiving import Reader rd = Reader(schema.lower()) hdb = Reader('hdb') tdb = Reader('tdb') attribute = str(attribute).lower() try: dates = dates or klass.get_default_dates() if not all(map(fandango.isString, dates)): dates = map(epoch2str, dates) except: traceback.print_exc() dates = epoch2str(), epoch2str() schemas = rd.is_attribute_archived(attribute, preferent=False) if schemas: print '%s is being archived' % attribute di = Qt.QDialog(parent) wi = di #QtGui.QWidget(di) wi.setLayout(Qt.QGridLayout()) begin = Qt.QLineEdit() begin.setText(dates[0]) end = Qt.QLineEdit() end.setText(dates[1]) tfilter = Qt.QLineEdit() vfilter = Qt.QCheckBox() wi.setWindowTitle('Show %s Archiving' % attribute) wil = wi.layout() wi.layout().addWidget(Qt.QLabel(attribute), 0, 0, 1, 2) wi.layout().addWidget(Qt.QLabel('Preferred Schema'), 1, 0, 1, 1) qschema = Qt.QComboBox() qschema.insertItems(0, ['*'] + list(schemas)) wil.addWidget(qschema, 1, 1, 1, 1) #qb = Qt.QPushButton("Save as preferred schema") #wil.addWidget(qb,wil.rowCount(),0,1,2) #qi.connect(qb,Qt.SIGNAL('pushed()'),save_schema) wil.addWidget( Qt.QLabel('Enter Begin and End dates in %s format' % tformat), 2, 0, 1, 2) wil.addWidget(Qt.QLabel('Begin:'), 3, 0, 1, 1) wil.addWidget(begin, 3, 1, 1, 1) wil.addWidget(Qt.QLabel('End:'), 4, 0, 1, 1) wil.addWidget(end, 4, 1, 1, 1) wil.addWidget(Qt.QLabel('Time Filter:'), 5, 0, 1, 1) wil.addWidget(tfilter, 5, 1, 1, 1) wil.addWidget(Qt.QLabel('Value Filter:'), 6, 0, 1, 1) wil.addWidget(vfilter, 6, 1, 1, 1) buttons = Qt.QDialogButtonBox(wi) buttons.addButton(Qt.QPushButton("Export"), Qt.QDialogButtonBox.AcceptRole) bt = Qt.QPushButton("Apply") buttons.addButton(bt, Qt.QDialogButtonBox.ApplyRole) def set_schema(r=rd, a=attribute, qs=qschema): print 'setting schema ...' schema = str(qs.currentText()).strip() r.set_preferred_schema(a, schema) buttons.connect(bt, Qt.SIGNAL('clicked()'), set_schema) buttons.addButton(Qt.QPushButton("Close"), Qt.QDialogButtonBox.RejectRole) # Qt.QDialogButtonBox.Apply\ # |Qt.QDialogButtonBox.Open|Qt.QDialogButtonBox.Close) wi.connect(buttons, Qt.SIGNAL('accepted()'), wi.accept) wi.connect(buttons, Qt.SIGNAL('rejected()'), wi.reject) wi.layout().addWidget(buttons, 7, 0, 1, 2) def check_values(): di.exec_() print 'checking schema ...' schema = str(qschema.currentText()).strip() if schema != '*': rd.set_preferred_schema(attribute, schema) if di.result(): print 'checking result ...' try: start, stop = str(begin.text()), str(end.text()) try: tf = int(str(tfilter.text())) except: tf = 0 vf = vfilter.isChecked() if not all( re.match( '[0-9]+-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+', str(s).strip()) for s in (start, stop)): print 'dates are wrong ...' Qt.QMessageBox.warning( None, 'Show archiving', 'Dates seem not in %s format' % (tformat), Qt.QMessageBox.Ok) return check_values() else: print 'getting values ...' print 'using %s reader' % rd.schema values = rd.get_attribute_values( attribute, str2epoch(start), str2epoch(stop)) if not len( values ) and schema == '*' and hdb.is_attribute_archived( attribute, active=True): print 'tdb failed, retrying with hdb' values = hdb.get_attribute_values( attribute, str2epoch(start), str2epoch(stop)) if vf: values = fandango.arrays.decimate_array(values) if tf: print 'Filtering %d values (1/%dT)' % ( len(values), tf) values = fandango.arrays.filter_array( values, window=tf) #,begin=start,end=stop) twi = klass.setup_table(attribute, start, stop, values) klass.set_default_dates(str2epoch(start), str2epoch(stop)) button = Qt.QPushButton('Save to file') button2 = Qt.QPushButton('Send to email') def save_to_file(var=attribute, data=values, parent=twi, edit=True): try: options = { 'sep': '\\t', 'arrsep': '\\ ', 'linesep': '\\n' } import codecs dd = QOptionDialog(model=options, title='CSV Options') dd.exec_() for k, v in options.items(): options[k] = codecs.escape_decode( str(v))[0] print options filename = Qt.QFileDialog.getSaveFileName( parent, 'File to save', '/data/' + PyTangoArchiving.files. get_data_filename( var, data, 'csv', 'human'), 'CSV files (*.csv)') PyTangoArchiving.files.save_data_file( var, data, filename, format='csv', **options) if edit: try: os.system('gedit %s &' % filename) except: pass return filename except Exception, e: Qt.QMessageBox.warning( None, "Warning", "Unable to save %s\n:%s" % (filename, e)) def send_by_email(var=attribute, data=values, parent=twi): #subject,text,receivers,sender='',attachments=None,trace=False): try: receivers, ok = Qt.QInputDialog.getText( None, 'Send by email', 'to:') if ok: filename = str( save_to_file(var, data, parent, edit=False)) fandango.linos.sendmail( filename, attribute, receivers=str(receivers), attachments=[filename]) except Exception, e: Qt.QMessageBox.warning( None, "Warning", "Unable to send %s\n:%s" % (filename, e)) #button.setTextAlignment(Qt.Qt.AlignCenter) twi.connect(button, Qt.SIGNAL("pressed ()"), save_to_file) twi.layout().addWidget(button) twi.connect(button2, Qt.SIGNAL("pressed ()"), send_by_email) twi.layout().addWidget(button2) twi.show() TABS.append(twi) twi.connect(twi, Qt.SIGNAL('close()'), lambda o=twi: TABS.remove(o)) print 'show_history done ...' return twi except Exception, e: print traceback.format_exc() Qt.QMessageBox.warning( None, "Warning", "Unable to retrieve the values (%s), sorry" % e)
############################################################################### #class htmlWidget(QtGui.QWidget): #def __init__(self,parent=None): #QtGui.QWidget.__init__(self,parent) #self._htmlW = htmlviewForm() #self._htmlW.htmlviewSetupUi(self) #def buildReport(self, alarm): #self._htmlW.buildReport(alarm) ##def displayReport(self, report): ##self._htmlW.displayReport(report) #def show(self): #QtGui.QWidget.show(self) if __name__ == '__main__': import sys qapp = Qt.QApplication(sys.argv) form = AlarmPreview(*sys.argv[1:]) form.show() qapp.exec_() try: from fandango.doc import get_fn_autodoc __doc__ = get_fn_autodoc(__name__, vars()) except: import traceback traceback.print_exc()
def main(): app = Qt.QApplication(sys.argv) gui = Gui() gui.show() app.exec_()