diff --git a/radio/util/addtr.py b/radio/util/addtr.py index 9081a6235..d31ca3ad8 100755 --- a/radio/util/addtr.py +++ b/radio/util/addtr.py @@ -8,12 +8,14 @@ import glob def addLine(filename, newline, after): print(filename, newline) - lines = file(filename, 'r').readlines() + with open(filename, 'r') as f: + lines = f.readlines() for i, line in enumerate(lines): if after in line: lines.insert(i + 1, newline + '\n') break - file(filename, 'w').writelines(lines) + with open(filename, 'w') as f: + f.writelines(lines) def modifyTranslations(constant, translation, after): diff --git a/radio/util/bin2lbm.py b/radio/util/bin2lbm.py index c86e51c21..f34999b34 100755 --- a/radio/util/bin2lbm.py +++ b/radio/util/bin2lbm.py @@ -1,22 +1,20 @@ #!/usr/bin/env python +from __future__ import division import sys filename = sys.argv[1] fileout = sys.argv[2] -fr = open(filename, "rb") -fw = open(fileout, "w") +# Read entire file +with open(filename, "rb") as fr: + sts = fr.read() +# Parse into chunks of 16 bytes +sts = [sts[i * 16:(i + 1) * 16] for i in range(len(sts) // 16)] -st = fr.read(16) - -while st: - for b in st: - fw.write("0x%02x," % ord(b)) +with open(fileout, "w") as fw: + for st in sts: + for b in st: + fw.write("0x%02x," % ord(b)) + fw.write("\n") fw.write("\n") - st = fr.read(16) - -fw.write("\n") - -fw.close() -fr.close() diff --git a/radio/util/copyright.py b/radio/util/copyright.py index 4a2c0643f..13f25cb2b 100755 --- a/radio/util/copyright.py +++ b/radio/util/copyright.py @@ -13,9 +13,8 @@ def writeheader(filename, header): header should be a list of strings skip should be a regex """ - f = open(filename,"r") - inpt =f.readlines() - f.close() + with open(filename, "r") as f: + inpt = f.readlines() output = [] # comment out the next 3 lines if you don't wish to preserve shebangs @@ -36,18 +35,16 @@ def writeheader(filename, header): for line in inpt: output.append(line) try: - f = open(filename,'w') - f.writelines(output) - f.close() + with open(filename, 'w') as f: + f.writelines(output) print("added header to %s" % filename) except IOError as err: print("something went wrong trying to add header to %s: %s" % (filename, err)) def main(args=sys.argv): - headerfile = open(args[1]) - header = headerfile.readlines() - headerfile.close() + with open(args[1]) as headerfile: + header = headerfile.readlines() writeheader(args[2], header) diff --git a/radio/util/font2png.py b/radio/util/font2png.py index dd18d5875..302ed6659 100755 --- a/radio/util/font2png.py +++ b/radio/util/font2png.py @@ -88,15 +88,14 @@ def createFontBitmap(filename, fontname, fontsize, fontbold, foreground, backgro painter.end() image.save(filename + ".png") if coordsfile: - f = file(filename + ".specs", "w") - f.write("{ ") - f.write(",".join(str(tmp) for tmp in coords)) - if extraWidth: - for i in range(1, 14): - f.write(", %d" % (int(coords[-1]) + i * (extraWidth / 12))) - # f.write(file("fonts/extra_%dpx.specs" % fontsize).read()) - f.write(" }") - f.close() + with open(filename + ".specs", "w") as f: + f.write("{ ") + f.write(",".join(str(tmp) for tmp in coords)) + if extraWidth: + for i in range(1, 14): + f.write(", %d" % (int(coords[-1]) + i * (extraWidth / 12))) + # f.write(file("fonts/extra_%dpx.specs" % fontsize).read()) + f.write(" }") return coords if __name__ == "__main__": diff --git a/radio/util/img2lbm.py b/radio/util/img2lbm.py index 0e4d5f39e..56bc9e1ff 100755 --- a/radio/util/img2lbm.py +++ b/radio/util/img2lbm.py @@ -16,140 +16,139 @@ def writeSize(f, width, height): f.write("%d,%d,\n" % (width, height)) -f = open(sys.argv[2], "w") +with open(sys.argv[2], "w") as f: + lcdwidth = int(sys.argv[3]) -lcdwidth = int(sys.argv[3]) + if len(sys.argv) > 4: + what = sys.argv[4] + else: + for s in ("03x05", "04x06", "05x07", "08x10", "10x14", "22x38"): + if s in sys.argv[2]: + what = s + break -if len(sys.argv) > 4: - what = sys.argv[4] -else: - for s in ("03x05", "04x06", "05x07", "08x10", "10x14", "22x38"): - if s in sys.argv[2]: - what = s - break - -if what == "1bit": - rows = 1 - if len(sys.argv) > 5: - rows = int(sys.argv[5]) - writeSize(f, width, height // rows) - for y in range(0, height, 8): - for x in range(width): - value = 0 - for z in range(8): - if y + z < height and image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): - value += 1 << z - f.write("0x%02x," % value) - f.write("\n") -elif what == "4/4/4/4": - colors = [] - f.write("%d,%d,\n" % (width, height)) - for y in range(height): - for x in range(width): - pixel = image.pixel(x, y) - f.write("0x%1x%1x%1x%1x," % (Qt.qAlpha(pixel) // 16, Qt.qRed(pixel) // 16, Qt.qGreen(pixel) // 16, Qt.qBlue(pixel) // 16)) - f.write("\n") -elif what == "5/6/5/8": - colors = [] - writeSize(f, width, height) - for y in range(height): - for x in range(width): - pixel = image.pixel(x, y) - val = ((Qt.qRed(pixel) >> 3) << 11) + ((Qt.qGreen(pixel) >> 2) << 5) + ((Qt.qBlue(pixel) >> 3) << 0) - # f.write("%d,%d,%d," % (val%256, val/256, Qt.qAlpha(pixel) >> 4)) - f.write("%d,%d," % (val % 256, val // 256)) - f.write("\n") -elif what == "4bits": - colors = [] - writeSize(f, width, height) - for y in range(0, height, 2): - for x in range(width): - value = 0xFF - gray1 = Qt.qGray(image.pixel(x, y)) - if y + 1 < height: - gray2 = Qt.qGray(image.pixel(x, y + 1)) - else: - gray2 = Qt.qRgb(255, 255, 255) - for i in range(4): - if (gray1 & (1 << (4 + i))): - value -= 1 << i - if (gray2 & (1 << (4 + i))): - value -= 1 << (4 + i) - f.write("0x%02x," % value) - f.write("\n") -elif what == "8bits": - colors = [] - writeSize(f, width, height) - for y in range(height): - for x in range(width): - value = Qt.qGray(image.pixel(x, y)) - value = 0x0f - (value >> 4) - f.write("0x%02x," % value) - f.write("\n") -elif what == "03x05": - for y in range(0, height, 5): - for x in range(width): - value = 0 - for z in range(5): - if image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): - value += 1 << z - f.write("0x%02x," % value) - f.write("\n") -elif what == "04x06": - for y in range(0, height, 7): - for x in range(width): - value = 0 - for z in range(7): - if image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): - value += 1 << z - if value == 0x7f: - value = 0xff - f.write("0x%02x," % value) - f.write("\n") -elif what == "05x07": - for y in range(0, height, 8): - for x in range(width): - value = 0 - for z in range(8): - if image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): - value += 1 << z - f.write("0x%02x," % value) - f.write("\n") -elif what == "08x10": - for y in range(0, height, 12): - for x in range(width): - skip = True - for l in range(0, 12, 8): + if what == "1bit": + rows = 1 + if len(sys.argv) > 5: + rows = int(sys.argv[5]) + writeSize(f, width, height // rows) + for y in range(0, height, 8): + for x in range(width): value = 0 for z in range(8): - if l + z < 12: - if image.pixel(x, y + l + z) == Qt.qRgb(0, 0, 0): - value += 1 << z - else: - skip = False - if skip and l == 8: + if y + z < height and image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): + value += 1 << z + f.write("0x%02x," % value) + f.write("\n") + elif what == "4/4/4/4": + colors = [] + f.write("%d,%d,\n" % (width, height)) + for y in range(height): + for x in range(width): + pixel = image.pixel(x, y) + f.write("0x%1x%1x%1x%1x," % (Qt.qAlpha(pixel) // 16, Qt.qRed(pixel) // 16, Qt.qGreen(pixel) // 16, Qt.qBlue(pixel) // 16)) + f.write("\n") + elif what == "5/6/5/8": + colors = [] + writeSize(f, width, height) + for y in range(height): + for x in range(width): + pixel = image.pixel(x, y) + val = ((Qt.qRed(pixel) >> 3) << 11) + ((Qt.qGreen(pixel) >> 2) << 5) + ((Qt.qBlue(pixel) >> 3) << 0) + # f.write("%d,%d,%d," % (val%256, val/256, Qt.qAlpha(pixel) >> 4)) + f.write("%d,%d," % (val % 256, val // 256)) + f.write("\n") + elif what == "4bits": + colors = [] + writeSize(f, width, height) + for y in range(0, height, 2): + for x in range(width): + value = 0xFF + gray1 = Qt.qGray(image.pixel(x, y)) + if y + 1 < height: + gray2 = Qt.qGray(image.pixel(x, y + 1)) + else: + gray2 = Qt.qRgb(255, 255, 255) + for i in range(4): + if (gray1 & (1 << (4 + i))): + value -= 1 << i + if (gray2 & (1 << (4 + i))): + value -= 1 << (4 + i) + f.write("0x%02x," % value) + f.write("\n") + elif what == "8bits": + colors = [] + writeSize(f, width, height) + for y in range(height): + for x in range(width): + value = Qt.qGray(image.pixel(x, y)) + value = 0x0f - (value >> 4) + f.write("0x%02x," % value) + f.write("\n") + elif what == "03x05": + for y in range(0, height, 5): + for x in range(width): + value = 0 + for z in range(5): + if image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): + value += 1 << z + f.write("0x%02x," % value) + f.write("\n") + elif what == "04x06": + for y in range(0, height, 7): + for x in range(width): + value = 0 + for z in range(7): + if image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): + value += 1 << z + if value == 0x7f: value = 0xff f.write("0x%02x," % value) - f.write("\n") -elif what == "10x14": - for y in range(0, height, 16): - for x in range(width): - for l in range(0, 16, 8): + f.write("\n") + elif what == "05x07": + for y in range(0, height, 8): + for x in range(width): value = 0 for z in range(8): - if image.pixel(x, y + l + z) == Qt.qRgb(0, 0, 0): + if image.pixel(x, y + z) == Qt.qRgb(0, 0, 0): value += 1 << z f.write("0x%02x," % value) - f.write("\n") -elif what == "22x38": - for y in range(0, height, 40): - for x in range(width): - for l in range(0, 40, 8): - value = 0 - for z in range(8): - if image.pixel(x, y + l + z) == Qt.qRgb(0, 0, 0): - value += 1 << z - f.write("0x%02x," % value) - f.write("\n") -else: - print("wrong argument", sys.argv[4]) + f.write("\n") + elif what == "08x10": + for y in range(0, height, 12): + for x in range(width): + skip = True + for l in range(0, 12, 8): + value = 0 + for z in range(8): + if l + z < 12: + if image.pixel(x, y + l + z) == Qt.qRgb(0, 0, 0): + value += 1 << z + else: + skip = False + if skip and l == 8: + value = 0xff + f.write("0x%02x," % value) + f.write("\n") + elif what == "10x14": + for y in range(0, height, 16): + for x in range(width): + for l in range(0, 16, 8): + value = 0 + for z in range(8): + if image.pixel(x, y + l + z) == Qt.qRgb(0, 0, 0): + value += 1 << z + f.write("0x%02x," % value) + f.write("\n") + elif what == "22x38": + for y in range(0, height, 40): + for x in range(width): + for l in range(0, 40, 8): + value = 0 + for z in range(8): + if image.pixel(x, y + l + z) == Qt.qRgb(0, 0, 0): + value += 1 << z + f.write("0x%02x," % value) + f.write("\n") + else: + print("wrong argument", sys.argv[4]) diff --git a/radio/util/include-guard.py b/radio/util/include-guard.py index 428edbfc0..5a60f6b27 100755 --- a/radio/util/include-guard.py +++ b/radio/util/include-guard.py @@ -6,9 +6,8 @@ import sys import os for filename in sys.argv[1:]: - f = file(filename, "r") - lines = f.readlines() - f.close() + with open(filename, "r") as f: + lines = f.readlines() newguard = "_" + os.path.basename(filename).upper().replace(".", "_") + "_" @@ -24,7 +23,6 @@ for filename in sys.argv[1:]: while not lines[end].strip().startswith("#endif"): end -= 1 lines[end] = "#endif // %s\n" % newguard - f = file(filename, "w") - f.write("".join(lines)) - f.close() + with open(filename, "w") as f: + f.write("".join(lines)) break diff --git a/radio/util/luaexport.py b/radio/util/luaexport.py index 512d7cf19..fdc86dd41 100755 --- a/radio/util/luaexport.py +++ b/radio/util/luaexport.py @@ -66,86 +66,80 @@ print("Output file %s" % outputFile) if docFile: print("Documentation file %s" % docFile) -np = open(inputFile, "r") +with open(inputFile, "r") as inp: + while True: + line = inp.readline() + if len(line) == 0: + break + line = line.strip('\r\n') + line = line.strip() + # print "line: %s" % line -while True: - line = inp.readline() - if len(line) == 0: - break - line = line.strip('\r\n') - line = line.strip() - # print "line: %s" % line + parts = line.split('LEXP') + # print parts + if len(parts) != 2: + print("Wrong line: %s" % line) + continue + cmd = 'LEXP' + parts[1] + cnst = parts[0].rstrip(', ') + if cnst.find('=') != -1: + # constant contains = + cnst = cnst.split('=')[0].strip() + # print "Found constant %s with command: %s" % (cnst, cmd) + try: + CONSTANT_VALUE = cnst + # if CONSTANT_VALUE in dups_cnst: + # print "WARNING: Duplicate CONSTANT_VALUE found: %s" % CONSTANT_VALUE + # warning = True + # continue + # dups_cnst.append(CONSTANT_VALUE) + # print cmd + eval(cmd) + except: + print("ERROR: problem with the definition: %s" % line) + traceback.print_exc() + error = True - parts = line.split('LEXP') - # print parts - if len(parts) != 2: - print("Wrong line: %s" % line) - continue - cmd = 'LEXP' + parts[1] - cnst = parts[0].rstrip(', ') - if cnst.find('=') != -1: - # constant contains = - cnst = cnst.split('=')[0].strip() - # print "Found constant %s with command: %s" % (cnst, cmd) - try: - CONSTANT_VALUE = cnst - # if CONSTANT_VALUE in dups_cnst: - # print "WARNING: Duplicate CONSTANT_VALUE found: %s" % CONSTANT_VALUE - # warning = True - # continue - # dups_cnst.append(CONSTANT_VALUE) - # print cmd - eval(cmd) - except: - print("ERROR: problem with the definition: %s" % line) - traceback.print_exc() - error = True +with open(outputFile, "w") as out: + out.write("//This file was generated by luaexport.py script on %s for OpenTX version %s\n\n\n" + % (time.asctime(), version)) -inp.close() + header = """ + struct LuaSingleField { + uint16_t id; + const char * name; + const char * desc; + }; -out = open(outputFile, "w") + struct LuaMultipleField { + uint16_t id; + const char * name; + const char * desc; + uint8_t count; + }; -out.write("//This file was generated by luaexport.py script on %s for OpenTX version %s\n\n\n" - % (time.asctime(), version)) + """ + out.write(header) -header = """ -struct LuaSingleField { - uint16_t id; - const char * name; - const char * desc; -}; + out.write(""" + // The list of Lua fields + // this aray is alphabetically sorted by the second field (name) + const LuaSingleField luaSingleFields[] = { + """) + exports.sort(key=lambda x: x[1]) # sort by name + data = [" {%s, \"%s\", \"%s\"}" % export for export in exports] + out.write(",\n".join(data)) + out.write("\n};\n\n") + print("Generated %d items in luaFields[]" % len(exports)) -struct LuaMultipleField { - uint16_t id; - const char * name; - const char * desc; - uint8_t count; -}; - -""" -out.write(header) - -out.write(""" -// The list of Lua fields -// this aray is alphabetically sorted by the second field (name) -const LuaSingleField luaSingleFields[] = { -""") -exports.sort(key=lambda x: x[1]) # sort by name -data = [" {%s, \"%s\", \"%s\"}" % export for export in exports] -out.write(",\n".join(data)) -out.write("\n};\n\n") -print("Generated %d items in luaFields[]" % len(exports)) - -out.write(""" -// The list of Lua fields that have a range of values -const LuaMultipleField luaMultipleFields[] = { -""") -data = [" {%s, \"%s\", \"%s\", %d}" % export for export in exports_multiple] -out.write(",\n".join(data)) -out.write("\n};\n\n") -print("Generated %d items in luaMultipleFields[]" % len(exports_multiple)) - -out.close() + out.write(""" + // The list of Lua fields that have a range of values + const LuaMultipleField luaMultipleFields[] = { + """) + data = [" {%s, \"%s\", \"%s\", %d}" % export for export in exports_multiple] + out.write(",\n".join(data)) + out.write("\n};\n\n") + print("Generated %d items in luaMultipleFields[]" % len(exports_multiple)) if docFile: # prepare fields @@ -160,16 +154,14 @@ if docFile: alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key[0])] all_exports.sort(key=alphanum_key) - out = open(docFile, "w") - out.write("Alphabetical list of Lua fields for OpenTX version %s\n\n\n" % version) - FIELD_NAME_WIDTH = 25 - out.write("Field name%sField description\n" % (' ' * (FIELD_NAME_WIDTH - len('Field name')))) - out.write("----------------------------------------------\n") - data = ["%s%s%s" % (name_, ' ' * (FIELD_NAME_WIDTH - len(name_)), desc_) for (name_, desc_) in all_exports] - out.write("\n".join(data)) - out.write("\n") - - out.close() + with open(docFile, "w") as out: + out.write("Alphabetical list of Lua fields for OpenTX version %s\n\n\n" % version) + FIELD_NAME_WIDTH = 25 + out.write("Field name%sField description\n" % (' ' * (FIELD_NAME_WIDTH - len('Field name')))) + out.write("----------------------------------------------\n") + data = ["%s%s%s" % (name_, ' ' * (FIELD_NAME_WIDTH - len(name_)), desc_) for (name_, desc_) in all_exports] + out.write("\n".join(data)) + out.write("\n") if warning: sys.exit(1)