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)
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
/* AR-ShipDesign — Tema Oscuro */
|
||||
|
||||
QMainWindow, QDialog, QWidget {
|
||||
background-color: #1e2128;
|
||||
color: #e0e0e0;
|
||||
font-family: "Segoe UI", Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
QMenuBar {
|
||||
background-color: #252830;
|
||||
color: #e0e0e0;
|
||||
border-bottom: 1px solid #3a3f4b;
|
||||
}
|
||||
QMenuBar::item:selected { background-color: #3a4050; }
|
||||
|
||||
QMenu {
|
||||
background-color: #2c313a;
|
||||
color: #e0e0e0;
|
||||
border: 1px solid #3a3f4b;
|
||||
}
|
||||
QMenu::item:selected { background-color: #1565c0; }
|
||||
QMenu::separator { height: 1px; background: #3a3f4b; }
|
||||
|
||||
QToolBar {
|
||||
background-color: #252830;
|
||||
border-bottom: 1px solid #3a3f4b;
|
||||
spacing: 4px;
|
||||
padding: 2px;
|
||||
}
|
||||
QToolButton {
|
||||
background: transparent;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 3px;
|
||||
padding: 3px;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
QToolButton:hover { background-color: #3a4050; border-color: #5a6070; }
|
||||
QToolButton:pressed { background-color: #1565c0; }
|
||||
|
||||
QSplitter::handle { background-color: #3a3f4b; }
|
||||
QSplitter::handle:horizontal { width: 3px; }
|
||||
QSplitter::handle:vertical { height: 3px; }
|
||||
|
||||
QTreeWidget, QTreeView, QListView, QTableView, QTableWidget {
|
||||
background-color: #1e2128;
|
||||
alternate-background-color: #242830;
|
||||
color: #e0e0e0;
|
||||
border: 1px solid #3a3f4b;
|
||||
gridline-color: #3a3f4b;
|
||||
selection-background-color: #1565c0;
|
||||
selection-color: #ffffff;
|
||||
}
|
||||
QTreeWidget::item:hover, QTreeView::item:hover { background-color: #2a2f3a; }
|
||||
QHeaderView::section {
|
||||
background-color: #2c313a;
|
||||
color: #b0b8c8;
|
||||
border: 1px solid #3a3f4b;
|
||||
padding: 4px 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #3a3f4b;
|
||||
background-color: #1e2128;
|
||||
}
|
||||
QTabBar::tab {
|
||||
background-color: #252830;
|
||||
color: #a0a8b8;
|
||||
border: 1px solid #3a3f4b;
|
||||
border-bottom: none;
|
||||
padding: 5px 10px;
|
||||
margin-right: 1px;
|
||||
}
|
||||
QTabBar::tab:selected {
|
||||
background-color: #1e2128;
|
||||
color: #ffffff;
|
||||
border-bottom: 2px solid #1976d2;
|
||||
}
|
||||
QTabBar::tab:hover { background-color: #2c313a; color: #e0e0e0; }
|
||||
|
||||
QScrollBar:vertical {
|
||||
background-color: #1e2128;
|
||||
width: 10px;
|
||||
}
|
||||
QScrollBar::handle:vertical {
|
||||
background-color: #4a4f5b;
|
||||
border-radius: 4px;
|
||||
min-height: 20px;
|
||||
}
|
||||
QScrollBar::handle:vertical:hover { background-color: #5a6070; }
|
||||
QScrollBar:horizontal {
|
||||
background-color: #1e2128;
|
||||
height: 10px;
|
||||
}
|
||||
QScrollBar::handle:horizontal {
|
||||
background-color: #4a4f5b;
|
||||
border-radius: 4px;
|
||||
min-width: 20px;
|
||||
}
|
||||
|
||||
QPushButton {
|
||||
background-color: #1976d2;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
padding: 6px 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
QPushButton:hover { background-color: #1e88e5; }
|
||||
QPushButton:pressed { background-color: #1565c0; }
|
||||
QPushButton:disabled { background-color: #3a3f4b; color: #6a7080; }
|
||||
|
||||
QPushButton[secondary="true"] {
|
||||
background-color: transparent;
|
||||
color: #90caf9;
|
||||
border: 1px solid #1976d2;
|
||||
}
|
||||
QPushButton[secondary="true"]:hover { background-color: #1a2a3a; }
|
||||
|
||||
QLineEdit, QSpinBox, QDoubleSpinBox, QComboBox {
|
||||
background-color: #2c313a;
|
||||
color: #e0e0e0;
|
||||
border: 1px solid #4a4f5b;
|
||||
border-radius: 3px;
|
||||
padding: 4px 6px;
|
||||
}
|
||||
QLineEdit:focus, QSpinBox:focus, QDoubleSpinBox:focus, QComboBox:focus {
|
||||
border-color: #1976d2;
|
||||
}
|
||||
|
||||
QComboBox::drop-down { border: none; }
|
||||
QComboBox::down-arrow { image: none; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid #a0a8b8; margin-right: 6px; }
|
||||
QComboBox QAbstractItemView { background-color: #2c313a; color: #e0e0e0; selection-background-color: #1565c0; }
|
||||
|
||||
QLabel { color: #e0e0e0; }
|
||||
QLabel[heading="true"] { font-size: 14px; font-weight: bold; color: #90caf9; }
|
||||
QLabel[muted="true"] { color: #7a8090; }
|
||||
|
||||
QStatusBar {
|
||||
background-color: #1565c0;
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
}
|
||||
QStatusBar::item { border: none; }
|
||||
|
||||
/* Panel Hidrostáticos — siempre visible abajo */
|
||||
#hydrostaticsPanel {
|
||||
background-color: #151a22;
|
||||
border-top: 2px solid #1976d2;
|
||||
}
|
||||
#hydrostaticsPanel QLabel { font-family: "Consolas", monospace; font-size: 12px; }
|
||||
#hydrostaticsPanel QLabel[value="true"] { color: #80deea; font-weight: bold; }
|
||||
#hydrostaticsPanel QLabel[label="true"] { color: #7a8090; }
|
||||
#hydrostaticsPanel QLabel[imo_ok="true"] { color: #66bb6a; font-weight: bold; }
|
||||
#hydrostaticsPanel QLabel[imo_fail="true"] { color: #ef5350; font-weight: bold; }
|
||||
|
||||
/* Panel Árbol de Proyecto */
|
||||
#projectTree { border-right: 1px solid #3a3f4b; }
|
||||
|
||||
/* Panel Propiedades */
|
||||
#propertiesPanel { border-left: 1px solid #3a3f4b; }
|
||||
Reference in New Issue
Block a user