Calc/README_MEJORAS_PYSIDE6.md

5.0 KiB

Mejoras Implementadas en Calculadora MAV PySide6

Problemas Solucionados

1. Comentarios en Panel de Resultados

  • Problema: Los comentarios no se copiaban al panel de resultados
  • Solución:
    • Modificada función _evaluate_lines() para detectar comentarios con #
    • Agregado formato especial para comentarios en setup_output_tags()
    • Los comentarios ahora aparecen en verde cursiva en el panel de resultados
    • Correspondencia 1:1 mantenida entre entrada y salida

2. Comentarios en Panel MathJax

  • Problema: Los comentarios no se mostraban correctamente en el panel LaTeX
  • Solución:
    • Mejorado el JavaScript del panel MathJax para manejar comentarios
    • Los comentarios se muestran con formato especial (sin LaTeX)
    • Agregada función preprocessLatex() para mejor procesamiento

3. Filtrado de Contenido en Panel MathJax

  • Problema: Se mostraba todo en el panel LaTeX
  • Solución:
    • Mejorada función _add_to_latex_panel_if_applicable() con reglas claras:
      • Comentarios: Siempre se agregan
      • Asignaciones: Variables = expresiones simbólicas
      • Ecuaciones: Expresiones con símbolos matemáticos
      • Exclusiones: Resultados numéricos simples sin contenido simbólico

4. Persistencia de Dimensiones

  • Problema: Las dimensiones no se guardaban entre sesiones
  • Solución:
    • Agregada función save_settings() mejorada que guarda:
      • Posición de ventana (x, y)
      • Tamaño de ventana (width, height)
      • Tamaños de cada panel del splitter
      • Estado visible/oculto del panel LaTeX
    • Agregada función restore_geometry() para cargar configuración
    • Archivos de configuración separados: hybrid_calc_settings_pyside6.json

5. Parsing LaTeX Mejorado

  • Problema: Errores con divisiones y funciones como sqrt
  • Solución:
    • Mejorado HTML base con macros LaTeX para funciones comunes
    • Agregada función preprocessLatex() en JavaScript:
      • Convierte / a \frac{}{}
      • Convierte sqrt() a \sqrt{}
      • Maneja funciones trigonométricas
    • Mejorada función _sympy_to_latex() con fallbacks
    • Mejor manejo de errores de MathJax con fallback a texto plano

6. Cierre de Popups con Enter

  • Problema: Los popups de autocompletado no se cerraban con Enter
  • Solución:
    • Modificada función _handle_key_press() para detectar Enter/Return
    • Los popups se cierran automáticamente al presionar Enter
    • Mantiene funcionalidad normal de nueva línea

Nuevas Características

📐 Panel MathJax Rediseñado

  • Diseño moderno con gradientes y sombras
  • Scrollbar personalizado
  • Mejor tipografía y espaciado
  • Animaciones suaves de hover
  • Indicadores de tipo por colores

💾 Configuración Persistente

  • Geometría de ventana completamente persistente
  • Tamaños de paneles individuales guardados
  • Configuración en archivo JSON separado
  • Carga automática al iniciar

🎨 Resaltado de Sintaxis Mejorado

  • Colores optimizados para tema oscuro
  • Comentarios en verde cursiva
  • Números, funciones y operadores diferenciados

Estructura de Archivos

Calcv2/
├── main_calc_app_pyside6.py          # Aplicación principal PySide6
├── hybrid_calc_settings_pyside6.json # Configuración persistente
├── hybrid_calc_history_pyside6.txt   # Historial de sesión
└── README_MEJORAS_PYSIDE6.md         # Este archivo

Cómo Probar las Mejoras

1. Comentarios

# Este es un comentario que aparece en ambos paneles
x = 2 + 3  # Comentario al final de línea
# Otro comentario
y = x * 4

2. Ecuaciones LaTeX

from sympy import *
x, y = symbols('x y')

# Divisiones (ahora renderiza correctamente)
expr1 = (x + 1) / (x - 1)

# Funciones sqrt
expr2 = sqrt(x**2 + y**2)

# Funciones trigonométricas
expr3 = sin(x) / cos(x)

# Asignaciones simbólicas
z = x**2 + 2*x + 1

3. Persistencia

  1. Redimensiona la ventana y los paneles
  2. Muestra/oculta el panel LaTeX con F12
  3. Cierra la aplicación
  4. Reabre - debería mantener todas las dimensiones

4. Autocompletado

# Escribe "sympy." y aparece popup
# Presiona Enter para cerrar sin seleccionar
# Escribe "x." después de definir una variable

Comando de Ejecución

python main_calc_app_pyside6.py

Atajos de Teclado

  • F12: Mostrar/ocultar panel LaTeX
  • Ctrl+Enter: Evaluar manualmente
  • Shift+Enter: Evaluar manualmente
  • Escape: Cerrar popups de autocompletado
  • Enter: Cerrar popups y crear nueva línea

Log de Debugging

La aplicación mantiene logs detallados para debugging en:

  • Consola durante ejecución
  • Información de estado en barra inferior
  • Errores de MathJax manejados graciosamente

Próximas Mejoras Sugeridas

  1. Exportar LaTeX: Botón para exportar todas las ecuaciones del panel
  2. Temas: Opción para cambiar entre tema claro/oscuro
  3. Búsqueda: Función de búsqueda en historial
  4. Variables Globales: Panel lateral con variables definidas
  5. Plots Integrados: Mostrar gráficos directamente en el panel LaTeX