From 3cfcef6253fe88712131dd25557df8878f3ff03c Mon Sep 17 00:00:00 2001 From: Ozbolt Menegatti Date: Sun, 17 Nov 2019 21:23:28 +0100 Subject: [PATCH] WIP: new way for making empty objects (sense, translation,...) --- src/message/show_messages.py | 4 +++- src/message/simple_edits.py | 2 +- src/model/editable.py | 6 ++++++ src/model/sense.py | 8 -------- src/model/translation.py | 9 ++++----- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/message/show_messages.py b/src/message/show_messages.py index 6345208..f32e973 100644 --- a/src/message/show_messages.py +++ b/src/message/show_messages.py @@ -98,8 +98,10 @@ class ShowAddTranslation(GenericShowModal): for sense in model.entry.senses: if sense == chosen_sense: + translation = Translation.new_empty() + translation.make_copy() model.modal = lambda: modals.edit_translation( - sense, -1, len(sense.translations), AddTranslation, sense) + translation, -1, len(sense.translations), AddTranslation(translation, -1, sense)) return console.log("Should not be here!") diff --git a/src/message/simple_edits.py b/src/message/simple_edits.py index a04955a..4728382 100644 --- a/src/message/simple_edits.py +++ b/src/message/simple_edits.py @@ -56,7 +56,7 @@ class EditExampleTranslation(Message): class AddSense(SimpleEditMessage): def update_model(self, model): - sense = self.prop + sense = Sense.new_empty() sense.labels = [self.new_text] model.entry.senses.append(sense) diff --git a/src/model/editable.py b/src/model/editable.py index 1d183e6..345dcc9 100644 --- a/src/model/editable.py +++ b/src/model/editable.py @@ -1,3 +1,6 @@ +empty_doc = __new__(DOMParser()).parseFromString("", "text/xml") + + class Editable: def make_copy(self): # makes an internal copy of self @@ -25,3 +28,6 @@ class Editable: self._copy = None + @classmethod + def new_empty(cls): + return cls(empty_doc) diff --git a/src/model/sense.py b/src/model/sense.py index fc74977..a4c53b5 100644 --- a/src/model/sense.py +++ b/src/model/sense.py @@ -24,11 +24,3 @@ class Sense(Editable): self.translations = [[] for _ in range(max_num_cluster)] for clusterNum, translation in translations: self.translations[clusterNum - 1].append(translation) - - -class NewSense(Sense): - def __init__(self): - self.translations = [] - self.labels = [] - self.definition = [] - self.examples= [] diff --git a/src/model/translation.py b/src/model/translation.py index 4636cc0..1895951 100644 --- a/src/model/translation.py +++ b/src/model/translation.py @@ -6,7 +6,10 @@ TAGS = { } -class Translation: +from model.editable import Editable + + +class Translation(Editable): def __init__(self, translation_xml): translation = translation_xml.querySelector("translation") self.translation = translation.textContent if translation else "" @@ -22,8 +25,4 @@ class Translation: self.tags[t_type] = t_value -class NewTranslation(Translation): - def __init__(self): - self.translation = "" - self.tags = {}