# 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.