# PocketSync

Herramienta de escritorio para sincronizar archivos de emulación retro (ES-DE y ROMs) hacia almacenamiento externo. Soporta múltiples perfiles (uno por consola o dispositivo).

## Requisitos

- Windows 10 / 11
- `robocopy` (incluido en Windows por defecto)
- Para ejecutar desde código fuente: Python 3.6+

## Uso rápido (ejecutable)

Descarga `PocketSync.exe` y ejecútalo directamente. No requiere Python instalado.

## Uso desde código fuente

```bash
python pocketsync.py
```

## Configurar y usar la app

1. **Selecciona o crea un perfil** en el desplegable superior (New / Rename / Delete).
2. **Configura las 4 rutas:**
   - ES-DE origen → carpeta local de ES-DE
   - ES-DE destino → carpeta en el almacenamiento externo
   - ROMs origen → carpeta local de ROMs
   - ROMs destino → carpeta en el almacenamiento externo
3. **Selecciona los sistemas** a sincronizar (Select All / None para selección rápida).
4. Pulsa **Sync Now**.

La configuración se guarda automáticamente en `config.json` al cerrar.

## Generar el ejecutable

### 1. Crear el entorno virtual e instalar dependencias

```bash
py -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
```

### 2. Añadir icono (opcional)

Coloca un archivo `pocketsync.ico` en la carpeta `assets\`. Sin él, el ejecutable usará el icono genérico de Windows.

### 3. Empaquetar

```bash
.venv\Scripts\activate
pyinstaller pocketsync.spec
```

El resultado queda en `dist\PocketSync.exe`.

## Estructura del proyecto

```
pocketsync.py           # Entry point
pocketsync.spec         # Configuración de PyInstaller
requirements.txt        # Solo pyinstaller>=6.0
config.json             # Perfiles guardados (se crea al primer uso)
assets/
    pocketsync.ico      # Icono del .exe (añadir manualmente)

core/
    config.py           # Gestión de perfiles y persistencia
    sync_engine.py      # Interfaz abstracta de sincronización
    robocopy_engine.py  # Implementación con Robocopy

ui/
    app.py              # Ventana principal y lógica de sync
    profile_bar.py      # Selector de perfiles
    path_panel.py       # Selectores de ruta
    system_list.py      # Lista de sistemas
    status_bar.py       # Barra de estado
    summary_panel.py    # Resumen de la última sincronización
    styles.py           # Colores y fuentes
```

## Notas

- La sincronización usa `robocopy /MIR`, que replica exactamente el origen en el destino (borra archivos en destino que no estén en origen).
- Cada perfil guarda sus 4 rutas y la selección de sistemas de forma independiente.
- El proceso de sync corre en un hilo separado para no bloquear la interfaz.
