Metadata-Version: 2.4
Name: haeppycomplements
Version: 1.0.0
Summary: Suite de componentes PySide6 reutilizables. Primer componente: PowerGrid.
Author: Haeppy28
License: MIT
Project-URL: Homepage, https://github.com/Haeppy28/HaeppyComplements
Project-URL: Repository, https://github.com/Haeppy28/HaeppyComplements
Keywords: pyside6,qt,table,datagrid,gui,components,haeppycomplements
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PySide6>=6.5
Provides-Extra: excel
Requires-Dist: openpyxl>=3.0; extra == "excel"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-qt; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Dynamic: license-file

# HaeppyComplements

Suite de **componentes PySide6 reutilizables** para construir aplicaciones de
escritorio de forma rapida, consistente y escalable.

El primer componente es **PowerGrid**, una tabla avanzada con filtros estilo
Excel, resumenes, subtablas con *lazy loading*, exportacion a Excel y estilos
intercambiables en caliente.

```
HaeppyComplements
├── powergrid     (ya disponible)
├── componente2   (futuro)
├── componente3   (futuro)
└── ...
```

Cada componente vive en un subpaquete propio de `haeppycomplements`, totalmente
independiente de los demas: agregar un componente nuevo no toca nada existente.

---

## Instalacion

```bash
pip install haeppycomplements          # base (PySide6 incluido)
pip install "haeppycomplements[excel]" # + exportacion a Excel (openpyxl)
```

Desde GitHub (pre-publicacion):

```bash
pip install git+https://github.com/Haeppy28/HaeppyComplements.git
```

Desarrollo local (clonado del repositorio):

```bash
pip install -e .[dev]    # instalacion editable + pytest
```

**Requisitos:** Python >= 3.9.

---

## Uso basico (PowerGrid)

```python
from haeppycomplements.powergrid import PowerGrid, ColumnDef

columns = [
    ColumnDef("Codigo",   type="text",   width=100),
    ColumnDef("Debito",   type="number", width=110, format="#,##0.00", summary="sum"),
    ColumnDef("Fecha",    type="date",   width=100, format="dd/MM/yyyy"),
    ColumnDef("Estado",   type="combo",  width=120, items=["Activo", "Inactivo"]),
    ColumnDef("Sel",      type="checkbox", width=60),
]

grid = PowerGrid(columns=columns, data=[...])
```

Tambien estan disponibles `setup_table` (equivalente a `PowerGrid`),
`PowerTableView` (la clase) y `ColumnDef`.

### Lo que trae PowerGrid

| Area | Funcionalidades |
|---|---|
| **Filtros** | Cajas por columna con operadores (`contains`, `>=`, `between`, ...) y menu contextual estilo Excel; valores encadenados entre columnas |
| **Fechas** | Arbol **Ano -> Mes -> Fecha contraido** con seleccion jerarquica y busqueda |
| **Resumenes** | `sum`, `count`, `avg`, `min`, `max` en una barra configurable |
| **Subtablas** | Detalle por fila, anidables en varios niveles, con *lazy loading* sincrono y asincrono |
| **Columnas** | `text`, `number`, `date`, `combo`, `checkbox` con formatos, colores y alineacion |
| **Exportar/Copiar** | Excel (`.xlsx`) con estilo y columnas ocultas; portapapeles TSV |
| **Estilos** | 5 temas intercambiables en caliente, definidos por **tokens de color** |
| **Iconos** | Menu del encabezado parametrizable por accion y estado |

Documentacion detallada del componente: [docs/powergrid_manual.md](docs/powergrid_manual.md).

---

## Estructura del repositorio

```
HaeppyComplements/
├── src/haeppycomplements/
│   ├── __init__.py          # version + registro de componentes
│   └── powergrid/           # componente PowerGrid
│       ├── ui/  core/  features/
│       ├── styles/*.qss     # temas por tokens
│       └── resources/*.svg  # iconos
├── examples/                # demos (requieren Python + PySide6)
├── tests/                   # pytest (Qt offscreen)
└── docs/                    # manuales por componente
```

## Ejemplos

Las demos viven en `examples/` y se ejecutan desde la raiz del proyecto
(recomendado con `pip install -e .`):

```bash
python examples/demo_full_powergrid.py   # demo completa (requiere nomina.db)
python examples/demo_contable.py
python examples/demo_style_contable.py
python examples/demo_lazy_subtables.py
python examples/demo_nomina_db.py        # requiere: python examples/example_db_sql/build_db.py
```

## Tests

```bash
pip install -e .[dev]
pytest
```

La suite corre con Qt en modo `offscreen` (sin pantalla), apta para CI local
y GitHub Actions.

## Publicacion

- **Version:** se toma de `haeppycomplements/__init__.py::__version__` (un solo
  origen). Actual semantica: `MAYOR.MENOR.PATCH`.
- **Releases:** cada release publica se marca con un tag `vX.Y.Z` en GitHub;
  el workflow de GitHub Actions construye el wheel/sdist y lo publica en PyPI.
- **Historial:** ver [CHANGELOG.md](CHANGELOG.md).

## Licencia

[MIT](LICENSE) - Copyright (c) 2026 Haeppy28
