From f95acb6b98e405b47866c8b87a2ccae5326e29ea Mon Sep 17 00:00:00 2001 From: Darcy Date: Fri, 18 Sep 2020 11:00:49 +0700 Subject: [PATCH] fix(linux/config): Display dialog when metadata is invalid --- .../keyman-config/keyman_config/keyboard_details.py | 12 +++++++++++- linux/keyman-config/keyman_config/kmpmetadata.py | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/linux/keyman-config/keyman_config/keyboard_details.py b/linux/keyman-config/keyman_config/keyboard_details.py index bfaaa189c5..56feb6157c 100644 --- a/linux/keyman-config/keyman_config/keyboard_details.py +++ b/linux/keyman-config/keyman_config/keyboard_details.py @@ -45,7 +45,17 @@ class KeyboardDetailsView(Gtk.Dialog): info, system, options, keyboards, files = parsemetadata(kmp_json) if info is None: - raise Exception(_("could not parse kmp.json"), kmp['packageID'], packageDir, kmp_json) + # Dialog when invalid metadata + self.add_button(_("_Close"), Gtk.ResponseType.CLOSE) + grid = Gtk.Grid() + self.get_content_area().pack_start(grid, True, True, 12) + lbl_invalid_metadata = Gtk.Label() + lbl_invalid_metadata.set_text(_("ERROR: Could not parse kmp.json in " + packageDir)) + lbl_invalid_metadata.set_halign(Gtk.Align.END) + grid.add(lbl_invalid_metadata) + self.resize(700, 200) + self.show_all() + return kbdata = None jsonfile = os.path.join(packageDir, kmp['packageID'] + ".json") diff --git a/linux/keyman-config/keyman_config/kmpmetadata.py b/linux/keyman-config/keyman_config/kmpmetadata.py index cc9abeeaa3..2b48d9b8ab 100755 --- a/linux/keyman-config/keyman_config/kmpmetadata.py +++ b/linux/keyman-config/keyman_config/kmpmetadata.py @@ -446,7 +446,11 @@ def parsemetadata(jsonfile, verbose=False): data = json.load(read_file) except JSONDecodeError as e: logging.error("parsemetadata: " + jsonfile + " invalid") - sys.exit(1) + # Use empty details + data = {"nonexistent": "none"} + keyboards = [] + files = [] + for x in data: if x == 'info': info = data[x]