source: bcdaqwidgets/trunk/src/bcdaqwidgets_demos/vlinac.py @ 1443

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

figured out how to create and install starter scripts using setup.py

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Date Revision Author HeadURL Id
File size: 5.5 KB
Line 
1#!/usr/bin/env python
2
3'''
4provide a basic GUI for the APS EPICS Virtual Linac demo software
5
6Copyright (c) 2009 - 2013, UChicago Argonne, LLC.
7See LICENSE file for details.
8'''
9
10
11# - - - - - - - - - - - - - - - - - - Imports
12
13
14import os
15import sys
16from PySide import QtGui, QtCore
17
18sys.path.insert(0, os.path.abspath('..'))
19import bcdaqwidgets
20
21
22# - - - - - - - - - - - - - - - - - - Global
23
24
25__svnid__ = "$Id: vlinac.py 1443 2013-10-16 01:22:10Z jemian $"
26
27
28# - - - - - - - - - - - - - - - - - - class
29
30
31class DemoView(QtGui.QWidget):
32    '''simple entry and label widgets for the most important PVs'''
33   
34    def __init__(self, parent=None, prefix='unknown'):
35        QtGui.QWidget.__init__(self, parent)
36       
37        layout = QtGui.QVBoxLayout()
38        self.setLayout(layout)
39       
40        self.setWindowTitle('Virtual Linac Controls')
41        widget = QtGui.QLabel('Virtual Linac Controls')
42        layout.addWidget(widget)
43        widget.setAlignment(QtCore.Qt.AlignHCenter)
44        sty = bcdaqwidgets.StyleSheet(widget, {'font':'bold 16px'})
45        sty.updateStyleSheet()
46       
47        widget = bcdaqwidgets.BcdaQMomentaryButton()
48        widget.ca_connect(prefix+':initAllSQ')
49        widget.setText('Reset')
50        widget.SetReleasedValue(1)
51        layout.addWidget(widget)
52       
53        layout.addWidget(self.source(prefix))
54        layout.addWidget(self.zone1(prefix))
55        layout.addWidget(self.zone2(prefix))
56       
57        widget = bcdaqwidgets.BcdaQToggleButton()
58        widget.ca_connect(prefix+':autoC')
59        widget.SetReleasedValue(1)
60        layout.addWidget(widget)
61   
62    def source(self, prefix):
63        panel = QtGui.QGroupBox()
64        layout = QtGui.QGridLayout()
65        panel.setLayout(layout)
66        panel.setFlat(True)
67        panel.setTitle('source')
68       
69        layout.setColumnStretch(1, 1)
70        layout.setColumnStretch(2, 1)
71       
72        widget = QtGui.QLabel('cathode')
73        layout.addWidget(widget, 0, 0)
74       
75        widget = bcdaqwidgets.BcdaQLineEdit()
76        widget.ca_connect(prefix+':cathodeCurrentC')
77        layout.addWidget(widget, 0, 1)
78       
79        widget = bcdaqwidgets.BcdaQLabel()
80        widget.ca_connect(prefix+':cathodeTempM')
81        widget.useAlarmState = True
82        layout.addWidget(widget, 0, 2)
83       
84        return panel
85   
86    def zone1(self, prefix):
87        panel = QtGui.QGroupBox()
88        layout = QtGui.QGridLayout()
89        panel.setLayout(layout)
90        panel.setFlat(True)
91        panel.setTitle('zone 1')
92       
93        for col in range(1, 6):
94            layout.setColumnStretch(col, 1)
95       
96        widget = QtGui.QLabel('CM')
97        layout.addWidget(widget, 0, 0)
98       
99        widget = bcdaqwidgets.BcdaQToggleButton()
100        layout.addWidget(widget, 0, 1, 1, 2)
101        widget.ca_connect(prefix+':gunOnC')
102       
103        widget = bcdaqwidgets.BcdaQLabel()
104        layout.addWidget(widget, 0, 3, 1, 2)
105        widget.ca_connect(prefix+':gunOnC')
106        widget.useAlarmState = True
107       
108        widget = bcdaqwidgets.BcdaQLabel()
109        widget.ca_connect(prefix+':CM1:intensityM')
110        layout.addWidget(widget, 0, 5)
111       
112        for row in (1, 2):
113            self.defineMagnetRow(prefix, row, row, layout)
114       
115        return panel
116   
117    def zone2(self, prefix):
118        panel = QtGui.QGroupBox()
119        layout = QtGui.QGridLayout()
120        panel.setLayout(layout)
121        panel.setFlat(True)
122        panel.setTitle('zone 2')
123       
124        for col in range(1, 6):
125            layout.setColumnStretch(col, 1)
126       
127        widget = QtGui.QLabel('GV1')
128        layout.addWidget(widget, 0, 0)
129       
130        widget = bcdaqwidgets.BcdaQToggleButton()
131        layout.addWidget(widget, 0, 1, 1, 2)
132        widget.ca_connect(prefix+':GV1:positionC')
133       
134        widget = bcdaqwidgets.BcdaQLabel()
135        layout.addWidget(widget, 0, 3, 1, 2)
136        widget.ca_connect(prefix+':GV1:positionM')
137        widget.useAlarmState = True
138       
139        for row in (3, 4, 5):
140            self.defineMagnetRow(prefix, row, row-2, layout)
141       
142        return panel
143   
144    def defineMagnetRow(self, prefix, magnet_number, row, layout):
145        widget = QtGui.QLabel('PM%d' % magnet_number)
146        layout.addWidget(widget, row, 0)
147   
148        widget = bcdaqwidgets.BcdaQLineEdit()
149        widget.ca_connect(prefix+':H%d:setCurrentC' % magnet_number)
150        layout.addWidget(widget, row, 1)
151       
152        widget = bcdaqwidgets.BcdaQLabel()
153        widget.ca_connect(prefix+':PM%d:X:positionM' % magnet_number)
154        widget.useAlarmState = True
155        layout.addWidget(widget, row, 2)
156       
157        widget = bcdaqwidgets.BcdaQLineEdit()
158        widget.ca_connect(prefix+':V%d:setCurrentC' % magnet_number)
159        layout.addWidget(widget, row, 3)
160       
161        widget = bcdaqwidgets.BcdaQLabel()
162        widget.ca_connect(prefix+':PM%d:Y:positionM' % magnet_number)
163        widget.useAlarmState = True
164        layout.addWidget(widget, row, 4)
165       
166        widget = bcdaqwidgets.BcdaQLabel()
167        widget.ca_connect(prefix+':PM%d:intensityM' % magnet_number)
168        layout.addWidget(widget, row, 5)
169
170
171# - - - - - - - - - - - - - - - - - - methods
172
173def main():
174    '''demonstrate use of this module'''
175    user = os.environ['USER']
176    app = QtGui.QApplication(sys.argv)
177    view = DemoView(prefix=user)
178    view.show()
179    sys.exit(app.exec_())
180
181
182# - - - - - - - - - - - - - - - - - - main
183
184
185if __name__ == '__main__':
186    main()
187
188
189########### SVN repository information ###################
190# $Date: 2013-10-16 01:22:10 +0000 (Wed, 16 Oct 2013) $
191# $Author: jemian $
192# $Revision: 1443 $
193# $URL: bcdaqwidgets/trunk/src/bcdaqwidgets_demos/vlinac.py $
194# $Id: vlinac.py 1443 2013-10-16 01:22:10Z jemian $
195########### SVN repository information ###################
Note: See TracBrowser for help on using the repository browser.