diff --git a/src/main/python/keyboard_comm.py b/src/main/python/keyboard_comm.py index 90b9ecc..f1b1b06 100644 --- a/src/main/python/keyboard_comm.py +++ b/src/main/python/keyboard_comm.py @@ -58,6 +58,7 @@ class Keyboard: self.encoders = [] self.macro_count = 0 self.macro_memory = 0 + self.uid = 0 self.macro = b"" self.vibl = False @@ -71,6 +72,7 @@ class Keyboard: self.layout = dict() self.encoder_layout = dict() + self.uid = struct.unpack(">Q", self.get_uid())[0] self.reload_layout(sideload_json) self.reload_layers() self.reload_keymap() @@ -247,9 +249,7 @@ class Keyboard: def save_layout(self): """ Serializes current layout to a binary """ - # TODO: increase version before release - # TODO: store keyboard UID here as well - data = {"version": 0} + data = {"version": 1, "uid": self.uid} layout = [] for l in range(self.layers): diff --git a/src/main/python/keyboard_container.py b/src/main/python/keyboard_container.py index 7801064..e8d7b3f 100644 --- a/src/main/python/keyboard_container.py +++ b/src/main/python/keyboard_container.py @@ -1,7 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-or-later +import json from PyQt5.QtCore import pyqtSignal, Qt -from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout, QPushButton, QApplication +from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout, QPushButton, QApplication, QMessageBox from PyQt5.QtGui import QPalette from clickable_label import ClickableLabel @@ -167,6 +168,12 @@ class KeyboardContainer(QWidget): return self.keyboard.save_layout() def restore_layout(self, data): + if json.loads(data.decode("utf-8")).get("uid") != self.keyboard.uid: + ret = QMessageBox.question(self, "", tr("KeyboardContainer", "Saved keymap belongs to a different keyboard," + " are you sure you want to continue?"), + QMessageBox.Yes | QMessageBox.No) + if ret != QMessageBox.Yes: + return self.keyboard.restore_layout(data) self.refresh_layer_display()