-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME
164 lines (126 loc) · 5.97 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# SC MPS Display
## Directory Structure
.
|-- README
|-- RELEASE_NOTES
|-- sc_mps_gui.bash
`-- gui/
|-- mps_cud_main.ui
|-- mps_gui_main.ui
|-- mps_gui_main.py
|-- enums.py
|-- mixins/
| |-- __init__.py
| |-- summary.py
| |-- logic.py
| |-- selection_detail.py
| |-- ignore.py
| |-- app_status.py
| `-- configure.py
|-- models_pkg/
| |-- __init__.py
| |-- mps_model.py
| |-- logic_model.py
| |-- app_status_model.py
| `-- configure_model.py
`-- resources/
|-- __init__.py
|-- mps_permit_panel.ui
|-- widgets.py
|-- conf_def_embed.ui
|-- conf_err_embed.ui
|-- conf_bpm_embed.py
`-- conf_bpm_embed.ui
### sc_mps_gui.bash
- Run the MPS Display with the specified DB file (if one is specified)
- Usage:
`` sc_mps_gui.bash [ -c | --cud ] [ -d | --dbfile filename ] ``
- Examples:
`` sc_mps_gui.bash ``
- To use a specific SQLite database:
`` sc_mps_gui.bash -d faults.db ``
`` sc_mps_gui.bash --dbfile faults.db ``
- To use "CUD mode":
`` sc_mps_gui.bash -c ``
`` sc_mps_gui.bash --cud ``
### mps_gui_main.py & mps_gui_main.ui & mps_cud_main.ui
- This is the main display for the SC MPS Display
- Contains a tab widget with 4 tabs:
- The Summary tab contains 6 embedded displays, 3 'check engine lights', and 2 tables, one containing faulted PVs and one containing bypassed faults
- The Logic tab contains a table of all faults in the database
- The searchbar shows only faults containing that substring
- The checkbox shows the user all inactive faults
- Selecting a fault opens a panel with more details on that fault
- The Ignore Logic tab displays which faults are ignored and the conditions in which they are ignored
- The Configure tab allows the user to set thresholds for multiple devices at once
- mps_cud_main.ui is the UI for the CUD mode, consisting of the
summary tab contents (without interactivity) in a CUD-ified UI
### enums.py
- Contains enums for use in the application
- Used by the Selection Details and the Configure tab
### summary.py
- This file contains a python mixin to manage the Summary tab
- Manage the faults table and the bypass table
- Right-clicking a fault allows the user to open more details in the Logic tab
- Middle-clicking a fault copies the fault's name or fault's pv based on which column is clicked
- Minor interactions with Logic tab:
- When a fault is right-clicking
- On fault status change and/or bypass status change, alter the associated cell in Logic tab table
- When a fault is right-clicked, present an option to open the fault in the Logic tab
### logic.py
- This file contains a python mixin to manage the Logic tab
- Manage the logic table and open a details pane when a fault is selected
- Allow for searching and sorting in the main table
- Allow the user to filter out all inactive faults
- Faults can be bypassed from the selection details pane
- Middle-clicking a fault copies the fault's name or fault's pv based on which column is clicked
### selection_detail.py
- Manage the Selection Details section used in the Logic tab
- The section is shown and populated when a selection is made in the logic table
- Details shown:
- Name
- Current State
- Ignore Conditions
- Truth Table
- PV Table
### ignore.py
- This file contains a python mixin to manage the Ignore Logic tab
- Right-clicking a fault allows the user to open more details in the Logic tab
- Middle-clicking a fault copies the fault's name or fault's pv based on which column is clicked
### app_status.py
- This file contains a python mixin to manage the App Status tab
- Show all apps and their Link Node, Location, Slot, ID, Type, and Status
- Includes Related Display Buttons to open the app's MPS Group
### configure.py
- This file contains the python mixin to manage the Configure tab
- Manage the table of all devices and add/remove them from the selected devices table on user interaction
- When devices are (un)selected, sets the macros and file for the embedded display on the right
- Display 'error' file when multiple device types are selected or an unsupported device type
- Supported Device Types:
- BPMS
### mps_model.py
- Using MPSConfig, establish a connection to the MPS Database
- If a filename is not provided, then MPSModel will locate the default file to use
- The object stores all necessary information from the database
### logic_model.py
- Create a custom QAbstractTableModel, QSortFilterProxyModel, and QStyledItemDelegate for use in the Logic tab and Summary tab
### app_status_model.py
- Create a custom QAbstractTableModel for managing all MPS Apps used by the App Status tab
- Create a custom QStyledItemDelegate to create PyDMRelatedDisplayButtons for each application
### configure_model.py
- Create a custom QAbstractTableModel used to manage the table of all devices and selected devices in the Configure tab
### mps_permit_panel.ui
- The permit panel display embedded in the Summary tab
- Shows the Beam Class, Timing Beam Class, and Timing Rate
### widgets.py
- Contains two subclasses of PyDM widgets that are used by the Configure tab
- PyDMMultiCheckbox:
- A PyDMCheckbox that connects to multiple channels
- Only checked if all channels are True
- PyDMMultiLineEdit:
- A PyDMLineEdit that connects to multiple channels
### conf_def_embed.ui & conf_err_embed.ui
- Static files that display messages to the user
### conf_bpm_embed.py & conf_bpm_embed.ui
- Allow the user to alter the threshold values on the selected BPMS(s)
- Make use of subclassed PyDM Widgets to write to multiple channels at once