class Marker_Set_State: version = 1 state_attributes = ( "name", "marker_model", "curve_model", "curve_parameters", "next_marker_id", "file_path", "markers", "links", "extra_attributes", "version", ) # --------------------------------------------------------------------------- # def state_from_marker_set(self, marker_set): ms = marker_set self.name = ms.name if ms.marker_molecule: from SessionUtil.stateclasses import Model_State self.marker_model = Model_State() self.marker_model.state_from_model(ms.marker_molecule) else: self.marker_model = None if ms.curve_model: from SessionUtil.stateclasses import Model_State cm = Model_State() cm.state_from_model(ms.curve_model) self.curve_parameters = ms.curve_parameters self.curve_model = cm else: self.curve_model = None self.curve_parameters = None self.next_marker_id = ms.next_marker_id self.file_path = ms.file_path self.markers = [] for m in ms.atom_to_marker.values(): s = Marker_State() s.state_from_marker(m) self.markers.append(s) self.links = [] for l in ms.bond_to_link.values(): s = Link_State() s.state_from_link(l) self.links.append(s) if hasattr(ms, "extra_attribtues"): # from reading XML self.extra_attributes = ms.extra_attributes else: self.extra_attributes = None # --------------------------------------------------------------------------- # def create_object(self): import markerset ms = markerset.Marker_Set(self.name) ms.next_marker_id = self.next_marker_id ms.file_path = self.file_path id_to_marker = {} for m in self.markers: marker = m.create_object(ms) id_to_marker[marker.id] = marker for l in self.links: l.create_object(id_to_marker) if self.extra_attributes: ms.extra_attributes = self.extra_attributes if self.marker_model and ms.marker_molecule: self.marker_model.restore_state(ms.marker_molecule) cm = self.curve_model if cm: radius, band_length, subdivisions = self.curve_parameters ms.show_curve(radius, band_length, subdivisions) cm.restore_state(ms.curve_model) return ms