Merge commit 'a743ad9496701894406c0d7ded6a44fcecd4219e' as 'deps/QDark'

This commit is contained in:
2020-09-05 19:26:53 -05:00
374 changed files with 41320 additions and 0 deletions

191
deps/QDark/scripts/process_qrc.py vendored Executable file
View File

@ -0,0 +1,191 @@
# -*- 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
from subprocess import call
import argparse
import glob
import os
import sys
# Third party imports
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
# Local imports
from qdarkstyle import PACKAGE_PATH
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(arguments):
"""Process QRC files."""
parser = argparse.ArgumentParser(description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('--qrc_dir',
default=PACKAGE_PATH,
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(arguments)
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:
run_process(args)
def run_process(args):
"""Process qrc files."""
# Generate qrc file based on the content of the resources folder
# Create palette and resources png images
print('Generating palette image ...')
create_palette_image()
print('Generating images ...')
create_images()
print('Generating qrc ...')
generate_qrc_file()
print('Converting .qrc to _rc.py and/or .rcc ...')
os.chdir(args.qrc_dir)
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'
# Create variables SCSS files and compile SCSS files to QSS
print('Compiling SCSS/SASS files to QSS ...')
create_qss()
# 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 = '' + 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 not in ['pyqt5']:
os.remove(py_file_pyqt5)
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:]))

135
deps/QDark/scripts/process_ui.py vendored Executable file
View File

@ -0,0 +1,135 @@
# -*- coding: utf-8 -*-
"""Script to process UI files (convert .ui to .py).
It compiles .ui files to be used with PyQt4, PyQt5, PySide, QtPy, PyQtGraph.
You just need to run (it has default values) from script folder.
To run this script you need to have these tools available on system:
- pyuic4 for PyQt4 and PyQtGraph
- pyuic5 for PyQt5 and QtPy
- pyside-uic for Pyside
- pyside2-uic for Pyside2
Links to understand those tools:
- pyuic4: http://pyqt.sourceforge.net/Docs/PyQt4/designer.html#pyuic4
- pyuic5: http://pyqt.sourceforge.net/Docs/PyQt5/designer.html#pyuic5
- pyside-uic: https://www.mankier.com/1/pyside-uic
- pyside2-uic: https://wiki.qt.io/Qt_for_Python_UiFiles (Documentation Incomplete)
"""
# Standard library imports
from __future__ import absolute_import, print_function
from subprocess import call
import argparse
import glob
import os
import sys
# Constants
HERE = os.path.abspath(os.path.dirname(__file__))
REPO_ROOT = os.path.dirname(HERE)
def main(arguments):
"""Process UI files."""
parser = argparse.ArgumentParser(description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('--ui_dir',
default=os.path.join(REPO_ROOT, 'example', 'ui'),
type=str,
help="UI files directory, relative to current directory.",)
parser.add_argument('--create',
default='qtpy',
choices=['pyqt', 'pyqt5', 'pyside', 'pyside2', 'qtpy', 'pyqtgraph', 'all'],
type=str,
help="Choose which one would be generated.")
args = parser.parse_args(arguments)
print('Changing directory to: ', args.ui_dir)
os.chdir(args.ui_dir)
print('Converting .ui to .py ...')
for ui_file in glob.glob('*.ui'):
# get name without extension
filename = os.path.splitext(ui_file)[0]
print(filename, '...')
ext = '.py'
# creating names
py_file_pyqt5 = filename + '_pyqt5_ui' + ext
py_file_pyqt = filename + '_pyqt_ui' + ext
py_file_pyside = filename + '_pyside_ui' + ext
py_file_pyside2 = filename + '_pyside2_ui' + ext
py_file_qtpy = filename + '_ui' + ext
py_file_pyqtgraph = filename + '_pyqtgraph_ui' + ext
# calling external commands
if args.create in ['pyqt', 'pyqtgraph', 'all']:
try:
call(['pyuic4', '--import-from=qdarkstyle', ui_file, '-o', py_file_pyqt])
except Exception as er:
print("You must install pyuic4 %s" % str(er))
else:
print("Compiling using pyuic4 ...")
if args.create in ['pyqt5', 'qtpy', 'all']:
try:
call(['pyuic5', '--import-from=qdarkstyle', ui_file, '-o', py_file_pyqt5])
except Exception as er:
print("You must install pyuic5 %s" % str(er))
else:
print("Compiling using pyuic5 ...")
if args.create in ['pyside', 'all']:
try:
call(['pyside-uic', '--import-from=qdarkstyle', ui_file, '-o', py_file_pyside])
except Exception as er:
print("You must install pyside-uic %s" % str(er))
else:
print("Compiling using pyside-uic ...")
if args.create in ['pyside2', 'all']:
try:
call(['pyside2-uic', '--import-from=qdarkstyle', ui_file, '-o', py_file_pyside2])
except Exception as er:
print("You must install pyside2-uic %s" % str(er))
else:
print("Compiling using pyside2-uic ...")
if args.create in ['qtpy', 'all']:
print("Creating also 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 not in ['pyqt5']:
os.remove(py_file_pyqt5)
if args.create in ['pyqtgraph', 'all']:
print("Creating also 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:]))

65
deps/QDark/scripts/run_ui_css_edition.py vendored Executable file
View File

@ -0,0 +1,65 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Process qrc, ui, image, and screenshot files, then run example in while loop.
"""
# Standard library imports
from __future__ import absolute_import, print_function
from subprocess import call
import os
import sys
# Constants
SCRIPTS_PATH = os.path.abspath(os.path.dirname(__file__))
REPO_PATH = os.path.dirname(SCRIPTS_PATH)
def main():
"""Process qrc and ui files, then run example in while loop."""
dark = None
no_dark = None
themes = {'Dark': dark, 'No Dark': no_dark}
while True:
for theme_name, theme_process in themes.items():
try:
theme_process.kill()
except AttributeError:
print(theme_name + ' not running!')
except Exception:
print(theme_name + ' still running!')
else:
print(theme_name + ' was killed!')
print(sys.argv)
# Process images
process_images = os.path.join(SCRIPTS_PATH, 'process_images.py')
call(['python', process_images])
# Process qrc files
process_qrc = os.path.join(SCRIPTS_PATH, 'process_qrc.py')
call(['python', process_qrc])
# Process ui files
process_ui = os.path.join(SCRIPTS_PATH, 'process_ui.py')
call(['python', process_ui])
# Create screenshots
example = os.path.join(REPO_PATH, 'example', 'example.py')
call(['python', example, '--screenshots'])
call(['python', example, '--no_dark', '--screenshots'])
# Open dark example
dark = call(['python', example] + sys.argv[1:])
# Open no dark example
no_dark = call(['python', example, '--no_dark'] + sys.argv[1:])
if dark or no_dark:
print('Unf! It not worked! Please, check the error(s).')
break
if __name__ == "__main__":
sys.exit(main())