From c0bdf2acf7534dec3cf7f08e6f94d8b7310e4a5d Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Fri, 25 Dec 2020 13:37:57 -0500 Subject: [PATCH] macro_recorder: support serialization as well --- src/main/python/macro_recorder.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/python/macro_recorder.py b/src/main/python/macro_recorder.py index 2252da5..8840b8b 100644 --- a/src/main/python/macro_recorder.py +++ b/src/main/python/macro_recorder.py @@ -218,12 +218,7 @@ class MacroRecorder(BasicEditor): self.tabs.addTab(w, "Macro {}".format(x + 1)) # deserialize macros that came from keyboard - macros = self.keyboard.macro.split(b"\x00") - for x, tab in enumerate(self.macro_tabs): - macro = b"\x00" - if len(macros) > x: - macro = macros[x] - tab.deserialize(macro) + self.deserialize(self.keyboard.macro) self.on_change() @@ -265,7 +260,19 @@ class MacroRecorder(BasicEditor): self.keystrokes.append(keystroke) def on_change(self): - memory = 0 - for x, macro in enumerate(self.macro_tabs): - memory += len(macro.serialize()) + memory = len(self.serialize()) self.lbl_memory.setText("Memory used by macros: {}/{}".format(memory, self.keyboard.macro_memory)) + + def deserialize(self, data): + macros = data.split(b"\x00") + for x, tab in enumerate(self.macro_tabs[:self.keyboard.macro_count]): + macro = b"\x00" + if len(macros) > x: + macro = macros[x] + tab.deserialize(macro) + + def serialize(self): + data = b"" + for tab in self.macro_tabs[:self.keyboard.macro_count]: + data += tab.serialize() + b"\x00" + return data