Files
IPSExtractor/docs/gui/controller.md
T

33 lines
1.1 KiB
Markdown

# `gui/controller.py`
## Propósito
Controlador principal de la GUI: enlaza la vista con los servicios de aplicación, maneja selección de carpetas/CSV, abre el selector de campos y ejecuta el procesamiento por radicado.
## API pública
### `class AppController`
- `__init__(view, service)`: inicializa y vincula callbacks.
- `on_select_root()`: abre diálogo de carpeta para la raíz.
- `on_select_csv()`: abre diálogo para guardar CSV.
- `on_process()`: coordina selección de campos y el procesamiento por radicado.
## Flujo
1) Construye schema/muestra de factura cuando es necesario.
2) Abre `FieldSelectorDialog` para elegir campos (y alias).
3) Relanza el procesamiento por radicado, emite JSON y escribe CSV incremental.
## Ejemplo
```python
from gui.view import InvoiceAppView
from gui.controller import AppController
from application.service import InvoiceProcessingService
from application.strategies import OllamaExtractor
view = InvoiceAppView()
svc = InvoiceProcessingService(OllamaExtractor())
controller = AppController(view, svc)
view.mainloop()
```