"""Startpunkt: oeffnet ein natives Fenster und verbindet es mit der Api. Start: py -m backend (aus dem Ordner `desktop`, im aktivierten venv) Das Fenster nutzt das WebView2 von Windows — dieselbe Engine, die der Browser ohnehin mitbringt. Es wird also kein zweites Chromium ausgeliefert. """ from __future__ import annotations import sys from pathlib import Path import webview from .api import Api # Im Betrieb aus dem Quelltext liegt die gebaute Oberflaeche unter # /frontend/dist; in der PyInstaller-exe im Bundle-Verzeichnis. if getattr(sys, "frozen", False): _BASIS = Path(sys._MEIPASS) # type: ignore[attr-defined] else: _BASIS = Path(__file__).resolve().parent.parent FRONTEND_INDEX = _BASIS / "frontend" / "dist" / "index.html" _PLATZHALTER_HTML = """

Oberfläche noch nicht gebaut

Im Ordner desktop/frontend einmal npm install und npm run build ausführen, dann erneut starten.

""" def main() -> None: api = Api() gemeinsam = { "js_api": api, "width": 1100, "height": 780, "min_size": (820, 600), } if FRONTEND_INDEX.exists(): webview.create_window("Software-Bibliothek", url=str(FRONTEND_INDEX), **gemeinsam) else: webview.create_window("Software-Bibliothek", html=_PLATZHALTER_HTML, **gemeinsam) webview.start(http_server=True) if __name__ == "__main__": main()