-
Notifications
You must be signed in to change notification settings - Fork 1
zdomke/sc_mps_gui
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
# 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