diff --git a/res/main.less b/res/main.less index 01cd715..42d005a 100644 --- a/res/main.less +++ b/res/main.less @@ -191,6 +191,11 @@ } } +.modal-delete { + float: right; + margin-right: 1em; +} + // TODO: // #log { // overflow: scroll; diff --git a/src/message/__init__.py b/src/message/__init__.py index 9e37968..b7c4002 100644 --- a/src/message/__init__.py +++ b/src/message/__init__.py @@ -1,9 +1,10 @@ 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, ShowRelatedEntriesEdit -from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample, AddExampleTranslation, EditExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditRelatedEntries, EditEntryLabel +from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample, AddExampleTranslation, EditExampleTranslation, DoChosenExamples, AddToLabelList, AddToGenericList, EditVariants, EditRelatedEntries, EditEntryLabels from message.show_menu import ShowTranslationMenu, ShowSenseMenu, ShowExampleMenu from message.sense_edit import SenseMoveUp, SenseMoveDown, SenseBin +from message.delete_messages import DeleteComment, DeleteVariants, DeleteRelatedEntries, DeleteEntryLabels from message.message import msg diff --git a/src/message/delete_messages.py b/src/message/delete_messages.py new file mode 100644 index 0000000..5e638ac --- /dev/null +++ b/src/message/delete_messages.py @@ -0,0 +1,21 @@ +from message.message import Message + + +class DeleteComment(Message): + def update_model(self, model): + model.entry.comment = "" + + +class DeleteVariants(Message): + def update_model(self, model): + model.entry.variants = [] + + +class DeleteRelatedEntries(Message): + def update_model(self, model): + model.entry.related_entries = [] + + +class DeleteEntryLabels(Message): + def update_model(self, model): + model.entry.labels = [] diff --git a/src/view/modal_templates.py b/src/view/modal_templates.py index 17a6b1e..00110c1 100644 --- a/src/view/modal_templates.py +++ b/src/view/modal_templates.py @@ -3,13 +3,17 @@ from lib.snabbdom import h from model.tags import TAGS from browser import document -def modal_template(content, title, msg): +def modal_template(content, title, msg, delete_msg=None): reset = message.msg(message.ModalNotOkClose()) footer = [] + if msg is not None: footer.append(h("a#modal-ok.button", {"on": {"click": message.msg(msg)}}, "OK")) + footer.append(h("label.button.dangerous", {"on": {"click": reset}}, "Cancel")) + if delete_msg is not None: + footer.append(h("label.button.warning.modal-delete", {"on": {"click": message.msg(delete_msg)}}, "🗑")) return [ h("header", {}, [ diff --git a/src/view/modals.py b/src/view/modals.py index 433a10e..1f75b9f 100644 --- a/src/view/modals.py +++ b/src/view/modals.py @@ -40,18 +40,18 @@ def edit_example(example): def edit_variants(entry): vget = lambda: entry.copy().variants content = generic_list_editor("Variants", vget) - return modal_template(content, "Add or remove variants", message.EditVariants()) + return modal_template(content, "Add or remove variants", message.EditVariants(), message.DeleteVariants()) 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()) + return modal_template(content, "Add or remove related entries", message.EditRelatedEntries(), message.DeleteRelatedEntries()) def edit_entry_labels(entry): content = label_list_editor(entry.copy().labels, message.AddToLabelList(entry.copy().labels)) - return modal_template(content, "Translation", message.EditEntryLabels()) + return modal_template(content, "Translation", message.EditEntryLabels(), message.DeleteEntryLabels()) def edit_sense_definition(sense): @@ -59,7 +59,7 @@ def edit_sense_definition(sense): def edit_comment(comment): - return modal_template(question("Edit comment", comment), "Comment", message.EditComment()) + return modal_template(question("Edit comment", comment), "Comment", message.EditComment(), message.DeleteComment()) def do_chosen_examples(example_list, entry):