def from_xml_tag(self, root: ET.Element, read_bits=False, participants=None, decodings=None): if not root: return None if root.find("modulators") and hasattr(self, "modulators"): self.modulators[:] = [] for mod_tag in root.find("modulators").findall("modulator"): self.modulators.append(Modulator.from_xml(mod_tag)) decoders = self.read_decoders_from_xml_tag( root) if decodings is None else decodings if participants is None: participants = self.read_participants_from_xml_tag(root) if read_bits: self.messages[:] = [] try: message_types = [] for message_type_tag in root.find("message_types").findall( "message_type"): message_types.append(MessageType.from_xml(message_type_tag)) except AttributeError: message_types = [] for message_type in message_types: if message_type not in self.message_types: self.message_types.append(message_type) try: message_tags = root.find("messages").findall("message") for i, message_tag in enumerate(message_tags): if read_bits: message = Message.from_plain_bits_str( bits=message_tag.get("bits")) message.from_xml(tag=message_tag, participants=participants, decoders=decoders, message_types=self.message_types) self.messages.append(message) else: try: self.messages[i].from_xml( tag=message_tag, participants=participants, decoders=decoders, message_types=self.message_types) except IndexError: pass # Part of signal was copied in last session but signal was not saved except AttributeError: pass
def read_modulators_from_project_file(self): """ :rtype: list of Modulator """ if not self.project_file: return [] tree = ET.parse(self.project_file) root = tree.getroot() result = [] for mod_tag in root.iter("modulator"): result.append(Modulator.from_xml(mod_tag)) return result
def read_modulators_from_project_file(self): """ :rtype: list of Modulator """ if not self.project_file: return [] tree = ET.parse(self.project_file) root = tree.getroot() result = [] for mod_tag in root.iter("modulator"): result.append(Modulator.from_xml(mod_tag)) return result
def from_xml_tag(self, root: ET.Element, read_bits=False, participants=None, decodings=None): if not root: return None if root.find("modulators") and hasattr(self, "modulators"): self.modulators[:] = [] for mod_tag in root.find("modulators").findall("modulator"): self.modulators.append(Modulator.from_xml(mod_tag)) decoders = self.read_decoders_from_xml_tag(root) if decodings is None else decodings if participants is None: participants = self.read_participants_from_xml_tag(root) if read_bits: self.messages[:] = [] try: message_types = [] for message_type_tag in root.find("message_types").findall("message_type"): message_types.append(MessageType.from_xml(message_type_tag)) except AttributeError: message_types = [] for message_type in message_types: if message_type not in self.message_types: self.message_types.append(message_type) try: message_tags = root.find("messages").findall("message") for i, message_tag in enumerate(message_tags): if read_bits: message = Message.from_plain_bits_str(bits=message_tag.get("bits")) message.from_xml(tag=message_tag, participants=participants, decoders=decoders, message_types=self.message_types) self.messages.append(message) else: try: self.messages[i].from_xml(tag=message_tag, participants=participants, decoders=decoders, message_types=self.message_types) except IndexError: pass # Part of signal was copied in last session but signal was not saved except AttributeError: pass