feat: Additive merge of webui branch with PyQt GUI support

- Add abogen/pyqt/ package with full PyQt6 desktop GUI
- Restore PyQt GUI files (gui.py, book_handler.py, queue_manager_gui.py, voice_formula_gui.py, conversion.py)
- Add new shared modules from webui: book_parser.py, subtitle_utils.py, spacy_utils.py
- Add Linux libraries (libxcb-cursor) for Qt platform plugin support
- Add new epub parsing tests from webui branch
- Update pyproject.toml with dual entry points:
  - abogen: PyQt6 desktop GUI
  - abogen-web: Flask Web UI
- Add PyQt6 to dependencies
- Re-export PyQt classes from root modules for backwards compatibility
- Merge CHANGELOG.md entries (1.2.0-1.2.5 from webui)
- Update README.md with dual interface documentation

Implements #26 - shared core with separate UI folders
This commit is contained in:
JB
2025-12-22 05:51:21 -08:00
parent ede5343e0c
commit e2b2f610a6
32 changed files with 14863 additions and 38 deletions
+6 -10
View File
@@ -1,15 +1,11 @@
"""Legacy PyQt voice formula dialog removed."""
"""Backwards-compatible re-export of the PyQt voice formula dialog.
The actual implementation lives in abogen.pyqt.voice_formula_gui.
"""
from __future__ import annotations
class VoiceFormulaDialog: # pragma: no cover - legacy entry point
"""Placeholder for removed PyQt dialog."""
def __init__(self, *_args, **_kwargs):
raise RuntimeError(
"The PyQt-based voice formula editor has been removed. Use the web tools instead."
)
from abogen.pyqt.voice_formula_gui import * # noqa: F401, F403
from abogen.pyqt.voice_formula_gui import VoiceFormulaDialog
__all__ = ["VoiceFormulaDialog"]