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
Line 
1# Convert all .ui files in all subdirectories of the current script
2import os
3import sys
4
5def pyrrc(in_file, out_file):
6    """ Run the pyrcc4 script"""
7    execute = 'pyrcc5 %s -o %s' % (in_file, out_file)
8    os.system(execute)
9
10def pyuic(in_file, out_file):
11    """ Run the pyuic5 script"""
12    execute = 'pyuic5 -o %s %s' % (out_file, in_file)
13    os.system(execute)
14
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
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'
39            if file_in_newer(file_in, file_out):
40                print("Generating " + file_out + " ...")
41                pyuic(file_in, file_out)
42
43# RC file in UI directory
44execute_root = os.path.split(sys.modules[__name__].__file__)[0]
45ui_root = os.path.join(execute_root, 'UI')
46rc_file = 'main_resources.qrc'
47out_file = 'main_resources_rc.py'
48
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)
55
56# Images
57images_root = os.path.join(execute_root, 'images')
58out_root = os.path.join(execute_root, 'UI')
59rc_file = 'images.qrc'
60out_file = 'images_rc.py'
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.