lexonomy_custom_editor/src/message/message.py

50 lines
1.3 KiB
Python
Raw Normal View History

2019-11-11 22:04:45 +00:00
from update import update
from browser import window
2019-11-11 22:04:45 +00:00
2019-11-05 21:18:20 +00:00
class Message:
def __init__(self, *args):
self._args = args
self.error = None
2019-11-05 21:18:20 +00:00
def update_model(self, model):
2019-11-11 22:04:45 +00:00
raise NotImplementedError("This message does not implement update_model method")
def on_event(self, event):
pass
def get_arg(self, n, argtype=None):
if n > len(self._args):
window.console.log("not enough arguments: {} <= {}".format(n, len(self._args)))
result = self._args[n]
if argtype is not None:
if not type(result) is argtype:
window.console.trace("Error type check!")
return None
return result
def data_change(self):
return True
def add_arg(self, arg):
self._args.append(arg)
2019-11-11 22:04:45 +00:00
def reset(self):
return True
2020-01-05 08:53:16 +00:00
def clear_args(self):
self._args = []
2019-11-11 22:04:45 +00:00
2019-11-17 20:15:35 +00:00
def msg(message, params):
if not issubclass(type(message), Message):
window.console.log("Not scheduling a Message type, this will not work!")
return lambda: None
2019-11-11 22:04:45 +00:00
def callback(event):
2019-11-17 20:15:35 +00:00
message.on_event(event) #message_class(event, params)
update.schedule(message)
2019-11-11 22:04:45 +00:00
return callback