Code to compile a single qrc file

This commit is contained in:
Kovid Goyal 2022-01-10 11:40:29 +05:30
parent 9f0ab6e40f
commit a0e1c7b7e3
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 30 additions and 1 deletions

View File

@ -0,0 +1,29 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8
# License: GPL v3 Copyright: 2022, Kovid Goyal <kovid at kovidgoyal.net>
import os
import sys
from qt.core import QFile, QIODevice
from calibre_extensions import rcc_backend
def compile_qrc(output_path, *qrc_file_paths):
rcc = rcc_backend.RCCResourceLibrary()
err_device = QFile()
if not err_device.open(sys.stderr.fileno(), QIODevice.OpenModeFlag.WriteOnly | QIODevice.OpenModeFlag.Text):
raise ValueError('Failed to open stderr for writing')
if not qrc_file_paths:
raise TypeError('Must specify at least one .qrc file')
rcc.setInputFiles(list(qrc_file_paths))
if not rcc.readFiles(False, err_device):
raise ValueError('Failed to read qrc files')
with open(output_path, 'wb') as f:
out = QFile(output_path)
if not out.open(f.fileno(), QIODevice.OpenModeFlag.WriteOnly):
raise RuntimeError(f'Failed to open {output_path} for writing')
ok = rcc.output(out, QFile(), err_device)
if not ok:
os.remove(output_path)
raise ValueError('Failed to write output')

View File

@ -26,7 +26,7 @@ class RCCResourceLibrary /NoDefaultCtors/
%End %End
public: public:
RCCResourceLibrary(quint8 formatVersion); RCCResourceLibrary(quint8 formatVersion=3);
~RCCResourceLibrary(); ~RCCResourceLibrary();