messages now a bit different, less contructions
not constructing one for each possible message but only constructing when message happens
This commit is contained in:
parent
23c1ec33a1
commit
e3792005ba
|
@ -38,12 +38,13 @@ class Message:
|
|||
self._args = []
|
||||
|
||||
|
||||
def msg(message, params):
|
||||
def msg(message_class, params):
|
||||
def callback(event):
|
||||
message = message_class(params)
|
||||
if not issubclass(type(message), Message):
|
||||
window.console.log("Not scheduling a Message type, this will not work!")
|
||||
return lambda: None
|
||||
return
|
||||
|
||||
def callback(event):
|
||||
message.on_event(event) #message_class(event, params)
|
||||
message.on_event(event)
|
||||
update.schedule(message)
|
||||
return callback
|
||||
|
|
|
@ -55,7 +55,7 @@ class ShowEditTranslation(ClickMessage):
|
|||
translation.make_copy()
|
||||
num_clusters = len(parent.translations)
|
||||
model.modal_set(lambda: modals.edit_translation(
|
||||
translation, cidx, num_clusters, EditTranslation(translation, cidx)))
|
||||
translation, cidx, num_clusters, (EditTranslation, translation, cidx)))
|
||||
|
||||
|
||||
class ShowAddTranslation(ClickMessage):
|
||||
|
@ -68,7 +68,7 @@ class ShowAddTranslation(ClickMessage):
|
|||
translation,
|
||||
-1,
|
||||
len(chosen_sense_or_example.translations),
|
||||
AddTranslation(translation, -1, chosen_sense_or_example)))
|
||||
(AddTranslation, translation, -1, chosen_sense_or_example)))
|
||||
|
||||
|
||||
class ShowEntryLabelsEdit(ClickMessage):
|
||||
|
|
|
@ -62,7 +62,7 @@ class _ModalResetDelayed(Message):
|
|||
class ModalNotOkClose(Reset):
|
||||
def update_model(self, model):
|
||||
# msg just creates a callback, need to actually run it!
|
||||
window.setTimeout(lambda: msg(_ModalResetDelayed())(None), 100)
|
||||
window.setTimeout(lambda: msg(_ModalResetDelayed)(None), 100)
|
||||
|
||||
def data_change(self):
|
||||
return False
|
||||
|
|
|
@ -4,16 +4,16 @@ from model.tags import TAGS
|
|||
from browser import document
|
||||
|
||||
def modal_template(content, title, msg, delete_msg=None):
|
||||
reset = message.msg(message.ModalNotOkClose())
|
||||
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("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)}}, "🗑"))
|
||||
footer.append(h("label.button.warning.modal-delete", {"on": {"click": message.msg(*delete_msg)}}, "🗑"))
|
||||
|
||||
return [
|
||||
h("header", {}, [
|
||||
|
@ -35,7 +35,7 @@ def generic_list_editor(title, element_list_getter):
|
|||
for slabel in element_list_getter():
|
||||
content.append(h("label", {}, [
|
||||
h("input.list-adder-input", {"props": {"type": "text", "value": slabel}}, "")]))
|
||||
content.append(h("button", {"on": {"click": message.msg(message.AddToGenericList(element_list_getter))}}, "+"))
|
||||
content.append(h("button", {"on": {"click": message.msg(message.AddToGenericList, element_list_getter)}}, "+"))
|
||||
return content
|
||||
|
||||
|
||||
|
@ -66,11 +66,11 @@ def label_list_editor(current_labels, add_label_message_class):
|
|||
def get_new_label_type():
|
||||
select = document.getElementById("new-tag-select")
|
||||
return (select.options[select.selectedIndex].text, "")
|
||||
add_label_message_class.add_arg(get_new_label_type)
|
||||
add_label_message_class.append(get_new_label_type)
|
||||
|
||||
left = h("span", {}, "Add more!")
|
||||
center = h("select#new-tag-select", {}, [h("option", {}, ltype) for ltype in TAGS.keys()])
|
||||
right = h("button", {"style": {"float": "right"}, "on": {"click": message.msg(add_label_message_class)}}, "+")
|
||||
right = h("button", {"style": {"float": "right"}, "on": {"click": message.msg(*add_label_message_class)}}, "+")
|
||||
|
||||
content.append(split_line3(left, center, right, False))
|
||||
content.append(h("hr", {}, []))
|
||||
|
|
|
@ -20,14 +20,14 @@ def edit_translation(translation, cluster_idx, num_clusters, cls):
|
|||
content.append(split_line2("Stevilka gruce:", h("select#cluster-num", {}, options)))
|
||||
|
||||
content.append(h("h4", {}, "Tags"))
|
||||
content.extend(label_list_editor(translation.copy().tags, message.AddToLabelList(translation.copy().tags)))
|
||||
content.extend(label_list_editor(translation.copy().tags, [message.AddToLabelList, translation.copy().tags]))
|
||||
|
||||
return modal_template(content, "Translation", cls)
|
||||
|
||||
|
||||
def edit_sense_label(sense):
|
||||
content = label_list_editor(sense.copy().labels, message.AddToLabelList(sense.copy().labels))
|
||||
return modal_template(content, "Translation", message.EditSenseLabel(sense))
|
||||
content = label_list_editor(sense.copy().labels, [message.AddToLabelList, sense.copy().labels])
|
||||
return modal_template(content, "Translation", (message.EditSenseLabel, sense))
|
||||
|
||||
|
||||
def edit_example(example, sense):
|
||||
|
@ -35,7 +35,7 @@ def edit_example(example, sense):
|
|||
example = example_original.copy()
|
||||
|
||||
def role_msg(idx, role):
|
||||
return message.msg(message.ExampleRoleChange(example_original, idx, role))
|
||||
return message.msg(message.ExampleRoleChange, example_original, idx, role)
|
||||
|
||||
divs = []
|
||||
buttons_right = lambda idx: [
|
||||
|
@ -48,9 +48,9 @@ def edit_example(example, sense):
|
|||
h("span.example-component-button.example-component-none",
|
||||
{"on": {"click": role_msg(idx, "none")}}, "N"),
|
||||
h("span.example-component-button",
|
||||
{"on": {"click": message.msg(message.ExampleComponentAdd(example_original, idx))}}, "+"),
|
||||
{"on": {"click": message.msg(message.ExampleComponentAdd, example_original, idx)}}, "+"),
|
||||
h("span.example-component-button",
|
||||
{"on": {"click": message.msg(message.ExampleComponentRemove(example_original, idx))}}, "-")]
|
||||
{"on": {"click": message.msg(message.ExampleComponentRemove, example_original, idx)}}, "-")]
|
||||
|
||||
for idx, component in enumerate(example.components):
|
||||
role_txt = component.role if component.role is not None else "none"
|
||||
|
@ -71,32 +71,32 @@ def edit_example(example, sense):
|
|||
h("div.one-fifth", {}, "Cluster"),
|
||||
h("div.four-fifth", {}, show_toggle_cluster_buttons(sense, example))]))
|
||||
|
||||
return modal_template(divs, "Edit Example", message.EditExampleText(example_original))
|
||||
return modal_template(divs, "Edit Example", (message.EditExampleText, example_original))
|
||||
|
||||
|
||||
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(), message.DeleteVariants())
|
||||
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(), message.DeleteRelatedEntries())
|
||||
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(), message.DeleteEntryLabels())
|
||||
content = label_list_editor(entry.copy().labels, [message.AddToLabelList, entry.copy().labels])
|
||||
return modal_template(content, "Translation", (message.EditEntryLabels,), (message.DeleteEntryLabels,))
|
||||
|
||||
|
||||
def edit_sense_definition(sense):
|
||||
return modal_template(question("Edit sense definition", sense.definition["indicator"]), "Sense definition", message.EditSenseDefinition(sense))
|
||||
return modal_template(question("Edit sense definition", sense.definition["indicator"]), "Sense definition", (message.EditSenseDefinition, sense))
|
||||
|
||||
|
||||
def edit_comment(comment):
|
||||
return modal_template(question("Edit comment", comment), "Comment", message.EditComment(), message.DeleteComment())
|
||||
return modal_template(question("Edit comment", comment), "Comment", (message.EditComment,), (message.DeleteComment,))
|
||||
|
||||
|
||||
def do_chosen_examples(example_list, entry):
|
||||
|
@ -122,4 +122,4 @@ def do_chosen_examples(example_list, entry):
|
|||
options.append(h("label.checkable", {"attrs": {"for": id_}}, text))
|
||||
options.append(h("br", {}, []))
|
||||
|
||||
return modal_template(options, "Examples picker", message.DoChosenExamples(example_list))
|
||||
return modal_template(options, "Examples picker", (message.DoChosenExamples, example_list))
|
||||
|
|
|
@ -23,12 +23,12 @@ def show_toggle_cluster_buttons(sense, example):
|
|||
|
||||
result.append(h(tag,
|
||||
{"attrs": attrs, "style": style,
|
||||
"on": {"click": message.msg(message.ExampleClusterEdit(example, opt))}}, []))
|
||||
"on": {"click": message.msg(message.ExampleClusterEdit, example, opt)}}, []))
|
||||
|
||||
result.append(h(base_tag,
|
||||
{"attrs": {"value": "+", "type": "button"},
|
||||
"style": {"width": "1em"},
|
||||
"on": {"click": message.msg(message.ExampleClusterAdd(example))}},
|
||||
"on": {"click": message.msg(message.ExampleClusterAdd, example)}},
|
||||
[]))
|
||||
return result
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ class View:
|
|||
patch(container, self.vdom)
|
||||
|
||||
# this does not work on parent div, so attaching to document here
|
||||
document.addEventListener("keyup", msg(KeyboardPress()))
|
||||
document.addEventListener("keyup", msg(KeyboardPress))
|
||||
|
||||
def view(self, model):
|
||||
self.model = model
|
||||
|
@ -26,8 +26,8 @@ class View:
|
|||
self.vdom = new_vdom
|
||||
|
||||
def _view(self):
|
||||
return h("div", {"on": { "click": msg(Reset()) }}, [
|
||||
View.view_entry(self.model.entry, self.model),
|
||||
return h("div", {"on": { "click": msg(Reset) }}, [
|
||||
self.model.entry.view(self.model),
|
||||
h("button.blk", {"on": { "click": lambda _: check_export(self.model) } }, "CHK"),
|
||||
View.view_menu(self.model.menu_location, self.model.menu_target, self.model.entry),
|
||||
View.view_modal(self.model.modal_shown, self.model.modal)])
|
||||
|
@ -57,8 +57,8 @@ class View:
|
|||
txt_examples = "Hide examples" if model.examples_shown else "Show examples"
|
||||
txt_clusters = "Hide clusters" if model.clusters_shown else "Show clusters"
|
||||
|
||||
return [h("span.button.toggle", {"on": {"click": msg(ToggleExamples())}}, txt_examples),
|
||||
h("span.button.toggle", {"on": {"click": msg(ToggleClusters())}}, txt_clusters)]
|
||||
return [h("span.button.toggle", {"on": {"click": msg(ToggleExamples)}}, txt_examples),
|
||||
h("span.button.toggle", {"on": {"click": msg(ToggleClusters)}}, txt_clusters)]
|
||||
|
||||
|
||||
@staticmethod
|
||||
|
@ -148,7 +148,7 @@ class View:
|
|||
return h("div.example", {"style": {"display": parent_display}}, [
|
||||
h("div.example-dot", dot_attr, "▣"),
|
||||
h(example_tag, {}, [
|
||||
h("span.example-text", {"on": {"click": msg(ShowExampleMenu(example))} }, example_content),
|
||||
h("span.example-text", {"on": {"click": msg(ShowExampleMenu, example)} }, example_content),
|
||||
h("div.example-translation-list", {}, [
|
||||
h("div.example-translation", {}, View.view_translations(example.translations, example, model))]),
|
||||
h("div.example-clusters",
|
||||
|
@ -160,7 +160,7 @@ class View:
|
|||
for cluster in translations:
|
||||
result.append(h("div.translation-div-cluster", {}, [View.view_one_translation(t, model) for t in cluster]))
|
||||
|
||||
result.append(h("button.add-button", {"on": {"click": msg(ShowAddTranslation(parent))}}, "+"))
|
||||
result.append(h("button.add-button", {"on": {"click": msg(ShowAddTranslation, parent)}}, "+"))
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
|
@ -180,7 +180,7 @@ class View:
|
|||
explanation_class = ".translation-explanation" if translation.translation else ""
|
||||
elements.append(h("span{}".format(explanation_class), {}, translation.explanation))
|
||||
|
||||
return h("div.translation-div", {"on": {"click": msg(ShowTranslationMenu(translation)) }}, elements)
|
||||
return h("div.translation-div", {"on": {"click": msg(ShowTranslationMenu, translation) }}, elements)
|
||||
|
||||
|
||||
@staticmethod
|
||||
|
@ -197,26 +197,26 @@ class View:
|
|||
elif type(menu_target) is Translation:
|
||||
translation = menu_target
|
||||
return h("span.popup-menu", { "style": style }, [
|
||||
h("button.shyButton", { "on": {"click": msg(ShowEditTranslation(translation))}}, "✎"),
|
||||
h("button.shyButton", { "on": {"click": msg(MoveRight(translation))}}, "→"),
|
||||
h("button.shyButton", { "on": {"click": msg(MoveLeft(translation))}}, "←"),
|
||||
h("button.shyButton", { "on": {"click": msg(BinTranslation(translation))}}, "🗑")])
|
||||
h("button.shyButton", { "on": {"click": msg(ShowEditTranslation, translation)}}, "✎"),
|
||||
h("button.shyButton", { "on": {"click": msg(MoveRight, translation)}}, "→"),
|
||||
h("button.shyButton", { "on": {"click": msg(MoveLeft, translation)}}, "←"),
|
||||
h("button.shyButton", { "on": {"click": msg(BinTranslation, translation)}}, "🗑")])
|
||||
|
||||
elif type(menu_target) is Sense:
|
||||
sense = menu_target
|
||||
return h("span.popup-menu", { "style": style }, [
|
||||
h("button.shyButton", { "on": {"click": msg(SenseMoveUp(sense))}}, "↑"),
|
||||
h("button.shyButton", { "on": {"click": msg(SenseMoveDown(sense))}}, "↓"),
|
||||
h("button.shyButton", { "on": {"click": msg(SenseBin(sense))}}, "🗑")])
|
||||
h("button.shyButton", { "on": {"click": msg(SenseMoveUp, sense)}}, "↑"),
|
||||
h("button.shyButton", { "on": {"click": msg(SenseMoveDown, sense)}}, "↓"),
|
||||
h("button.shyButton", { "on": {"click": msg(SenseBin, sense)}}, "🗑")])
|
||||
|
||||
elif type(menu_target) is Example:
|
||||
example = menu_target
|
||||
sense = example_sense(example, entry)
|
||||
return h("span.popup-menu", { "style": style }, [
|
||||
h("button.shyButton", { "on": {"click": msg(ShowExampleEdit(example, sense))}}, "✎"),
|
||||
h("button.shyButton", { "on": {"click": msg(ExampleMoveUp(example))}}, "↑"),
|
||||
h("button.shyButton", { "on": {"click": msg(ExampleMoveDown(example))}}, "↓"),
|
||||
h("button.shyButton", { "on": {"click": msg(ExampleBin(example))}}, "🗑")])
|
||||
h("button.shyButton", { "on": {"click": msg(ShowExampleEdit, example, sense)}}, "✎"),
|
||||
h("button.shyButton", { "on": {"click": msg(ExampleMoveUp, example)}}, "↑"),
|
||||
h("button.shyButton", { "on": {"click": msg(ExampleMoveDown, example)}}, "↓"),
|
||||
h("button.shyButton", { "on": {"click": msg(ExampleBin, example)}}, "🗑")])
|
||||
else:
|
||||
console.log("Should not be heree!!")
|
||||
|
||||
|
@ -226,5 +226,5 @@ class View:
|
|||
return h("div.modal", {}, [
|
||||
h("input", { "props": {"type": "checkbox", "checked": modal_shown} }, ""),
|
||||
h("label.overlay", {}, ""),
|
||||
h("article", {"on": { "click": msg(NoReset()) }}, modal())])
|
||||
h("article", {"on": { "click": msg(NoReset) }}, modal())])
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user