diff --git a/src/calng/manual_geometry_base.py b/src/calng/manual_geometry_base.py index c80b6e081524443f28529081de1a4c0dc22f1f36..ee3748fc3eb95f5d374ba10693fe9eee3679b63f 100644 --- a/src/calng/manual_geometry_base.py +++ b/src/calng/manual_geometry_base.py @@ -112,7 +112,11 @@ class ManualGeometryBase(PythonDevice): self.KARABO_SLOT(self.requestScene) self.update_geom() plt.switch_backend("agg") + self.registerInitialFunction(self._initialization) + + def _initialization(self): self.updateState(State.ON) + self.pleaseSendYourGeometry() def requestScene(self, params): payload = Hash() @@ -132,6 +136,7 @@ class ManualGeometryBase(PythonDevice): self.reply(response) def pleaseSendYourGeometry(self): + self.update_geom() self.writeChannel("geometryOutput", Hash("pickledGeometry", self.pickled)) axis = self.geom.inspect() axis.figure.tight_layout(pad=0) @@ -152,11 +157,6 @@ class ManualGeometryBase(PythonDevice): self._prereconfigure_update_hash = config def postReconfigure(self): - if any( - path.startswith("quadrantCorners") - for path in self._prereconfigure_update_hash.getPaths() - ): - self.update_geom() del self._prereconfigure_update_hash @@ -184,6 +184,15 @@ class ManualQuadrantsGeometryBase(ManualGeometryBase): .commit(), ) + def postReconfigure(self): + if any( + path.startswith("quadrantCorners") + for path in self._prereconfigure_update_hash.getPaths() + ): + self.update_geom() + + super().postReconfigure() + def update_geom(self): self.quadrant_corners = tuple( (self.get(f"quadrantCorners.Q{q}.x"), self.get(f"quadrantCorners.Q{q}.y")) @@ -209,6 +218,12 @@ class ManualModulesGeometryBase(ManualGeometryBase): .commit(), ) + def postReconfigure(self): + if self._prereconfigure_update_hash.has("modules"): + self.update_geom() + + super().postReconfigure() + def update_geom(self): modules = self.get("modules") module_pos = [(module.get("posX"), module.get("posY")) for module in modules]