diff --git a/src/export.py b/src/export.py index b22dfd0..6238e7d 100644 --- a/src/export.py +++ b/src/export.py @@ -63,6 +63,14 @@ def export_entry(entry): variant = doc.createElement("variant") variant.textContent = v variants.appendChild(variant) + + relist = doc.createElement("relatedEntryList") + head.appendChild(relist) + + for re in entry.related_entries: + relateEntry = doc.createElement("relatedEntry") + relateEntry.textContent = re + relist.appendChild(relateEntry) head.appendChild(_export_label_list(doc, entry.labels)) diff --git a/src/message/__init__.py b/src/message/__init__.py index 11530dd..9e37968 100644 --- a/src/message/__init__.py +++ b/src/message/__init__.py @@ -1,7 +1,7 @@ from message.simple_messages import NoReset, Reset, ModalNotOkClose, ClickMessage, DataChgClickMessage, KeyboardPress from message.translation_edit import EditTranslation, MoveRight, MoveLeft, BinTranslation -from message.show_messages import ShowEntryLabelsEdit, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowExampleEdit, ShowExampleTranslationEdit, ShowVariantsEdit -from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample, AddExampleTranslation, EditExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditEntryLabels +from message.show_messages import ShowEntryLabelsEdit, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowExampleEdit, ShowExampleTranslationEdit, ShowVariantsEdit, ShowRelatedEntriesEdit +from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample, AddExampleTranslation, EditExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditRelatedEntries, EditEntryLabel from message.show_menu import ShowTranslationMenu, ShowSenseMenu, ShowExampleMenu from message.sense_edit import SenseMoveUp, SenseMoveDown, SenseBin diff --git a/src/message/show_messages.py b/src/message/show_messages.py index 8d1c16c..a2fad15 100644 --- a/src/message/show_messages.py +++ b/src/message/show_messages.py @@ -31,6 +31,12 @@ class ShowVariantsEdit(ClickMessage): model.modal_set(lambda: modals.edit_variants(model.entry)) +class ShowRelatedEntriesEdit(ClickMessage): + def update_model(self, model): + model.entry.make_copy() + model.modal_set(lambda: modals.edit_related_entries(model.entry)) + + class ShowExampleEdit(KeyPlusClickMessage): def update_model_default(self, model): example = self.get_arg(0, Example) diff --git a/src/message/simple_edits.py b/src/message/simple_edits.py index 7b87ae8..606d659 100644 --- a/src/message/simple_edits.py +++ b/src/message/simple_edits.py @@ -93,6 +93,12 @@ class EditVariants(Message): def update_model(self, model): variants = common_accessors.generic_list_getter() model.entry.variants = variants + + +class EditRelatedEntries(Message): + def update_model(self, model): + related_entries = common_accessors.generic_list_getter() + model.entry.related_entries = related_entries class EditEntryLabels(Message): diff --git a/src/model/entry.py b/src/model/entry.py index 17488f6..0b99bb9 100644 --- a/src/model/entry.py +++ b/src/model/entry.py @@ -14,6 +14,7 @@ class Entry(Editable): self.grammar = grammar.textContent if grammar else "" self.comment = comment.textContent if comment else "" self.variants = [v.textContent for v in entry_xml.querySelectorAll("head variantList variant")] + self.related_entries = [re.textContent for re in entry_xml.querySelectorAll("head relatedEntryList relatedEntry")] self.lexical_unit = {} lex_unit = entry_xml.querySelector("lexical_unit lexeme,lexicalUnit lexeme") diff --git a/src/view/modals.py b/src/view/modals.py index d5e8919..433a10e 100644 --- a/src/view/modals.py +++ b/src/view/modals.py @@ -43,6 +43,12 @@ def edit_variants(entry): return modal_template(content, "Add or remove variants", message.EditVariants()) +def edit_related_entries(entry): + reget = lambda: entry.copy().related_entries + content = generic_list_editor("Related entries", reget) + return modal_template(content, "Add or remove related entries", message.EditRelatedEntries()) + + def edit_entry_labels(entry): content = label_list_editor(entry.copy().labels, message.AddToLabelList(entry.copy().labels)) return modal_template(content, "Translation", message.EditEntryLabels()) diff --git a/src/view/view.py b/src/view/view.py index db29ebc..92e9466 100644 --- a/src/view/view.py +++ b/src/view/view.py @@ -49,8 +49,9 @@ class View: clk = lambda cls: {"on": {"click": msg(cls)}} buttons = [ h("button.normal", clk(ShowVariantsEdit()), "Variants"), + h("button.success", clk(ShowRelatedEntriesEdit()), "Povezano"), h("button.success", clk(ShowEntryLabelsEdit()), "Labels"), - h("button.warning", clk(ShowCommentEdit()), "Comment")] + h("button.normal", clk(ShowCommentEdit()), "Comment")] view_buttons = [] view_table = [] @@ -60,16 +61,21 @@ class View: else: view_table.append((buttons[0], ", ".join(entry.variants))) - if len(entry.labels) == 0: + if len(entry.related_entries) == 0: view_buttons.append(buttons[1]) + else: + view_table.append((buttons[1], ", ".join(entry.related_entries))) + + if len(entry.labels) == 0: + view_buttons.append(buttons[2]) else: labels = ", ".join([clean_label(val) for _, val in entry.labels]) - view_table.append((buttons[1], labels)) + view_table.append((buttons[2], labels)) if entry.comment == "": - view_buttons.append(buttons[2]) + view_buttons.append(buttons[3]) else: - view_table.append((buttons[2], entry.comment)) + view_table.append((buttons[3], entry.comment)) table_rows = [ h("tr", {}, [ h("td", {}, btn), h("td", {}, content)])