Files
SwissMX/app_config.py

107 lines
3.1 KiB
Python

#TODO:
# currently 2 settings/configs are used
# QSettings -> cat ~/.config/Paul\ Scherrer\ Institut/SwissMX.conf
# yaml -> swissmx.yaml
# QSettings are changed by program
# #yaml is fixed and not altened by program
import logging
_log = logging.getLogger(__name__)
import os
from PyQt5.QtCore import QSettings
#import yaml
#from pathlib import Path
class AppCfg(QSettings):
SKIP_ESCAPE_TRANSITIONS_IF_SAFE="escape/skip_transitions_if_safe"
BEAM_MARKER_POSITIONS="beam/marker_positions"
BEAM_SIZE="beam/size"
CRYOJET_MOTION_ENABLED="cryojet/motion_enabled"
CRYOJET_NOZZLE_OUT="cryojet/nozzle_out"
CRYOJET_NOZZLE_IN="cryojet/nozzle_in"
DELTATAU_SHOW_PLOTS="deltatau/show_plots"
DELTATAU_OMEGACOS="deltatau/omegacos"
DELTATAU_SORT_POINTS="deltatau/sort_points"
DELTATAU_VELOCITY_SCALE="deltatau/velocity_scale"
CAMERA_TRANSFORMATIONS="camera/transformations"
CAMERA_ZOOM_TO_PPM="camera/zoom_to_ppm"
EXPERIMENT_PGROUP="experiment/pgroup"
EXPERIMENT_UID="experiment/uid"
ACTIVATE_PULSE_PICKER="scanning/activate_pulse_picker"
def __init__(self):
super(AppCfg, self).__init__("PSI", "SwissMX")
keys = self.allKeys()
if AppCfg.ACTIVATE_PULSE_PICKER not in keys:
self.setValue(AppCfg.ACTIVATE_PULSE_PICKER, False)
if AppCfg.SKIP_ESCAPE_TRANSITIONS_IF_SAFE not in keys:
self.setValue(AppCfg.SKIP_ESCAPE_TRANSITIONS_IF_SAFE, False)
if "hits/marker_size" not in keys:
self.setValue("hits/marker_size", 10)
if "graphs/show_auxiliary" not in keys:
self.setValue("graphs/show_auxiliary", False)
if "graphs/auxiliary_graph_index" not in keys:
self.setValue("graphs/auxiliary_graph_index", 0)
if "scan_request/last_location" not in keys:
d10 = os.path.join(os.path.expanduser("~"), "Data10")
self.setValue("scan_request/last_location", d10)
if AppCfg.BEAM_SIZE in keys:
_log.info("setting beamsize from stored settings: {}".format(self.value(AppCfg.BEAM_SIZE)))
else:
_log.warning("beam size may not reflect reality, please check")
self.setValue(AppCfg.BEAM_SIZE, (40, 20))
def option(self,key: str) -> bool:
try:
return self.value(key, type=bool)
except:
_log.error(f"option {key} not known")
return False
def toggle_option(self,key: str):
v = self.value(key, type=bool)
self.setValue(key, not v)
self.sync()
#inst_folder = Path(__file__).absolute().parent
#config_file = inst_folder / "swissmx.yaml"
#configs = yaml.load(config_file.read_text(),Loader=yaml.FullLoader)
#endstation = configs["configure_for"]
#appsconf = configs[endstation]
#simulated = appsconf.get("simulate", False)
#logger.info(f"configuring for endstation: {endstation.upper()}")
#if simulated:
# logger.warning("SIMULATION is ACTIVE")
#css_file = inst_folder / "swissmx.css"
#def font(name: str) -> str:
# p = Path(__file__).absolute().parent / "fonts" / name
# return str(p)
#def logo(size: int = 0) -> str:
# p = Path(__file__).absolute().parent / "logos" / "logo.png"
# if size:
# p = Path(__file__).absolute().parent / "logos" / f"tell_logo_{size}x{size}.png"
# return str(p)