Skip to content

Fixed height issues with more than 200 rows. Added GEMINI.md. Added envwrap dependency. Added more ColorsNamed#203

Merged
turulomio merged 7 commits into
mainfrom
200-cells-width-over-200-wrong
Jun 7, 2026
Merged

Fixed height issues with more than 200 rows. Added GEMINI.md. Added envwrap dependency. Added more ColorsNamed#203
turulomio merged 7 commits into
mainfrom
200-cells-width-over-200-wrong

Conversation

@turulomio

Copy link
Copy Markdown
Owner

No description provided.

turulomio added 4 commits June 7, 2026 03:48
…impia y segura:

   1. Explicación: El problema es que Calc calcula las alturas óptimas basándose en el ancho de columna actual. Si insertamos datos y luego ensanchamos la
      columna, Calc no siempre reduce la altura de la fila automáticamente si ya estaba marcada como OptimalHeight. Al hacer un toggle (False y luego True),
      obligamos a Calc a mirar el nuevo ancho.
   2. Corrección: He eliminado la llamada que contaminaba la memoria. Ahora el proceso en setColumnsWidth es:
       * Poner todas las filas a OptimalHeight = False temporalmente para limpiar cualquier cálculo erróneo.
       * Llamar a _set_rows_optimal_height(..., False) para restaurar la altura predeterminada en las filas que no deben tener ajuste de texto.
       * Iterar por bloques sobre las filas que sí están en nuestra memoria (_wrapped_rows) para volver a ponerlas en OptimalHeight = True. Esto fuerza el
         recálculo correcto sobre el nuevo ancho de columna sin añadir nada nuevo a la memoria.

  He verificado que esto mantiene las alturas en 452 cuando el texto cabe en una sola línea tras el ajuste de columnas, y que no afecta a las filas que el
  usuario quiera mantener sin ajuste.
…rendimiento:

   1. Iteración inteligente: En lugar de recorrer cada una de las (potencialmente) millones de filas de una hoja de Calc, ahora solo procesamos la lista de
      filas que sabemos que tienen ajuste de texto activado (_wrapped_rows).
   2. Agrupación por bloques: Seguimos usando la técnica de bloques para minimizar las llamadas a la API de LibreOffice. Si tienes 10.000 filas con ajuste
      de texto seguidas, solo haremos una sola llamada para refrescarlas todas.
   3. Seguridad: He mantenido el uso de getSheetSize() para asegurarnos de que no refrescamos áreas vacías del documento.

  Con este cambio, el rendimiento de setColumnsWidth seguirá siendo excelente incluso en documentos extremadamente grandes. Todas las pruebas de regresión
  siguen pasando.
…l y he documentado el motivo en GEMINI.md.

  Resumen sobre envwrap:
   1. Por qué es necesario: Hemos detectado que tqdm (una de nuestras dependencias) intenta importar envwrap en este entorno. Al usar la librería uno de
      LibreOffice, esta modifica los hooks de importación de Python, lo que hace que si envwrap no está instalado de forma explícita, se produzca un
      ImportError intermitente que rompe los tests y los scripts de demo.
   2. Seguridad: Es una librería segura y extremadamente ligera diseñada para manejar variables de entorno. Su inclusión no supone ningún riesgo para el
      código ni penaliza el rendimiento.
   3. Documentación: He creado una sección específica en GEMINI.md explicando que, aunque no es una dependencia directa de nuestra lógica de negocio, es
      fundamental para la estabilidad del entorno de desarrollo y ejecución cuando conviven tqdm y uno.

  Con esto, el entorno queda estabilizado y la razón de este cambio queda registrada para el futuro.
@turulomio turulomio linked an issue Jun 7, 2026 that may be closed by this pull request
turulomio added 3 commits June 7, 2026 04:02
…e ColorsNamed en unogenerator/commons.py y he actualizado el script de demostración

  para mostrarlos.

  Cambios realizados:

   1. Nuevos colores en ColorsNamed: He ampliado significativamente la lista de colores disponibles, añadiendo:
       * Colores básicos: Cyan, Magenta, Purple, Brown, Lime, Navy, Teal, Olive, Maroon.
       * Colores decorativos: Gold, Silver, Pink, SkyBlue, Salmon, Indigo, Lavender, Beige, Orchid, Turquoise, Chocolate, Coral, Crimson.
       * Variantes oscuras y profundas: DarkBlue, DarkGreen, DarkOrange, DarkRed, DeepPink, DeepSkyBlue, y más.

   2. Actualización de la Demo (unogenerator/demo.py):
       * La hoja Styles de la demo ahora muestra automáticamente todos estos nuevos colores, ya que utiliza introspección sobre la clase ColorsNamed.
       * He actualizado el ejemplo de celda combinada en la demo para que utilice el nuevo color SkyBlue, haciendo la hoja de estilos más vistosa.

  Estos cambios permiten a los usuarios utilizar nombres de colores intuitivos en lugar de códigos hexadecimales, mejorando la legibilidad del código al
  crear documentos. Las pruebas de regresión confirman que la generación de documentos sigue siendo estable y rápida.
@turulomio turulomio changed the title Fixed height issues with more than 200 rows. Added GEMINI.md. Added envwrap dependency Fixed height issues with more than 200 rows. Added GEMINI.md. Added envwrap dependency. Added more ColorsNamed Jun 7, 2026
@turulomio turulomio merged commit be37642 into main Jun 7, 2026
1 check passed
@turulomio turulomio deleted the 200-cells-width-over-200-wrong branch June 7, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

cells width over 200 wrong

1 participant