source: sasview/src/sas/qtgui/convertUI.py @ c71b20a

Last change on this file since c71b20a was 67642f7, checked in by Torin Cooper-Bennun <torin.cooper-bennun@…>, 6 years ago

check whether .py files are outdated before generating them from .ui or .qrc files (huge startup speed-up)

  • Property mode set to 100644
File size: 1.9 KB
RevLine 
[83eb5208]1# Convert all .ui files in all subdirectories of the current script
2import os
[2e27cdb6]3import sys
[83eb5208]4
5def pyrrc(in_file, out_file):
6    """ Run the pyrcc4 script"""
[4992ff2]7    execute = 'pyrcc5 %s -o %s' % (in_file, out_file)
[83eb5208]8    os.system(execute)
9
10def pyuic(in_file, out_file):
[b3e8629]11    """ Run the pyuic5 script"""
[4992ff2]12    execute = 'pyuic5 -o %s %s' % (out_file, in_file)
[83eb5208]13    os.system(execute)
14
[67642f7]15def file_in_newer(file_in, file_out):
16    """
17    Check whether file_in is newer than file_out, if file_out exists.
18
19    Returns True if file_in is newer, or if file_out doesn't exist; False
20    otherwise.
21    """
22    try:
23        out_stat = os.stat(file_out)
24    except OSError:
25        # file_out does not exist
26        return True
27
28    in_stat = os.stat(file_in)
29
30    # simple comparison of modification time
31    return in_stat.st_mtime >= out_stat.st_mtime
32
[83eb5208]33# look for .ui files
34for root, dirs, files in os.walk("."):
35    for file in files:
36        if file.endswith(".ui"):
37            file_in = os.path.join(root, file)
38            file_out = os.path.splitext(file_in)[0]+'.py'
[67642f7]39            if file_in_newer(file_in, file_out):
40                print("Generating " + file_out + " ...")
41                pyuic(file_in, file_out)
[83eb5208]42
43# RC file in UI directory
[2e27cdb6]44execute_root = os.path.split(sys.modules[__name__].__file__)[0]
45ui_root = os.path.join(execute_root, 'UI')
[83eb5208]46rc_file = 'main_resources.qrc'
47out_file = 'main_resources_rc.py'
[2e27cdb6]48
[67642f7]49in_file = os.path.join(ui_root, rc_file)
50out_file = os.path.join(ui_root, out_file)
51
52if file_in_newer(in_file, out_file):
53    print("Generating " + out_file + " ...")
54    pyrrc(in_file, out_file)
[83eb5208]55
56# Images
[2e27cdb6]57images_root = os.path.join(execute_root, 'images')
[c03692f]58out_root = os.path.join(execute_root, 'UI')
[83eb5208]59rc_file = 'images.qrc'
60out_file = 'images_rc.py'
[67642f7]61
62in_file = os.path.join(images_root, rc_file)
63out_file = os.path.join(ui_root, out_file)
64
65if file_in_newer(in_file, out_file):
66    print("Generating " + out_file + " ...")
67    pyrrc(in_file, out_file)
68
Note: See TracBrowser for help on using the repository browser.