source: bcdaqwidgets/trunk/src/bcdaqwidgets/pvview.py @ 1451

Last change on this file since 1451 was 1451, checked in by jemian, 9 years ago

handle color of alarm severity for INVALID

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Date Revision Author HeadURL Id
File size: 2.3 KB
Line 
1#!/usr/bin/env python
2
3'''display one or more EPICS PVs in a PySide GUI window as a table'''
4
5import os
6import sys
7from PySide.QtGui import QWidget, QLabel, QGridLayout, QApplication
8
9sys.path.insert(0, os.path.abspath('..'))
10import bcdaqwidgets
11
12class PVView(QWidget):
13    ''' '''
14    def __init__(self, parent=None):
15        QWidget.__init__(self, parent)
16        self.db = {}
17
18        name_label  = QLabel("PV Name")
19        value_label = QLabel("PV Value")
20        for item in (name_label, value_label):
21            sty = bcdaqwidgets.StyleSheet(item, {
22                                   'background-color': 'gray',
23                                   'color': 'white',
24                                   'font': 'bold',
25                                   })
26            sty.updateStyleSheet()
27
28        self.grid = QGridLayout()
29        self.grid.addWidget(name_label,   0, 0)
30        self.grid.addWidget(value_label,  0, 1)
31        self.grid.setColumnStretch(0, 0)
32        self.grid.setColumnStretch(1, 1)
33
34        self.setLayout(self.grid)
35        self.setWindowTitle("EPICS PV View")
36
37    def add(self, pvname):
38        '''add a PV to the table'''
39        if pvname in self.db:
40            return
41        row = len(self.db) + 1
42        label = QLabel(pvname)
43        widget = bcdaqwidgets.BcdaQLabel(pvname=pvname)
44        widget.useAlarmState = True
45        self.db[pvname] = widget
46        self.grid.addWidget(label, row, 0)
47        self.grid.addWidget(widget, row, 1)
48
49
50def main():
51    app = QApplication(sys.argv)
52    probe = PVView()
53    if len(sys.argv) < 2:
54        raise RuntimeError, "Must specify one or more EPICS PVs on command line"
55    for pvname in sys.argv[1:]:
56        probe.add(pvname)
57    probe.show()
58    sys.exit(app.exec_())
59
60
61if __name__ == '__main__':
62    txt = '${P}cr:{pwm11,ai{0,1,2}:mean,{rate,period},cmd}{.DESC,}'
63    pvs = []
64    _p = ['ino:cr:' + _ for _ in ('ai0', 'ai1', 'ai2')]
65    for _ in _p:
66        pvs.append(_)
67        pvs.append(_ + ':mean')
68    pvs.insert(0, 'ino:cr:pwm11')
69    for _ in ('rate', 'period', 'cmd'):
70        pvs.append('ino:cr:' + _)
71    for _ in pvs:
72        sys.argv.append(_)
73        sys.argv.append(_ + '.DESC')
74    main()
75
76
77########### SVN repository information ###################
78# $Date: 2014-01-17 00:35:51 +0000 (Fri, 17 Jan 2014) $
79# $Author: jemian $
80# $Revision: 1451 $
81# $URL: bcdaqwidgets/trunk/src/bcdaqwidgets/pvview.py $
82# $Id: pvview.py 1451 2014-01-17 00:35:51Z jemian $
83########### SVN repository information ###################
Note: See TracBrowser for help on using the repository browser.