Calc/README_MEJORAS_PYSIDE6.md

156 lines
5.0 KiB
Markdown

# 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
```python
# 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
```python
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
```python
# Escribe "sympy." y aparece popup
# Presiona Enter para cerrar sin seleccionar
# Escribe "x." después de definir una variable
```
## Comando de Ejecución
```bash
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