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]