Files
oxapp25/windows/main_window.py
2025-05-26 01:41:07 +02:00

90 lines
3.2 KiB
Python

from PySide6.QtCore import QTimer
from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QMainWindow
import sys
from pathlib import Path
import logging
import base64
from src.conf import ConfManager
from src.download import DownloadManager
from src.handler import WebHandler
from windows.site_window import SiteWindow
import resources_rc
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
# Création d'un logger spécifique pour cette classe
self.logger = logging.getLogger("MainWindow")
self.logger.info("Initialisation de la fenêtre principale")
# initialise main app
self.setWindowTitle("Oxpanel")
self.setMinimumSize(1024, 768)
self.setWindowIcon(QIcon(":/oxpanel.ico"))
self.url = "http://127.0.0.1:8000/" if "--dev" in sys.argv else "https://oxpanel.com/"
self.logger.debug(f"URL configurée: {self.url}")
# initialise every module
self.logger.debug("Initialisation des modules")
self.conf = ConfManager(self)
self.download_manager = DownloadManager(self)
self.web_handler = WebHandler(self.download_manager, self)
# initialise windows
self.logger.debug("Initialisation des fenêtres")
self.site_window = SiteWindow(self)
self.setCentralWidget(self.site_window)
# connection des signaux
self.site_window.on_cookie_added.connect(self.download_manager.add_cookie)
self.logger.debug("Signaux connectés")
self.logger.info("Fenêtre principale initialisée avec succès")
def handle_files(self, file_paths):
"""
Traite les fichiers reçus via "Ouvrir avec" ou d'une autre instance.
Args:
file_paths (list): Liste des chemins de fichiers à traiter
"""
if not self.web_handler.site_loaded:
QTimer.singleShot(100, lambda: self.handle_files(file_paths))
self.logger.info("Site pas prêt, report de l'envoie des fichiers")
return
self.logger.info(f"Traitement de {len(file_paths)} fichiers reçus")
for file_path in file_paths:
file_path = Path(file_path)
self.logger.debug(f"Traitement du fichier : {file_path}")
# Exemple: vérifier si le fichier existe
if file_path.exists():
self.logger.debug(f"Le fichier {file_path} existe")
try:
with file_path.open("rb") as file:
file_content = file.read()
encoded_content = base64.b64encode(file_content).decode("utf-8")
self.web_handler.on_message.emit({
"context": "upload_torrent",
"content": encoded_content
})
except Exception as e:
self.logger.error(f"Erreur lors de la lecture ou de l'encodage du fichier {file_path}: {e}")
else:
self.logger.warning(f"Le fichier {file_path} n'existe pas")
def closeEvent(self, event, /):
self.download_manager.pause = True
self.download_manager.stop = True
self.download_manager.close_thread_workers()
event.accept()