HackRF-Treasure-Chest/Software/urh/data/generate_ui.py
2022-09-22 10:41:47 -07:00

73 lines
2.6 KiB
Python

import sys
import os
from subprocess import call
import fileinput
def gen(force=False):
if sys.platform == "win32":
bindir = r"c:\Python34\Lib\site-packages\PyQt5"
else:
bindir = "/usr/bin"
if sys.platform == "win32":
uic_path = os.path.join(bindir, "pyuic5.bat")
rcc_path = os.path.join(bindir, "pyrcc5.exe")
else:
uic_path = os.path.join(bindir, "pyuic5")
rcc_path = os.path.join(bindir, "pyrcc5")
file_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "ui")
ui_path = file_dir
rc_path = file_dir
out_path = os.path.join(file_dir, "..", "..", "src", "urh", "ui")
ui_files = [f for f in os.listdir(ui_path) if f.endswith(".ui")]
rc_files = [f for f in os.listdir(rc_path) if f.endswith(".qrc")]
for f in ui_files:
file_path = os.path.join(ui_path, f)
outfile = "ui_" + f.replace(".ui", ".py")
out_file_path = os.path.join(out_path, outfile)
time_ui_file = os.path.getmtime(file_path)
try:
time_generated_file = os.path.getmtime(out_file_path)
except os.error:
time_generated_file = 0
if time_generated_file >= time_ui_file and not force:
# Generated file is already there and newer than ui file, no need to recompile it
continue
call([uic_path, "--from-imports", file_path, "-o", out_file_path])
# Remove Line: # Form implementation generated from reading ui file '/home/joe/GIT/urh/ui/fuzzing.ui'
# to avoid useless git updates when working on another computer
for line in fileinput.input(out_file_path, inplace=True):
if line.startswith("# Form implementation generated from reading ui file") or line.startswith(
"# Created by: "):
continue
if line.strip().startswith("QtCore.QMetaObject.connectSlotsByName("):
# disable auto slot connection, as we do not use it, and it causes crash on python 3.7
continue
print(line, end='')
for f in rc_files:
file_path = os.path.join(rc_path, f)
out_file = f.replace(".qrc", "_rc.py")
out_file_path = os.path.join(out_path, out_file)
time_rc_file = os.path.getmtime(file_path)
try:
time_generated_file = os.path.getmtime(out_file_path)
except os.error:
time_generated_file = 0
if time_generated_file < time_rc_file or force:
# Only create, when generated file is old than rc file to prevent unneeded git pushes
call([rcc_path, file_path, "-o", out_file_path])
if __name__ == "__main__":
gen()