Files
rag-from-scratch/gui/main.py
T
davide f947131f16 feat(gui): aggiunge interfaccia desktop PySide6 con tema light/dark
- chat con Markdown e formule KaTeX (via QWebEngineView + CDN)
- top bar con selezione collezione ChromaDB e bottone ☀️/🌙
- input multiriga con Enter per inviare e Shift+Enter per andare a capo
- animazione thinking durante la generazione
- fonti dei chunk mostrate sotto ogni risposta

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 09:50:37 +02:00

49 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""
RAG Assistant — GUI desktop.
Uso:
python gui/main.py
python gui/main.py --collection matematica
"""
import argparse
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QPalette, QColor
from gui.chat_window import ChatWindow
def main() -> None:
parser = argparse.ArgumentParser(description="RAG Assistant GUI")
parser.add_argument("--collection", default="", help="Collection ChromaDB da aprire")
args = parser.parse_args()
app = QApplication(sys.argv)
app.setApplicationName("RAG Assistant")
app.setStyle("Fusion")
# Palette scura per i widget nativi Qt
palette = QPalette()
palette.setColor(QPalette.ColorRole.Window, QColor("#212121"))
palette.setColor(QPalette.ColorRole.WindowText, QColor("#ececec"))
palette.setColor(QPalette.ColorRole.Base, QColor("#2a2a2a"))
palette.setColor(QPalette.ColorRole.AlternateBase, QColor("#1a1a1a"))
palette.setColor(QPalette.ColorRole.Text, QColor("#ececec"))
palette.setColor(QPalette.ColorRole.Button, QColor("#2a2a2a"))
palette.setColor(QPalette.ColorRole.ButtonText, QColor("#ececec"))
palette.setColor(QPalette.ColorRole.Highlight, QColor("#10a37f"))
palette.setColor(QPalette.ColorRole.HighlightedText, QColor("#ffffff"))
app.setPalette(palette)
window = ChatWindow(default_collection=args.collection)
window.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()