-
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