refactored decide functions
This commit is contained in:
@ -10,41 +10,41 @@ def get_src(pvname, cls):
|
||||
src = src_cache[pvname]
|
||||
assert isinstance(src, cls)
|
||||
except KeyError:
|
||||
src = cls(pvname)
|
||||
src_cache[pvname] = src
|
||||
src = src_cache[pvname] = cls(pvname)
|
||||
return src
|
||||
|
||||
|
||||
def decide_src_plt(pvname):
|
||||
pvname = pvname.upper()
|
||||
Src = decide_src_type(pvname)
|
||||
src = get_src(pvname, Src)
|
||||
if not src.is_connected:
|
||||
raise RuntimeError(f"{pvname} is not connected")
|
||||
|
||||
if pvname.endswith(":FPICTURE"):
|
||||
print("Camera", pvname)
|
||||
src = get_src(pvname, Camera)
|
||||
plt = Plot2D
|
||||
if not src.is_connected:
|
||||
raise RuntimeError(f"{pvname} is not connected")
|
||||
Plt = decide_plt_type(src)
|
||||
plt = Plt(name=pvname)
|
||||
|
||||
else:
|
||||
print("Source", pvname)
|
||||
src = get_src(pvname, Source)
|
||||
if not src.is_connected:
|
||||
raise RuntimeError(f"{pvname} is not connected")
|
||||
print(src.nelm)
|
||||
if src.nelm == 0:
|
||||
raise RuntimeError(f"{src}: {src.value}")
|
||||
|
||||
if src.nelm == 1:
|
||||
print("Scalar")
|
||||
plt = Plot0D
|
||||
else:
|
||||
print("Curve")
|
||||
plt = Plot1D
|
||||
|
||||
plt = plt(name=pvname)
|
||||
return src, plt
|
||||
|
||||
|
||||
def decide_src_type(pvname):
|
||||
if pvname.endswith(":FPICTURE"):
|
||||
return Camera
|
||||
return Source
|
||||
|
||||
|
||||
def decide_plt_type(src):
|
||||
if isinstance(src, Camera):
|
||||
return Plot2D
|
||||
|
||||
nelm = src.nelm
|
||||
if nelm == 1:
|
||||
return Plot0D
|
||||
elif nelm > 1:
|
||||
return Plot1D
|
||||
|
||||
raise RuntimeError(f"Cannot decide plot type for {src}: {src.value}")
|
||||
|
||||
|
||||
|
||||
class Actor:
|
||||
|
||||
|
Reference in New Issue
Block a user