cgse 2024.7.0__py3-none-any.whl → 2025.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.2.dist-info/METADATA +38 -0
- cgse-2025.0.2.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.2.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
egse/storage/storage.yaml
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
BaseClass:
|
|
2
|
-
egse.storage.StorageInterface
|
|
3
|
-
|
|
4
|
-
ProxyClass:
|
|
5
|
-
egse.storage.StorageProxy
|
|
6
|
-
|
|
7
|
-
ControlServerClass:
|
|
8
|
-
egse.storage.StorageControlServer
|
|
9
|
-
|
|
10
|
-
ControlServer:
|
|
11
|
-
egse.storage.storage_cs
|
|
12
|
-
|
|
13
|
-
Commands:
|
|
14
|
-
|
|
15
|
-
# Each of these groups is parsed and used on both the server and the client side.
|
|
16
|
-
# The group name (e.g. is_simulator) will be monkey patched in the Proxy class for the device or service.
|
|
17
|
-
# The other field are:
|
|
18
|
-
# description: Used by the doc_string method to generate a help string
|
|
19
|
-
# cmd: Command string that will eventually be send to the hardware controller for the
|
|
20
|
-
# device.
|
|
21
|
-
# device_method: The name of the method to be called on the device class.
|
|
22
|
-
# These should all be defined by the base class for the device, i.e. HexapodBase.
|
|
23
|
-
# response: The name of the method to be called from the device protocol.
|
|
24
|
-
# This method should exist in the subclass of the CommandProtocol base class, i.e.
|
|
25
|
-
# in this case it will be the HexapodProtocol class.
|
|
26
|
-
|
|
27
|
-
handle_event:
|
|
28
|
-
description: Notification of an event
|
|
29
|
-
cmd: '{event}'
|
|
30
|
-
|
|
31
|
-
start_observation:
|
|
32
|
-
description: Start a new observation aka test.
|
|
33
|
-
cmd: '{obsid}, {camera_name}'
|
|
34
|
-
|
|
35
|
-
end_observation:
|
|
36
|
-
description: End the current observation.
|
|
37
|
-
cmd: '{obsid}'
|
|
38
|
-
|
|
39
|
-
get_obsid:
|
|
40
|
-
description: Return the current observation identifier
|
|
41
|
-
|
|
42
|
-
save:
|
|
43
|
-
description: Save data. The packet should be of type StoragePacket.
|
|
44
|
-
cmd: '{packet}'
|
|
45
|
-
|
|
46
|
-
read:
|
|
47
|
-
description: Read data from the registered storage.
|
|
48
|
-
cmd: '{item}'
|
|
49
|
-
|
|
50
|
-
register:
|
|
51
|
-
description: Register a client to the Storage Manager.
|
|
52
|
-
cmd: '{client_info}'
|
|
53
|
-
|
|
54
|
-
unregister:
|
|
55
|
-
description: De-register a client from the Storage Manager.
|
|
56
|
-
cmd: '{client_info}'
|
|
57
|
-
|
|
58
|
-
get_registry_names:
|
|
59
|
-
description: Returns the names/identifiers of the registered components.
|
|
60
|
-
|
|
61
|
-
cycle_daily_files:
|
|
62
|
-
description: Create new daily files for all registered items.
|
|
63
|
-
|
|
64
|
-
get_storage_location:
|
|
65
|
-
description: Returns the path to the Storage location on the server.
|
|
66
|
-
|
|
67
|
-
get_loaded_setup_id:
|
|
68
|
-
description: Returns the ID of the currently loaded Setup on this control server.
|
|
69
|
-
|
|
70
|
-
new_registration:
|
|
71
|
-
description: Open a new data file to which the incoming data needs to be written.
|
|
72
|
-
cmd: "{item}, {use_counter}"
|
|
73
|
-
|
|
74
|
-
get_filenames:
|
|
75
|
-
description: Return the filename(s) associated with this registered item.
|
|
76
|
-
cmd: "{item}"
|
|
77
|
-
|
|
78
|
-
get_disk_usage:
|
|
79
|
-
description: Returns the total, used, and free disk space.
|
egse/storage/storage_cs.py
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
The Storage Control Server, aka Storage Manager, is the service which saves all data coming
|
|
3
|
-
from any component in the Common-EGSE.
|
|
4
|
-
|
|
5
|
-
The Storage manager is implemented as a standard control server.
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
import logging
|
|
9
|
-
import multiprocessing
|
|
10
|
-
import sys
|
|
11
|
-
from pathlib import Path
|
|
12
|
-
|
|
13
|
-
import click
|
|
14
|
-
import zmq
|
|
15
|
-
from apscheduler.schedulers.background import BackgroundScheduler
|
|
16
|
-
from prometheus_client import start_http_server
|
|
17
|
-
from pytz import utc
|
|
18
|
-
|
|
19
|
-
from egse.bits import humanize_bytes
|
|
20
|
-
from egse.control import ControlServer
|
|
21
|
-
from egse.env import get_data_storage_location
|
|
22
|
-
from egse.settings import Settings
|
|
23
|
-
from egse.storage import StorageProtocol
|
|
24
|
-
from egse.storage import StorageProxy
|
|
25
|
-
from egse.storage import cycle_daily_files
|
|
26
|
-
from egse.storage import is_storage_manager_active
|
|
27
|
-
from egse.system import replace_environment_variable
|
|
28
|
-
|
|
29
|
-
# Use explicit name here otherwise the logger will probably be called __main__
|
|
30
|
-
|
|
31
|
-
logger = logging.getLogger("egse.storage.storage_cs")
|
|
32
|
-
|
|
33
|
-
CTRL_SETTINGS = Settings.load("Storage Control Server")
|
|
34
|
-
SITE = Settings.load("SITE")
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class StorageControlServer(ControlServer):
|
|
38
|
-
"""
|
|
39
|
-
The Storage Control Server (aka Storage Manager) saves information from registered components.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def __init__(self):
|
|
43
|
-
super().__init__()
|
|
44
|
-
|
|
45
|
-
self.device_protocol = StorageProtocol(self)
|
|
46
|
-
|
|
47
|
-
self.logger = logger
|
|
48
|
-
self.logger.debug(f"Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}")
|
|
49
|
-
|
|
50
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
51
|
-
|
|
52
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
53
|
-
|
|
54
|
-
from egse.confman import ConfigurationManagerProxy, is_configuration_manager_active
|
|
55
|
-
from egse.listener import EVENT_ID
|
|
56
|
-
|
|
57
|
-
self.register_as_listener(
|
|
58
|
-
proxy=ConfigurationManagerProxy,
|
|
59
|
-
listener={'name': 'Storage CS', 'proxy': StorageProxy, 'event_id': EVENT_ID.SETUP}
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
# NOTE:
|
|
63
|
-
# Since the CM CS is started after the SM CS in the normal startup sequence, delay the task to load
|
|
64
|
-
# the Setup until after the CM CS has been properly started. We do that now with a delay time of 30s,
|
|
65
|
-
# but we might in the future use a function returning a boolean, until...
|
|
66
|
-
self.schedule_task(self.device_protocol.controller.load_setup, after=10.0, when=is_configuration_manager_active)
|
|
67
|
-
|
|
68
|
-
def before_serve(self):
|
|
69
|
-
|
|
70
|
-
self.scheduler = BackgroundScheduler(timezone=utc)
|
|
71
|
-
self.scheduler.start()
|
|
72
|
-
self.scheduler.add_job(cycle_daily_files, "cron", day="*")
|
|
73
|
-
|
|
74
|
-
start_http_server(CTRL_SETTINGS.METRICS_PORT)
|
|
75
|
-
|
|
76
|
-
def after_serve(self):
|
|
77
|
-
from egse.confman import ConfigurationManagerProxy
|
|
78
|
-
|
|
79
|
-
self.scheduler.shutdown()
|
|
80
|
-
self.unregister_as_listener(proxy=ConfigurationManagerProxy, listener={'name': 'Storage CS'})
|
|
81
|
-
|
|
82
|
-
def get_communication_protocol(self):
|
|
83
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
84
|
-
|
|
85
|
-
def get_commanding_port(self):
|
|
86
|
-
return CTRL_SETTINGS.COMMANDING_PORT
|
|
87
|
-
|
|
88
|
-
def get_service_port(self):
|
|
89
|
-
return CTRL_SETTINGS.SERVICE_PORT
|
|
90
|
-
|
|
91
|
-
def get_monitoring_port(self):
|
|
92
|
-
return CTRL_SETTINGS.MONITORING_PORT
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
@click.group()
|
|
96
|
-
def cli():
|
|
97
|
-
pass
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
@cli.command()
|
|
101
|
-
def start():
|
|
102
|
-
"""Start the Storage Manager."""
|
|
103
|
-
|
|
104
|
-
multiprocessing.current_process().name = "storage_cs"
|
|
105
|
-
|
|
106
|
-
# We import this class such that the class name is
|
|
107
|
-
# 'egse.storage.storage_cs.StorageControlServer' and we
|
|
108
|
-
# can compare self with isinstance inside the Control.
|
|
109
|
-
# If this import is not done, the class name for the
|
|
110
|
-
# StorageControlServer would be '__main__.StorageControlServer'.
|
|
111
|
-
|
|
112
|
-
from egse.storage.storage_cs import StorageControlServer
|
|
113
|
-
|
|
114
|
-
try:
|
|
115
|
-
check_prerequisites()
|
|
116
|
-
except RuntimeError as exc:
|
|
117
|
-
logger.info(exc)
|
|
118
|
-
return 0
|
|
119
|
-
|
|
120
|
-
try:
|
|
121
|
-
control_server = StorageControlServer()
|
|
122
|
-
control_server.serve()
|
|
123
|
-
except KeyboardInterrupt:
|
|
124
|
-
print("Shutdown requested...exiting")
|
|
125
|
-
except SystemExit as exit_code:
|
|
126
|
-
print("System Exit with code {}.".format(exit_code))
|
|
127
|
-
sys.exit(exit_code)
|
|
128
|
-
except Exception:
|
|
129
|
-
import traceback
|
|
130
|
-
|
|
131
|
-
traceback.print_exc(file=sys.stdout)
|
|
132
|
-
|
|
133
|
-
return 0
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
@cli.command()
|
|
137
|
-
def stop():
|
|
138
|
-
"""Send a 'quit_server' command to the Storage Manager."""
|
|
139
|
-
with StorageProxy() as sm:
|
|
140
|
-
sp = sm.get_service_proxy()
|
|
141
|
-
sp.quit_server()
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
@cli.command()
|
|
145
|
-
@click.option("--full", is_flag=True, help="Give a full status report")
|
|
146
|
-
def status(full):
|
|
147
|
-
"""Print the status of the control server."""
|
|
148
|
-
|
|
149
|
-
import rich
|
|
150
|
-
|
|
151
|
-
rich.print("Storage Manager:")
|
|
152
|
-
if is_storage_manager_active():
|
|
153
|
-
rich.print(" Status: [green]active")
|
|
154
|
-
with StorageProxy() as sm:
|
|
155
|
-
rich.print(f" Hostname: {sm.get_ip_address()}")
|
|
156
|
-
rich.print(f" Monitoring port: {sm.get_monitoring_port()}")
|
|
157
|
-
rich.print(f" Commanding port: {sm.get_commanding_port()}")
|
|
158
|
-
rich.print(f" Service port: {sm.get_service_port()}")
|
|
159
|
-
rich.print(f" Storage location: {sm.get_storage_location()}")
|
|
160
|
-
rich.print(f" Loaded Setup: {sm.get_loaded_setup_id()}")
|
|
161
|
-
rich.print(f" Registrations: {sm.get_registry_names()}")
|
|
162
|
-
if full:
|
|
163
|
-
rich.print("Filenames for all registered items:")
|
|
164
|
-
for origin in sm.get_registry_names():
|
|
165
|
-
fn = [x for x in sm.get_filenames({"origin": origin})]
|
|
166
|
-
rich.print(f" {origin:10s} -> {fn}")
|
|
167
|
-
if obsid := sm.get_obsid():
|
|
168
|
-
rich.print(f"An observation is registered: {obsid}")
|
|
169
|
-
else:
|
|
170
|
-
rich.print("No observation is registered.")
|
|
171
|
-
|
|
172
|
-
total, used, free = sm.get_disk_usage()
|
|
173
|
-
rich.print(f"Total disk space: {humanize_bytes(total)}")
|
|
174
|
-
rich.print(f"Used disk space: {humanize_bytes(used)} ({(used / total * 100):.2f}%)")
|
|
175
|
-
rich.print(f"Free disk space: {humanize_bytes(free)} ({(free / total * 100):.2f}%)")
|
|
176
|
-
else:
|
|
177
|
-
rich.print(" Status: [red]not active")
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
def check_prerequisites():
|
|
181
|
-
"""Checks if all prerequisites for running the Storage Manager are met.
|
|
182
|
-
|
|
183
|
-
Raises:
|
|
184
|
-
RuntimeError when one or more of the prerequisites is not met.
|
|
185
|
-
"""
|
|
186
|
-
|
|
187
|
-
fails = 0
|
|
188
|
-
|
|
189
|
-
# We need a proper location for storing the data, this directory shall contain
|
|
190
|
-
# two subfolders: 'daily' and 'obs'.
|
|
191
|
-
|
|
192
|
-
location = get_data_storage_location(site_id=SITE.ID)
|
|
193
|
-
|
|
194
|
-
if not location:
|
|
195
|
-
raise RuntimeError(
|
|
196
|
-
"The environment variable referenced in the Settings.yaml file for the "
|
|
197
|
-
"FILE_STORAGE_LOCATION does not exist, please set the environment variable."
|
|
198
|
-
)
|
|
199
|
-
|
|
200
|
-
location = Path(location)
|
|
201
|
-
|
|
202
|
-
if not location.exists():
|
|
203
|
-
logger.error(
|
|
204
|
-
f"The directory {location} does not exist, provide a writable location for "
|
|
205
|
-
f"storing the data."
|
|
206
|
-
)
|
|
207
|
-
fails += 1
|
|
208
|
-
|
|
209
|
-
# logger.debug(f"Storage location for data = {location}")
|
|
210
|
-
|
|
211
|
-
daily_dir = location / "daily"
|
|
212
|
-
obs_dir = location / "obs"
|
|
213
|
-
|
|
214
|
-
if not daily_dir.exists():
|
|
215
|
-
logger.error("The data storage location shall have a 'daily' sub-folder.")
|
|
216
|
-
fails += 1
|
|
217
|
-
if not obs_dir.exists():
|
|
218
|
-
logger.error("The data storage location shall have a 'obs' sub-folder.")
|
|
219
|
-
fails += 1
|
|
220
|
-
|
|
221
|
-
# now raise the final verdict
|
|
222
|
-
|
|
223
|
-
if fails:
|
|
224
|
-
raise RuntimeError(
|
|
225
|
-
"Some of the prerequisites for the Storage Manager haven't met. "
|
|
226
|
-
"Please check the logs."
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
if __name__ == "__main__":
|
|
231
|
-
sys.exit(cli())
|
egse/styles/dark.qss
DELETED
|
@@ -1,343 +0,0 @@
|
|
|
1
|
-
QToolTip{
|
|
2
|
-
color:#ffffff;
|
|
3
|
-
background-color:palette(base);
|
|
4
|
-
border:1px solid palette(highlight);
|
|
5
|
-
border-radius:4px;
|
|
6
|
-
}
|
|
7
|
-
QStatusBar{
|
|
8
|
-
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
9
|
-
color:palette(mid);
|
|
10
|
-
}
|
|
11
|
-
QMenuBar{
|
|
12
|
-
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
13
|
-
border-bottom:2px solid rgba(25,25,25,75);
|
|
14
|
-
}
|
|
15
|
-
QMenuBar::item{
|
|
16
|
-
spacing:2px;
|
|
17
|
-
padding:3px 4px;
|
|
18
|
-
background:transparent;
|
|
19
|
-
}
|
|
20
|
-
QMenuBar::item:selected{
|
|
21
|
-
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(106,106,106,255),stop:1 rgba(106,106,106,75));
|
|
22
|
-
border-left:1px solid rgba(106,106,106,127);
|
|
23
|
-
border-right:1px solid rgba(106,106,106,127);
|
|
24
|
-
}
|
|
25
|
-
QMenuBar::item:pressed{
|
|
26
|
-
background-color:palette(highlight);
|
|
27
|
-
border-left:1px solid rgba(25,25,25,127);
|
|
28
|
-
border-right:1px solid rgba(25,25,25,127);
|
|
29
|
-
}
|
|
30
|
-
QMenu{
|
|
31
|
-
background-color:palette(window);
|
|
32
|
-
border:1px solid palette(shadow);
|
|
33
|
-
}
|
|
34
|
-
QMenu::item{
|
|
35
|
-
padding:3px 25px 3px 25px;
|
|
36
|
-
border:1px solid transparent;
|
|
37
|
-
}
|
|
38
|
-
QMenu::item:disabled{
|
|
39
|
-
background-color:rgba(35,35,35,127);
|
|
40
|
-
color:palette(disabled);
|
|
41
|
-
}
|
|
42
|
-
QMenu::item:selected{
|
|
43
|
-
border-color:rgba(147,191,236,127);
|
|
44
|
-
background:palette(highlight);
|
|
45
|
-
}
|
|
46
|
-
QMenu::icon:checked{
|
|
47
|
-
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
48
|
-
border:1px solid palette(highlight);
|
|
49
|
-
border-radius:2px;
|
|
50
|
-
}
|
|
51
|
-
QMenu::separator{
|
|
52
|
-
height:1px;
|
|
53
|
-
background:palette(alternate-base);
|
|
54
|
-
margin-left:5px;
|
|
55
|
-
margin-right:5px;
|
|
56
|
-
}
|
|
57
|
-
QMenu::indicator{
|
|
58
|
-
width:18px;
|
|
59
|
-
height:18px;
|
|
60
|
-
}
|
|
61
|
-
QMenu::indicator:non-exclusive:checked{
|
|
62
|
-
image:url(:/darkstyle/icon_checkbox_checked.png);
|
|
63
|
-
padding-left:2px;
|
|
64
|
-
}
|
|
65
|
-
QMenu::indicator:non-exclusive:unchecked{
|
|
66
|
-
image:url(:/darkstyle/icon_checkbox_unchecked.png);
|
|
67
|
-
padding-left:2px;
|
|
68
|
-
}
|
|
69
|
-
QMenu::indicator:exclusive:checked{
|
|
70
|
-
image:url(:/darkstyle/icon_radiobutton_checked.png);
|
|
71
|
-
padding-left:2px;
|
|
72
|
-
}
|
|
73
|
-
QMenu::indicator:exclusive:unchecked{
|
|
74
|
-
image:url(:/darkstyle/icon_radiobutton_unchecked.png);
|
|
75
|
-
padding-left:2px;
|
|
76
|
-
}
|
|
77
|
-
QToolBar::top{
|
|
78
|
-
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
79
|
-
border-bottom:3px solid qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
80
|
-
}
|
|
81
|
-
QToolBar::bottom{
|
|
82
|
-
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
83
|
-
border-top:3px solid qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
84
|
-
}
|
|
85
|
-
QToolBar::left{
|
|
86
|
-
background-color:qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
87
|
-
border-right:3px solid qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
88
|
-
}
|
|
89
|
-
QToolBar::right{
|
|
90
|
-
background-color:qlineargradient(x1:1,y1:0,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
91
|
-
border-left:3px solid qlineargradient(x1:1,y1:0,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
92
|
-
}
|
|
93
|
-
QMainWindow::separator{
|
|
94
|
-
width:6px;
|
|
95
|
-
height:5px;
|
|
96
|
-
padding:2px;
|
|
97
|
-
}
|
|
98
|
-
QSplitter::handle:horizontal{
|
|
99
|
-
width:10px;
|
|
100
|
-
}
|
|
101
|
-
QSplitter::handle:vertical{
|
|
102
|
-
height:10px;
|
|
103
|
-
}
|
|
104
|
-
QMainWindow::separator:hover,QSplitter::handle:hover{
|
|
105
|
-
background:palette(highlight);
|
|
106
|
-
}
|
|
107
|
-
QDockWidget::title{
|
|
108
|
-
padding:4px;
|
|
109
|
-
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
110
|
-
border:1px solid rgba(25,25,25,75);
|
|
111
|
-
border-bottom:2px solid rgba(25,25,25,75);
|
|
112
|
-
}
|
|
113
|
-
QDockWidget{
|
|
114
|
-
titlebar-close-icon:url(:/darkstyle/icon_close.png);
|
|
115
|
-
titlebar-normal-icon:url(:/darkstyle/icon_restore.png);
|
|
116
|
-
}
|
|
117
|
-
QDockWidget::close-button,QDockWidget::float-button{
|
|
118
|
-
subcontrol-position:top right;
|
|
119
|
-
subcontrol-origin:margin;
|
|
120
|
-
position:absolute;
|
|
121
|
-
top:3px;
|
|
122
|
-
bottom:0px;
|
|
123
|
-
width:20px;
|
|
124
|
-
height:20px;
|
|
125
|
-
}
|
|
126
|
-
QDockWidget::close-button{
|
|
127
|
-
right:3px;
|
|
128
|
-
}
|
|
129
|
-
QDockWidget::float-button{
|
|
130
|
-
right:25px;
|
|
131
|
-
}
|
|
132
|
-
QGroupBox{
|
|
133
|
-
background-color:rgba(66,66,66,50%);
|
|
134
|
-
margin-top:27px;
|
|
135
|
-
border:1px solid rgba(25,25,25,127);
|
|
136
|
-
border-radius:4px;
|
|
137
|
-
}
|
|
138
|
-
QGroupBox::title{
|
|
139
|
-
subcontrol-origin:margin;
|
|
140
|
-
subcontrol-position:left top;
|
|
141
|
-
padding:4px 6px;
|
|
142
|
-
margin-left:3px;
|
|
143
|
-
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
144
|
-
border:1px solid rgba(25,25,25,75);
|
|
145
|
-
border-bottom:2px solid rgb(127,127,127);
|
|
146
|
-
border-top-left-radius:4px;
|
|
147
|
-
border-top-right-radius:4px;
|
|
148
|
-
}
|
|
149
|
-
QTabWidget::pane{
|
|
150
|
-
background-color:rgba(66,66,66,50%);
|
|
151
|
-
border-top:1px solid rgba(25,25,25,50%);
|
|
152
|
-
}
|
|
153
|
-
QTabWidget::tab-bar{
|
|
154
|
-
left:3px;
|
|
155
|
-
top:1px;
|
|
156
|
-
}
|
|
157
|
-
QTabBar{
|
|
158
|
-
background-color:transparent;
|
|
159
|
-
qproperty-drawBase:0;
|
|
160
|
-
border-bottom:1px solid rgba(25,25,25,50%);
|
|
161
|
-
}
|
|
162
|
-
QTabBar::tab{
|
|
163
|
-
padding:4px 6px;
|
|
164
|
-
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
165
|
-
border:1px solid rgba(25,25,25,75);
|
|
166
|
-
border-top-left-radius:4px;
|
|
167
|
-
border-top-right-radius:4px;
|
|
168
|
-
}
|
|
169
|
-
QTabBar::tab:selected,QTabBar::tab:hover{
|
|
170
|
-
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(53,53,53,127),stop:1 rgba(66,66,66,50%));
|
|
171
|
-
border-bottom-color:rgba(66,66,66,75%);
|
|
172
|
-
}
|
|
173
|
-
QTabBar::tab:selected{
|
|
174
|
-
border-bottom:2px solid palette(highlight);
|
|
175
|
-
}
|
|
176
|
-
QTabBar::tab::selected:disabled{
|
|
177
|
-
border-bottom:2px solid rgb(127,127,127);
|
|
178
|
-
}
|
|
179
|
-
QTabBar::tab:!selected{
|
|
180
|
-
margin-top:2px;
|
|
181
|
-
}
|
|
182
|
-
QCheckBox::indicator{
|
|
183
|
-
width:18px;
|
|
184
|
-
height:18px;
|
|
185
|
-
}
|
|
186
|
-
QCheckBox::indicator:checked,QTreeView::indicator:checked,QTableView::indicator:checked,QGroupBox::indicator:checked{
|
|
187
|
-
image:url(:/darkstyle/icon_checkbox_checked.png);
|
|
188
|
-
}
|
|
189
|
-
QCheckBox::indicator:checked:pressed,QTreeView::indicator:checked:pressed,QTableView::indicator:checked:pressed,QGroupBox::indicator:checked:pressed{
|
|
190
|
-
image:url(:/darkstyle/icon_checkbox_checked_pressed.png);
|
|
191
|
-
}
|
|
192
|
-
QCheckBox::indicator:checked:disabled,QTreeView::indicator:checked:disabled,QTableView::indicator:checked:disabled,QGroupBox::indicator:checked:disabled{
|
|
193
|
-
image:url(:/darkstyle/icon_checkbox_checked_disabled.png);
|
|
194
|
-
}
|
|
195
|
-
QCheckBox::indicator:unchecked,QTreeView::indicator:unchecked,QTableView::indicator:unchecked,QGroupBox::indicator:unchecked{
|
|
196
|
-
image:url(:/darkstyle/icon_checkbox_unchecked.png);
|
|
197
|
-
}
|
|
198
|
-
QCheckBox::indicator:unchecked:pressed,QTreeView::indicator:unchecked:pressed,QTableView::indicator:unchecked:pressed,QGroupBox::indicator:unchecked:pressed{
|
|
199
|
-
image:url(:/darkstyle/icon_checkbox_unchecked_pressed.png);
|
|
200
|
-
}
|
|
201
|
-
QCheckBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QTableView::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled{
|
|
202
|
-
image:url(:/darkstyle/icon_checkbox_unchecked_disabled.png);
|
|
203
|
-
}
|
|
204
|
-
QCheckBox::indicator:indeterminate,QTreeView::indicator:indeterminate,QTableView::indicator:indeterminate,QGroupBox::indicator:indeterminate{
|
|
205
|
-
image:url(:/darkstyle/icon_checkbox_indeterminate.png);
|
|
206
|
-
}
|
|
207
|
-
QCheckBox::indicator:indeterminate:pressed,QTreeView::indicator:indeterminate:pressed,QTableView::indicator:indeterminate:pressed,QGroupBox::indicator:indeterminate:pressed{
|
|
208
|
-
image:url(:/darkstyle/icon_checkbox_indeterminate_pressed.png);
|
|
209
|
-
}
|
|
210
|
-
QCheckBox::indicator:indeterminate:disabled,QTreeView::indicator:indeterminate:disabled,QTableView::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled{
|
|
211
|
-
image:url(:/darkstyle/icon_checkbox_indeterminate_disabled.png);
|
|
212
|
-
}
|
|
213
|
-
QRadioButton::indicator{
|
|
214
|
-
width:18px;
|
|
215
|
-
height:18px;
|
|
216
|
-
}
|
|
217
|
-
QRadioButton::indicator:checked{
|
|
218
|
-
image:url(:/darkstyle/icon_radiobutton_checked.png);
|
|
219
|
-
}
|
|
220
|
-
QRadioButton::indicator:checked:pressed{
|
|
221
|
-
image:url(:/darkstyle/icon_radiobutton_checked_pressed.png);
|
|
222
|
-
}
|
|
223
|
-
QRadioButton::indicator:checked:disabled{
|
|
224
|
-
image:url(:/darkstyle/icon_radiobutton_checked_disabled.png);
|
|
225
|
-
}
|
|
226
|
-
QRadioButton::indicator:unchecked{
|
|
227
|
-
image:url(:/darkstyle/icon_radiobutton_unchecked.png);
|
|
228
|
-
}
|
|
229
|
-
QRadioButton::indicator:unchecked:pressed{
|
|
230
|
-
image:url(:/darkstyle/icon_radiobutton_unchecked_pressed.png);
|
|
231
|
-
}
|
|
232
|
-
QRadioButton::indicator:unchecked:disabled{
|
|
233
|
-
image:url(:/darkstyle/icon_radiobutton_unchecked_disabled.png);
|
|
234
|
-
}
|
|
235
|
-
QTreeView, QTableView{
|
|
236
|
-
alternate-background-color:palette(window);
|
|
237
|
-
background:palette(base);
|
|
238
|
-
}
|
|
239
|
-
QTreeView QHeaderView::section, QTableView QHeaderView::section{
|
|
240
|
-
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
|
|
241
|
-
border-style:none;
|
|
242
|
-
border-bottom:1px solid palette(dark);
|
|
243
|
-
padding-left:5px;
|
|
244
|
-
padding-right:5px;
|
|
245
|
-
}
|
|
246
|
-
QTreeView::item:selected:disabled, QTableView::item:selected:disabled{
|
|
247
|
-
background:rgb(80,80,80);
|
|
248
|
-
}
|
|
249
|
-
QTreeView::branch{
|
|
250
|
-
background-color:palette(base);
|
|
251
|
-
}
|
|
252
|
-
QTreeView::branch:has-siblings:!adjoins-item{
|
|
253
|
-
border-image:url(:/darkstyle/icon_vline.png) 0;
|
|
254
|
-
}
|
|
255
|
-
QTreeView::branch:has-siblings:adjoins-item{
|
|
256
|
-
border-image:url(:/darkstyle/icon_branch_more.png) 0;
|
|
257
|
-
}
|
|
258
|
-
QTreeView::branch:!has-children:!has-siblings:adjoins-item{
|
|
259
|
-
border-image:url(:/darkstyle/icon_branch_end.png) 0;
|
|
260
|
-
}
|
|
261
|
-
QTreeView::branch:has-children:!has-siblings:closed,
|
|
262
|
-
QTreeView::branch:closed:has-children:has-siblings{
|
|
263
|
-
border-image:none;
|
|
264
|
-
image:url(:/darkstyle/icon_branch_closed.png);
|
|
265
|
-
}
|
|
266
|
-
QTreeView::branch:open:has-children:!has-siblings,
|
|
267
|
-
QTreeView::branch:open:has-children:has-siblings{
|
|
268
|
-
border-image:none;
|
|
269
|
-
image:url(:/darkstyle/icon_branch_open.png);
|
|
270
|
-
}
|
|
271
|
-
QScrollBar:vertical{
|
|
272
|
-
background:palette(base);
|
|
273
|
-
border-top-right-radius:2px;
|
|
274
|
-
border-bottom-right-radius:2px;
|
|
275
|
-
width:16px;
|
|
276
|
-
margin:0px;
|
|
277
|
-
}
|
|
278
|
-
QScrollBar::handle:vertical{
|
|
279
|
-
background-color:palette(alternate-base);
|
|
280
|
-
border-radius:2px;
|
|
281
|
-
min-height:20px;
|
|
282
|
-
margin:2px 4px 2px 4px;
|
|
283
|
-
}
|
|
284
|
-
QScrollBar::handle:vertical:hover{
|
|
285
|
-
background-color:palette(highlight);
|
|
286
|
-
}
|
|
287
|
-
QScrollBar::add-line:vertical{
|
|
288
|
-
background:none;
|
|
289
|
-
height:0px;
|
|
290
|
-
subcontrol-position:right;
|
|
291
|
-
subcontrol-origin:margin;
|
|
292
|
-
}
|
|
293
|
-
QScrollBar::sub-line:vertical{
|
|
294
|
-
background:none;
|
|
295
|
-
height:0px;
|
|
296
|
-
subcontrol-position:left;
|
|
297
|
-
subcontrol-origin:margin;
|
|
298
|
-
}
|
|
299
|
-
QScrollBar:horizontal{
|
|
300
|
-
background:palette(base);
|
|
301
|
-
height:16px;
|
|
302
|
-
margin:0px;
|
|
303
|
-
}
|
|
304
|
-
QScrollBar::handle:horizontal{
|
|
305
|
-
background-color:palette(alternate-base);
|
|
306
|
-
border-radius:2px;
|
|
307
|
-
min-width:20px;
|
|
308
|
-
margin:4px 2px 4px 2px;
|
|
309
|
-
}
|
|
310
|
-
QScrollBar::handle:horizontal:hover{
|
|
311
|
-
background-color:palette(highlight);
|
|
312
|
-
}
|
|
313
|
-
QScrollBar::add-line:horizontal{
|
|
314
|
-
background:none;
|
|
315
|
-
width:0px;
|
|
316
|
-
subcontrol-position:bottom;
|
|
317
|
-
subcontrol-origin:margin;
|
|
318
|
-
}
|
|
319
|
-
QScrollBar::sub-line:horizontal{
|
|
320
|
-
background:none;
|
|
321
|
-
width:0px;
|
|
322
|
-
subcontrol-position:top;
|
|
323
|
-
subcontrol-origin:margin;
|
|
324
|
-
}
|
|
325
|
-
QSlider::handle:horizontal{
|
|
326
|
-
border-radius:4px;
|
|
327
|
-
border:1px solid rgba(25,25,25,255);
|
|
328
|
-
background-color:palette(alternate-base);
|
|
329
|
-
min-height:20px;
|
|
330
|
-
margin:0 -4px;
|
|
331
|
-
}
|
|
332
|
-
QSlider::handle:horizontal:hover{
|
|
333
|
-
background:palette(highlight);
|
|
334
|
-
}
|
|
335
|
-
QSlider::add-page:horizontal{
|
|
336
|
-
background:palette(base);
|
|
337
|
-
}
|
|
338
|
-
QSlider::sub-page:horizontal{
|
|
339
|
-
background:palette(highlight);
|
|
340
|
-
}
|
|
341
|
-
QSlider::sub-page:horizontal:disabled{
|
|
342
|
-
background:rgb(80,80,80);
|
|
343
|
-
}
|
egse/styles/default.qss
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*css stylesheet file that contains all the style information*/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
QGroupBox {
|
|
5
|
-
border: 1px solid lightGray;
|
|
6
|
-
border-radius: 0px;
|
|
7
|
-
margin-top: 0px;
|
|
8
|
-
padding-top: 10px;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
QGroupBox::title {
|
|
12
|
-
background-color: transparent;
|
|
13
|
-
padding-top: 0px;
|
|
14
|
-
padding-left: 0px;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/*
|
|
18
|
-
QGroupBox#ManualModeGroupBox {
|
|
19
|
-
border: 1px solid lightGray;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
QFrame#AppFrame {
|
|
23
|
-
border: 1px solid black;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
QFrame#StatusFrame {
|
|
27
|
-
border: 1px solid red;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
QFrame#TabsFrame {
|
|
31
|
-
border: 1px solid red;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
QWidget#ManualPositions {
|
|
35
|
-
border: 0px solid green;
|
|
36
|
-
}
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
/*
|
|
40
|
-
tabs_frame.setStyleSheet("border: 1px solid orange; ")
|
|
41
|
-
states_frame.setStyleSheet("border: 1px solid green; ")
|
|
42
|
-
positions_frame.setStyleSheet("border: 1px solid blue; ")
|
|
43
|
-
toolbar_widget.setStyleSheet("border: 1px solid black; ")
|
|
44
|
-
states_widget.setStyleSheet("border: 1px solid magenta; ")
|
|
45
|
-
user_positions_widget.setStyleSheet("border: 1px solid cyan; ")
|
|
46
|
-
mach_positions_widget.setStyleSheet("border: 1px solid cyan; ")
|
|
47
|
-
atcuator_length_widget.setStyleSheet("border: 1px solid cyan; ")
|
|
48
|
-
*/
|