73 lines
2.6 KiB
Python
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()
|