mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			126 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| """Script to process QRC files (convert .qrc to _rc.py and .rcc).
 | |
| 
 | |
| The script will attempt to compile the qrc file using the following tools:
 | |
| 
 | |
|     - pyrcc4 for PyQt4 and PyQtGraph (Python)
 | |
|     - pyrcc5 for PyQt5 and QtPy (Python)
 | |
|     - pyside-rcc for PySide (Python)
 | |
|     - pyside2-rcc for PySide2 (Python)
 | |
|     - rcc for Qt4 and Qt5 (C++)
 | |
| 
 | |
| Delete the compiled files that you don't want to use manually after
 | |
| running this script.
 | |
| 
 | |
| Links to understand those tools:
 | |
| 
 | |
|     - pyrcc4: http://pyqt.sourceforge.net/Docs/PyQt4/resources.html#pyrcc4
 | |
|     - pyrcc5: http://pyqt.sourceforge.net/Docs/PyQt5/resources.html#pyrcc5
 | |
|     - pyside-rcc: https://www.mankier.com/1/pyside-rcc
 | |
|     - pyside2-rcc: https://doc.qt.io/qtforpython/overviews/resources.html (Documentation Incomplete)
 | |
|     - rcc on Qt4: http://doc.qt.io/archives/qt-4.8/rcc.html
 | |
|     - rcc on Qt5: http://doc.qt.io/qt-5/rcc.html
 | |
| 
 | |
| """
 | |
| 
 | |
| from __future__ import absolute_import, print_function
 | |
| 
 | |
| import argparse
 | |
| import glob
 | |
| import os
 | |
| import sys
 | |
| from subprocess import call
 | |
| 
 | |
| 
 | |
| def main(arguments):
 | |
|     """Process QRC files."""
 | |
|     parser = argparse.ArgumentParser(description=__doc__,
 | |
|                                      formatter_class=argparse.RawDescriptionHelpFormatter)
 | |
|     parser.add_argument('--qrc_dir',
 | |
|                         default='../qdarkstyle',
 | |
|                         type=str,
 | |
|                         help="QRC file directory, relative to current directory.",)
 | |
|     parser.add_argument('--create',
 | |
|                         default='all',
 | |
|                         choices=['pyqt', 'pyqt5', 'pyside', 'pyside2', 'qtpy', 'pyqtgraph', 'qt', 'qt5', 'all'],
 | |
|                         type=str,
 | |
|                         help="Choose which one would be generated.")
 | |
| 
 | |
|     args = parser.parse_args(arguments)
 | |
| 
 | |
|     print('Changing directory to: ', args.qrc_dir)
 | |
|     os.chdir(args.qrc_dir)
 | |
| 
 | |
|     print('Converting .qrc to _rc.py and/or .rcc ...')
 | |
| 
 | |
|     for qrc_file in glob.glob('*.qrc'):
 | |
|         # get name without extension
 | |
|         filename = os.path.splitext(qrc_file)[0]
 | |
| 
 | |
|         print(filename, '...')
 | |
|         ext = '_rc.py'
 | |
|         ext_c = '.rcc'
 | |
| 
 | |
|         # creating names
 | |
|         py_file_pyqt5 = 'pyqt5_' + filename + ext
 | |
|         py_file_pyqt = 'pyqt_' + filename + ext
 | |
|         py_file_pyside = 'pyside_' + filename + ext
 | |
|         py_file_pyside2 = 'pyside2_' + filename + ext
 | |
|         py_file_qtpy = 'qtpy_' + filename + ext
 | |
|         py_file_pyqtgraph = 'pyqtgraph_' + filename + ext
 | |
| 
 | |
|         # calling external commands
 | |
|         if args.create in ['pyqt', 'pyqtgraph', 'all']:
 | |
|             print("Compiling for PyQt4 ...")
 | |
|             try:
 | |
|                 call(['pyrcc4', '-py3', qrc_file, '-o', py_file_pyqt])
 | |
|             except FileNotFoundError:
 | |
|                 print("You must install pyrcc4")
 | |
| 
 | |
|         if args.create in ['pyqt5', 'qtpy', 'all']:
 | |
|             print("Compiling for PyQt5 ...")
 | |
|             try:
 | |
|                 call(['pyrcc5', qrc_file, '-o', py_file_pyqt5])
 | |
|             except FileNotFoundError:
 | |
|                 print("You must install pyrcc5")
 | |
| 
 | |
|         if args.create in ['pyside', 'all']:
 | |
|             print("Compiling for PySide ...")
 | |
|             try:    
 | |
|                 call(['pyside-rcc', '-py3', qrc_file, '-o', py_file_pyside])
 | |
|             except FileNotFoundError:
 | |
|                 print("You must install pyside-rcc")
 | |
| 
 | |
|         if args.create in ['pyside2', 'all']:
 | |
|             print("Compiling for PySide 2...")
 | |
|             try:
 | |
|                 call(['pyside2-rcc', '-py3', qrc_file, '-o', py_file_pyside2])
 | |
|             except FileNotFoundError:
 | |
|                 print("You must install pyside2-rcc")
 | |
| 
 | |
|         if args.create in ['qtpy', 'all']:
 | |
|             print("Compiling for QtPy ...")
 | |
|             # special case - qtpy - syntax is PyQt5
 | |
|             with open(py_file_pyqt5, 'r') as file:
 | |
|                 filedata = file.read()
 | |
|             # replace the target string
 | |
|             filedata = filedata.replace('from PyQt5', 'from qtpy')
 | |
|             with open(py_file_qtpy, 'w+') as file:
 | |
|                 # write the file out again
 | |
|                 file.write(filedata)
 | |
| 
 | |
|         if args.create in ['pyqtgraph', 'all']:
 | |
|             print("Compiling for PyQtGraph ...")
 | |
|             # special case - pyqtgraph - syntax is PyQt4
 | |
|             with open(py_file_pyqt, 'r') as file:
 | |
|                 filedata = file.read()
 | |
|             # replace the target string
 | |
|             filedata = filedata.replace('from PyQt4', 'from pyqtgraph.Qt')
 | |
|             with open(py_file_pyqtgraph, 'w+') as file:
 | |
|                 # write the file out again
 | |
|                 file.write(filedata)
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     sys.exit(main(sys.argv[1:]))
 |