diff --git a/src/export.py b/src/export.py index a4a6d4d..b7f3704 100644 --- a/src/export.py +++ b/src/export.py @@ -141,7 +141,9 @@ def export_sense(doc, sense): for example in sense.examples: example_container = example.export(doc) - export_translation_list(doc, example, example_container) + translation_container_list = doc.createElement("translationContainerList") + export_translation_list(doc, example, translation_container_list) + example_container.appendChild(translation_container_list) example_container_list.appendChild(example_container) return sense_xml diff --git a/src/model/example/example.py b/src/model/example/example.py index e33df8f..5488877 100644 --- a/src/model/example/example.py +++ b/src/model/example/example.py @@ -18,12 +18,12 @@ class Example(Data): self.components = [] self.edited = False self.newly_created = False - + # removes space from last component if multiword example def check_multiword_components(self): if self.is_multiword(): self.components[len(self.components) - 1].no_space = ComponentLexeme.LAST_COMPONENT_SPACE - + @staticmethod def new_multiword(): example = Example() @@ -32,105 +32,105 @@ class Example(Data): example.inner = MultiwordExample() example.inner.cluster = ExampleClusters.first_empty_cluster() example.inner.type = "grammaticalCombination" - + empty_component = ComponentLexeme() empty_component.role = "headword" example.components.append(empty_component) - + return example - + def import_xml(self, example_xml): - self.translations = from_container_list(example_xml.querySelectorAll("translationContainer")) - + self.translations = from_container_list(example_xml.querySelectorAll("translationContainerList translationContainer")) + if example_xml.hasAttribute("modified"): self.edited = example_xml.getAttribute("modified") == "true" - + inner_xml = example_xml.querySelector("corpusExample") if inner_xml is not None: self.inner = CorpusExample() else: - inner_xml = example_xml.querySelector("multiwordExample") + inner_xml = example_xml.querySelector("multiwordExample") self.inner = MultiwordExample() - + self.inner.import_xml(inner_xml) - + for idx, comp_xml in enumerate(inner_xml.childNodes): comp = ComponentLexeme() comp.import_xml(comp_xml) if comp.isValid(): self.components.append(comp) - + self.check_multiword_components() - + def export(self, doc): self.check_multiword_components() - + result = doc.createElement("exampleContainer") - + inner = self.inner.export(doc, self.edited) # TODO: bad quick fix for comp in self.components: inner.appendChild(comp.export(doc)) - + result.appendChild(inner) return result - + def view(self, model, sense): example_tag = "div.example-rest" if self in model.chosen_examples: example_tag += ".example-chosen" - + cluster = self.get_cluster() dot_attr = {"style": { "visibility": "visible" if cluster is None else "hidden"}} - + example_content = [] if cluster is not None: example_content.append(h("span.example-cluster", {}, str(cluster + 1))) - + example_text_inner_tag = "span.example-text-{}".format(self.get_view_type()) example_content.append(h(example_text_inner_tag, {}, self.inner.view(self.components))) - + other_attributes = self.get_other_attributes() if "frequency" in other_attributes: example_content.append(h("span.example-frequency", {}, other_attributes["frequency"])) if "logDice" in other_attributes: example_content.append(h("span.example-logdice", {}, other_attributes["logDice"])) - + parent_display = "none" if model.examples_shown or self.is_multiword() or len(self.translations) > 0: parent_display = "inherit" - + clusters_display = "inherit" if not model.clusters_shown: clusters_display = "none" - + return h("div.example", {"style": {"display": parent_display}}, [ h("div.example-dot", dot_attr, "▣"), h(example_tag, {}, [ h("span.example-text", {"on": {"click": M.msg(M.ShowExampleMenu, self)} }, example_content), h("div.example-translation-list", {}, [ h("div.example-translation", {}, View.view_translations(self.translations, self, model))]), - h("div.example-clusters", + h("div.example-clusters", {"style": {"display": clusters_display }}, show_toggle_cluster_buttons(sense, self))])]) - + def simple_view(self): return self.inner.view(self.components) - + def get_cluster(self): return self.inner.get_cluster() - + def set_cluster(self, cluster): self.inner.cluster = cluster - + def get_structure(self): return self.inner.get_structure() - + def is_collocation(self): return self.get_view_type() == 2 - + def is_multiword(self): return self.get_view_type() != 1 - + def get_view_type(self): # as per the bosses, these are the rules for different colors if type(self.inner) is CorpusExample: @@ -139,8 +139,8 @@ class Example(Data): return 2 else: return 3 - + def get_other_attributes(self): return self.inner.other_attributes - - + + diff --git a/src/model/sense.py b/src/model/sense.py index 52bbd61..e1580a9 100644 --- a/src/model/sense.py +++ b/src/model/sense.py @@ -25,7 +25,7 @@ class Sense(Data): self.labels = import_label_list("sense > labelList label", sense_xml) self.translations = from_container_list( - sense_xml.querySelectorAll("translationContainerList translationContainer")) + sense_xml.querySelectorAll('sense > translationContainerList translationContainer')) for example_xml in sense_xml.querySelectorAll("exampleContainerList exampleContainer"): example = Example() example.import_xml(example_xml) diff --git a/src/model/translation.py b/src/model/translation.py index fe9a286..e030a10 100644 --- a/src/model/translation.py +++ b/src/model/translation.py @@ -34,7 +34,6 @@ class Translation(Data): self.source = "" self.targetLang = "" self.audio = "" - self.explanation = "" self.explanationList = set() self.tags = [] @@ -82,7 +81,6 @@ class Translation(Data): # next two are not checked as the also can not be deleted via gui # result = result and self.source == "" # result = result and self.targetLang == "" - result = result and self.explanation == "" result = result and len(self.explanationList) == 0 result = result and len(self.tags) == 0 return result