156 lines
5.0 KiB
Markdown
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 |