96 lines
2.9 KiB
Python
96 lines
2.9 KiB
Python
"""Punto de entrada principal de la aplicación."""
|
|
|
|
import argparse
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT_DIR = Path(__file__).parent.resolve()
|
|
if not getattr(sys, "frozen", False):
|
|
sys.path.insert(0, str(ROOT_DIR))
|
|
|
|
# Bootstrap y ODBC antes de importar módulos que usan pyodbc
|
|
from app.config.bootstrap import ensure_runtime_layout
|
|
from app.config.odbc_setup import configure_odbc_environment
|
|
|
|
ensure_runtime_layout()
|
|
configure_odbc_environment()
|
|
|
|
from PySide6.QtWidgets import QApplication
|
|
from PySide6.QtCore import Qt
|
|
|
|
from app.config import get_launch_options, initialize_env, is_panel_configured
|
|
from app.ui.main_window import MainWindow
|
|
from app.utils.logger import app_logger
|
|
|
|
|
|
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(description="CloudRestoreAS")
|
|
parser.add_argument(
|
|
"--minimized",
|
|
action="store_true",
|
|
help="Inicia minimizado en la bandeja del sistema",
|
|
)
|
|
parser.add_argument(
|
|
"--start-engine",
|
|
action="store_true",
|
|
help="Inicia el motor de restauración automáticamente",
|
|
)
|
|
return parser.parse_args(argv)
|
|
|
|
|
|
def main():
|
|
"""Función principal."""
|
|
args = parse_args()
|
|
launch = get_launch_options()
|
|
initialize_env()
|
|
|
|
minimized = args.minimized or launch.minimized
|
|
panel_ok = is_panel_configured()
|
|
start_engine = args.start_engine or launch.start_engine
|
|
|
|
app_logger.info("=" * 80)
|
|
app_logger.info("CloudRestoreAS - Iniciando aplicación")
|
|
app_logger.info(f"Directorio app: {ROOT_DIR}")
|
|
if minimized:
|
|
app_logger.info("Modo: ventana oculta (--minimized o START_MINIMIZED)")
|
|
else:
|
|
app_logger.info("Modo: ventana visible; cerrar minimiza a bandeja")
|
|
if start_engine:
|
|
app_logger.info("Modo: motor auto-inicio")
|
|
if not panel_ok:
|
|
app_logger.warning(
|
|
"Servicio PANEL_BASES_ANEXO24 no configurado en config/.env — "
|
|
"complete CLOUDRESTORE_PANEL_* para enrutamiento automático."
|
|
)
|
|
app_logger.info("=" * 80)
|
|
|
|
app = QApplication(sys.argv)
|
|
app.setApplicationName("CloudRestoreAS")
|
|
app.setOrganizationName("Aduanasoft")
|
|
app.setAttribute(Qt.ApplicationAttribute.AA_EnableHighDpiScaling)
|
|
app.setQuitOnLastWindowClosed(False)
|
|
|
|
try:
|
|
window = MainWindow(
|
|
minimized=minimized,
|
|
start_engine=start_engine,
|
|
panel_configured=panel_ok,
|
|
)
|
|
if not minimized:
|
|
window.show()
|
|
app_logger.info("Ventana principal mostrada")
|
|
else:
|
|
app_logger.info("Ventana oculta; icono en bandeja del sistema")
|
|
|
|
exit_code = app.exec()
|
|
app_logger.info(f"Aplicación finalizada con código: {exit_code}")
|
|
sys.exit(exit_code)
|
|
|
|
except Exception as e:
|
|
app_logger.critical(f"Error fatal en la aplicación: {e}", exc_info=True)
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|