101 lines
3.3 KiB
Python
101 lines
3.3 KiB
Python
# -*- 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
|
|
|
|
"""
|
|
|
|
# Standard library imports
|
|
from __future__ import absolute_import, print_function
|
|
|
|
import argparse
|
|
import glob
|
|
import os
|
|
import sys
|
|
from subprocess import call
|
|
|
|
# Third party imports
|
|
from watchdog.events import FileSystemEventHandler
|
|
from watchdog.observers import Observer
|
|
|
|
# Local imports
|
|
from qdarkstyle import PACKAGE_PATH
|
|
from qdarkstyle.dark.palette import DarkPalette
|
|
from qdarkstyle.light.palette import LightPalette
|
|
from qdarkstyle.utils import run_process
|
|
from qdarkstyle.utils.images import (create_images, create_palette_image,
|
|
generate_qrc_file)
|
|
from qdarkstyle.utils.scss import create_qss
|
|
|
|
|
|
class QSSFileHandler(FileSystemEventHandler):
|
|
"""QSS File observer."""
|
|
|
|
def __init__(self, parser_args):
|
|
"""QSS File observer."""
|
|
super(QSSFileHandler, self).__init__()
|
|
self.args = parser_args
|
|
|
|
def on_modified(self, event):
|
|
"""Handle file system events."""
|
|
if event.src_path.endswith('.qss'):
|
|
run_process(self.args)
|
|
print('\n')
|
|
|
|
|
|
def main():
|
|
"""Process QRC files."""
|
|
parser = argparse.ArgumentParser(description=__doc__,
|
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
parser.add_argument('--qrc_dir',
|
|
default=None,
|
|
type=str,
|
|
help="QRC file directory, relative to current directory.",)
|
|
parser.add_argument('--create',
|
|
default='qtpy',
|
|
choices=['pyqt', 'pyqt5', 'pyside', 'pyside2', 'qtpy', 'pyqtgraph', 'qt', 'qt5', 'all'],
|
|
type=str,
|
|
help="Choose which one would be generated.")
|
|
parser.add_argument('--watch', '-w',
|
|
action='store_true',
|
|
help="Watch for file changes.")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.watch:
|
|
path = PACKAGE_PATH
|
|
observer = Observer()
|
|
handler = QSSFileHandler(parser_args=args)
|
|
observer.schedule(handler, path, recursive=True)
|
|
try:
|
|
print('\nWatching QSS file for changes...\nPress Ctrl+C to exit\n')
|
|
observer.start()
|
|
except KeyboardInterrupt:
|
|
observer.stop()
|
|
observer.join()
|
|
else:
|
|
for palette in [DarkPalette, LightPalette]:
|
|
run_process(args, palette)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|