Files
alro65 0dbc2a4518 v0.1-sprint0: Esqueleto completo AR-ShipDesign
- Estructura completa de carpetas (236 módulos stub + implementados)
- pyproject.toml, requirements, .gitignore, LICENSE (propietario)
- core/project.py: serialización .arsd (ZIP con JSON)
- core/units.py: conversiones SI <-> imperial completas
- ui/main_window.py: layout DELFTship-style con todos los paneles
  - Árbol de proyecto (dock izquierda)
  - Tabs de módulos (centro)
  - Panel de propiedades (dock derecha)
  - Panel hidrostáticos en vivo (inferior, fijo)
- ui/i18n: español e inglés
- ui/themes: tema claro y oscuro
- utils/logger.py, settings.py, validation.py
- data/liquids.json: 15 líquidos navales
- data/stability_criteria.json: IMO IS Code 2008, A.749(18), USCG
- tests/test_startup.py: 12 tests, todos PASSED
- Módulo scantling/ ISO 12215 (stubs Sprint 2.5)
- Módulo fabrication/molds/ para moldes FRP (stubs Sprint 13B)
- Módulo fabrication/ para CNC plasma/router/laser (stubs Sprint 13)
2026-05-26 22:10:18 -04:00

21 lines
559 B
Python

"""
Runner asíncrono para cálculos pesados usando QThreadPool.
Evita congelar la UI durante cálculos largos (>200ms).
Stub — Implementación en Sprint 2.
"""
from __future__ import annotations
from typing import Callable, Any
class AsyncRunner:
"""
Stub. Implementación en Sprint 2.
Ejecutará tareas en QThreadPool y emitirá señales Qt con el resultado.
"""
def run(self, func: Callable, *args: Any, callback: Callable | None = None) -> None:
raise NotImplementedError("AsyncRunner — Implementación en Sprint 2")