From e2d7c92854aec1a7356878108781fa7be66d0697 Mon Sep 17 00:00:00 2001 From: Kirpal Demian Date: Sat, 21 Apr 2018 14:26:24 -0400 Subject: [PATCH] Fixed key rotation issues (fixes #36 and #37) --- import_keyboard.py | 61 +++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/import_keyboard.py b/import_keyboard.py index 398ca4c..efe6c96 100644 --- a/import_keyboard.py +++ b/import_keyboard.py @@ -182,12 +182,12 @@ def getKey(filePath): # add list of keyboard rows keyboard["rows"] = [] keyboard["keyCount"] = 0 - y = 0 + 0.05 + y = 0 # default align align = 4 # iterate over rows for rowNum, row in enumerate(layout): - x = 0.05 + x = 0 # add empty row keyboard["rows"].append([]) # check if item is a row or if it is a dict of keyboard properties @@ -218,23 +218,21 @@ def getKey(filePath): rowData["y"] += prev["y"] y += prev["y"] if "w" in prev: - key["w"] = prev["w"] - 0.05 + key["w"] = prev["w"] else: - key["w"] = 1 - 0.05 + key["w"] = 1 if "h" in prev: key["h"] = prev["h"] else: key["h"] = 1 - if key["h"] > 1: - key["h"] += (int(key["h"])-1) * 0.05 if "x2" in prev: key["x2"] = prev["x2"] if "y2" in prev: key["y2"] = prev["y2"] if "w2" in prev: - key["w2"] = prev["w2"] - 0.05 + key["w2"] = prev["w2"] if "h2" in prev: - key["h2"] = prev["h2"] - 0.05 + key["h2"] = prev["h2"] if "l" in prev: key["l"] = prev["l"] if "n" in prev: @@ -267,10 +265,30 @@ def getKey(filePath): if "rx" in prev: rowData["rx"] = prev["rx"] if "ry" in prev: - rowData["ry2"] = prev["ry"] - rowData["ry"] = prev["ry"] - elif "ry" in rowData and "r" in prev: - rowData["ry2"] = rowData["ry"] + if "yCoord" in rowData: + rowData["ry"] = prev["ry"] + rowData["y"] = prev["ry"] + rowData["yCoord"] + y = prev["ry"] + rowData["yCoord"] + else: + rowData["ry"] = prev["ry"] + rowData["y"] = prev["ry"] + y = prev["ry"] + elif "r" in prev and "ry" in rowData: + if "yCoord" in rowData: + rowData["y"] = rowData["ry"] + rowData["yCoord"] + y = rowData["ry"] + rowData["yCoord"] + else: + rowData["y"] = rowData["ry"] + y = rowData["ry"] + elif "r" in prev: + if "yCoord" in rowData: + rowData["ry"] = 0 + rowData["y"] = rowData["yCoord"] + y = rowData["yCoord"] + else: + rowData["ry"] = 0 + rowData["y"] = 0 + y = 0 # if rowData has property set then add it to key if "a" in rowData: @@ -280,7 +298,7 @@ def getKey(filePath): else: key["xCoord"] = 0 key["d"] = False - key["w"] = 1 - 0.05 + key["w"] = 1 key["h"] = 1 # if rowData has property set then add it to key @@ -312,11 +330,6 @@ def getKey(filePath): key["rx"] = rowData["rx"] if "ry" in rowData: key["ry"] = rowData["ry"] - if "ry2" in rowData: - if "yCoord" in rowData: - key["ry2"] = rowData["ry2"] + rowData["yCoord"] - else: - key["ry2"] = rowData["ry2"] if "p" not in rowData: key["p"] = fallbackProfile @@ -339,16 +352,12 @@ def getKey(filePath): if "rx" in key: key["x"] += key["rx"] - if "ry2" in key: - key["y"] = key["ry2"] # add the key to the current row keyboard["rows"][key["row"]].append(key) keyboard["keyCount"] += 1 - x += key["w"] + 0.05 - y += 1 + 0.05 - if "ry2" in key: - rowData["ry2"] += 1 + x += key["w"] + y += 1 else: # if the current item is a dict then add the backcolor property to # the keyboard @@ -484,7 +493,7 @@ def read(filepath): boxHeight = key["h"] - (alignLegendsProfile( key["p"])[1] + alignLegendsProfile(key["p"])[3]) - boxWidth = key["w"] - 0.05 - (alignLegendsProfile( + boxWidth = key["w"] - (alignLegendsProfile( key["p"])[0] + alignLegendsProfile(key["p"])[2]) new_label.data.text_boxes[0].width = boxWidth @@ -578,6 +587,8 @@ def read(filepath): # iterate over keys in row for key in row: if key["d"] is False: + key["w"] -= 0.05 + key["h"] -= 0.05 if key["c"] not in bpy.data.materials: # new material for key m = Material()