31 lines
1.1 KiB
Markdown
31 lines
1.1 KiB
Markdown
# `gui/view.py`
|
|
|
|
## Propósito
|
|
Vista principal basada en `customtkinter` que define la interfaz de procesamiento y expone métodos para enlazar callbacks y comunicar estado.
|
|
|
|
## API pública
|
|
|
|
### `class InvoiceAppView`
|
|
- `set_on_select_root(cb)`, `set_on_process(cb)`, `set_on_select_csv(cb)`
|
|
- Getters: `get_root_path()`, `get_keywords()`, `get_fields()`, `get_csv_path()`
|
|
- Output: `append_output(text)`, `append_output_safe(text)`
|
|
- Estado: `set_processing(bool)`
|
|
|
|
### Keywords / patrones de archivos
|
|
|
|
- En la pestaña principal, cada Tipo de Documento tiene un campo de **Keyword/Patrón**.
|
|
- Se aceptan tanto palabras simples (sin `*` ni `?`) como patrones tipo Windows con `*` y `?`.
|
|
- Si el patrón **no incluye extensión**, se aplica sobre el nombre sin extensión y solo se consideran archivos `.pdf`, `.tif`, `.tiff`.
|
|
- Si el patrón **incluye extensión** válida (p. ej. `*_OK?.pdf`), se aplica sobre el nombre completo respetando esa extensión.
|
|
|
|
## Ejemplo
|
|
```python
|
|
from gui.view import InvoiceAppView
|
|
|
|
view = InvoiceAppView()
|
|
view.set_on_process(lambda: print("Procesar!"))
|
|
view.mainloop()
|
|
```
|
|
|
|
|