Commit Graph

5 Commits

Author SHA1 Message Date
alro65 135f097079 fix(ribbon): calcular ancho mínimo de botones desde métricas de texto
Qt dimensiona QToolButton por el ícono (22px), no por el texto, lo que
causaba que etiquetas como 'Nuevo Tq.' se cortaran al renderizar.
Ahora add_button() usa fontMetrics().horizontalAdvance(text)+20 para
establecer setMinimumWidth() correcto en cada botón.

Además: RibbonBar.setFixedHeight(110) (antes 92), padding y font-size
del ribbonButton QSS aumentados ligeramente para mejor legibilidad.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-27 00:35:03 -04:00
alro65 0c15b5aeeb fix(ui): Ocean Slate theme — legibilidad, 4 viewports diferenciados
Problema 1 — texto oscuro ilegible
  - ribbonButton disabled: #555c6e → #7a8ba8 (contraste ≥3.5:1)
  - ribbonGroupTitle: #6b7385 → #9aa3bc (legible)
  - placeholderTitle/Desc/Msg: colores más claros y visibles

Problema 2 — 4 viewports indistinguibles (negro monótono)
  - Cada viewport tiene objectName propio (viewportTitleBar_perspective etc.)
  - 4 barras de título con colores únicos:
      perspective → azul profundo   #1e2550 / texto #6888d8
      profile     → teal marino     #143040 / texto #40a8b8
      bodyplan    → índigo          #28183c / texto #8868c8
      plan        → verde oscuro    #142814 / texto #48a858
  - QFrame viewport: borde 2px solid #2a3060 (claramente visible)
  - setHandleWidth(5) en Python (3→5 px) + QSS hover acento

Problema 3 — fondo negro de muertos
  - Main bg: #252a38 → #2c3042 (slate medio, claramente gris-azul)
  - Paneles:  #2e3342 → #343848
  - Viewport canvas: #1a1e2c → #1a1d30 (navy, no neutral)
  - Línea acento (#4da8ff) bajo ribbon y sobre hidrostáticos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 00:14:20 -04:00
alro65 d0d47ec5fb fix(theme): palette Deep Navy Slate + legibilidad ribbon + capa indicadores
- Reemplaza fondos casi-negros (#0e1117, #1e2128) por paleta
  azul-gris marino profesional (#252a38 main, #1a1e2c viewport canvas)
- Elimina max-width:72px de ribbonButton — texto como "C. Incendio",
  "Post-Proc.", "Agua Dulce" ya no se corta
- layerVisBtn: indicador visual por color (azul=#0d99ff visible /
  gris=#363b4e oculta) sin depender de texto ni ícono
- layerLockBtn: ámbar=#fbbf24 bloqueada / gris libre
- Mejora contraste de ribbonGroupTitle, viewportTitle,
  placeholderTitle, placeholderDesc y viewportPlaceholder
- Agrega border-bottom a ribbonContent para separación visual

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 23:43:29 -04:00
alro65 0dc1050e5a feat(ui): ribbon bar + 4-viewport layout + layers panel
- Replace simple QToolBar with 6-tab functional RibbonBar
  (Home / Geometría / Análisis / Tanques / Sistemas / Fabricación)
  Each tab shows relevant button groups with icons + text below.
- Replace single 3D placeholder with FourViewport layout
  (Perspectiva 3D · Vista Lateral · Body Plan · Vista de Planta)
  divided by draggable cyan splitters — standard naval CAD layout.
- Replace ProjectTreePanel with DELFTship-style LayersPanel:
  10 preset layers with visibility toggle, lock toggle, and color swatch.
- Add pipe/cable routing modules (MOD_ROUTING_PIPES=21, MOD_ROUTING_CABLES=22)
  visible in Sistemas ribbon tab and main menu under Sistemas → Routing 3D.
- Move Units/Language info from toolbar to status bar (cleaner ribbon).
- Update dark.qss: new styles for ribbon tabs, viewports, layers panel,
  viewport splitter handles (accent blue), placeholder text.
- All 12 Sprint 0 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 23:30:08 -04:00
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