feature/build-y-ui-contraible
This commit is contained in:
@@ -114,7 +114,8 @@ def render_env_template(app_dir: Path | None = None) -> str:
|
||||
|
||||
return f"""# CloudRestoreAS — configuración local (editar y reiniciar la app)
|
||||
|
||||
# Arranca el motor al abrir (la ventana siempre se muestra salvo START_MINIMIZED=true)
|
||||
# Arranca el motor al abrir. La ventana SIEMPRE se muestra al iniciar; cerrar (X) la
|
||||
# minimiza a la bandeja del sistema (START_MINIMIZED ya no oculta la ventana).
|
||||
CLOUDRESTORE_AUTO_START=true
|
||||
CLOUDRESTORE_START_MINIMIZED=false
|
||||
CLOUDRESTORE_REGISTER_AUTOSTART=true
|
||||
|
||||
@@ -41,6 +41,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
self.setWindowTitle("CloudRestoreAS - Restauración Automática SQL Server")
|
||||
self.setMinimumSize(1200, 800)
|
||||
self.setWindowIcon(load_tray_icon())
|
||||
|
||||
self.tray_icon: QSystemTrayIcon | None = None
|
||||
self._setup_tray()
|
||||
@@ -61,9 +62,6 @@ class MainWindow(QMainWindow):
|
||||
if self._start_on_load:
|
||||
QTimer.singleShot(500, self._start_engine)
|
||||
|
||||
if self._minimized_on_load:
|
||||
QTimer.singleShot(100, self.hide)
|
||||
|
||||
self._update_tray_status()
|
||||
self.dashboard_tab.update_motor_status()
|
||||
app_logger.info("Ventana principal inicializada")
|
||||
@@ -136,10 +134,16 @@ class MainWindow(QMainWindow):
|
||||
about_action.triggered.connect(self._show_about)
|
||||
help_menu.addAction(about_action)
|
||||
|
||||
def _setup_tray(self):
|
||||
"""Configura el icono de bandeja del sistema."""
|
||||
def _setup_tray(self, _attempt: int = 0):
|
||||
"""Configura el icono de bandeja del sistema (reintenta si aún no está listo)."""
|
||||
if not QSystemTrayIcon.isSystemTrayAvailable():
|
||||
app_logger.warning("Bandeja del sistema no disponible en este entorno")
|
||||
if _attempt < 20:
|
||||
# La bandeja puede no estar lista justo tras el login: reintentar ~10s.
|
||||
QTimer.singleShot(500, lambda: self._setup_tray(_attempt + 1))
|
||||
else:
|
||||
app_logger.warning(
|
||||
"Bandeja del sistema no disponible tras varios reintentos"
|
||||
)
|
||||
return
|
||||
|
||||
self.tray_icon = QSystemTrayIcon(self)
|
||||
@@ -183,14 +187,14 @@ class MainWindow(QMainWindow):
|
||||
self.engine.signals.config_loaded.connect(self._on_config_loaded)
|
||||
|
||||
def closeEvent(self, event: QCloseEvent):
|
||||
"""Minimiza a bandeja al cerrar la ventana (no sale de la aplicación)."""
|
||||
"""Nunca cierra la app: minimiza a la bandeja (o a la barra de tareas si no hay bandeja)."""
|
||||
if self._force_quit:
|
||||
event.accept()
|
||||
return
|
||||
|
||||
event.ignore()
|
||||
if self.tray_icon and self.tray_icon.isVisible():
|
||||
self.hide()
|
||||
event.ignore()
|
||||
app_logger.info("Ventana minimizada a bandeja del sistema")
|
||||
if not self._tray_hint_shown:
|
||||
self.tray_icon.showMessage(
|
||||
@@ -201,7 +205,9 @@ class MainWindow(QMainWindow):
|
||||
)
|
||||
self._tray_hint_shown = True
|
||||
else:
|
||||
event.accept()
|
||||
# Sin bandeja disponible: minimizar a la barra de tareas, nunca cerrar.
|
||||
self.showMinimized()
|
||||
app_logger.info("Ventana minimizada a la barra de tareas (sin bandeja)")
|
||||
|
||||
def _on_tray_activated(self, reason):
|
||||
"""Maneja la activación del icono de tray."""
|
||||
|
||||
Reference in New Issue
Block a user