From aaddfbc3faf9915ef4a908cebe5f46ea46ab0002 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 11 Jun 2025 11:07:07 +0200 Subject: [PATCH] =?UTF-8?q?Actualizaci=C3=B3n=20de=20la=20interfaz=20de=20?= =?UTF-8?q?la=20calculadora=20h=C3=ADbrida=20con=20ajustes=20en=20la=20geo?= =?UTF-8?q?metr=C3=ADa=20de=20la=20ventana=20y=20el=20sistema=20de=20autoc?= =?UTF-8?q?ompletado.=20Se=20a=C3=B1ade=20una=20nueva=20opci=C3=B3n=20para?= =?UTF-8?q?=20copiar=20informaci=C3=B3n=20de=20depuraci=C3=B3n=20al=20port?= =?UTF-8?q?apapeles,=20mejorando=20la=20accesibilidad=20de=20datos.=20Se?= =?UTF-8?q?=20optimiza=20el=20historial=20de=20c=C3=A1lculos=20y=20se=20re?= =?UTF-8?q?alizan=20mejoras=20en=20la=20gesti=C3=B3n=20de=20variables=20si?= =?UTF-8?q?mb=C3=B3licas=20en=20el=20motor=20algebraico.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hybrid_calc_history.txt | 3 +- hybrid_calc_settings.json | 10 +++--- main_calc_app_pyside6.py | 67 +++++++++++++++++++++++++++++++++++++-- main_evaluation_puro.py | 7 ++-- 4 files changed, 76 insertions(+), 11 deletions(-) diff --git a/hybrid_calc_history.txt b/hybrid_calc_history.txt index 8290874..eec318d 100644 --- a/hybrid_calc_history.txt +++ b/hybrid_calc_history.txt @@ -1,4 +1,5 @@ $$Brix = \frac{Brix_{syrup} \cdot \delta_{syrup} + (Brix_{water} \cdot \delta_{water} \cdot Rateo)}{\delta_{syrup} + \delta_{water} \cdot Rateo}$$ - +Brix=9.5 +Rateo=? diff --git a/hybrid_calc_settings.json b/hybrid_calc_settings.json index a750eb2..efa7dd0 100644 --- a/hybrid_calc_settings.json +++ b/hybrid_calc_settings.json @@ -1,15 +1,15 @@ { "window_geometry": { - "x": 332, - "y": 170, - "width": 1353, + "x": 119, + "y": 143, + "width": 1220, "height": 700 }, "debug_mode": false, "latex_panel_visible": true, "sash_pos_x": 450, "splitter_sizes": [ - 357, - 472 + 300, + 396 ] } \ No newline at end of file diff --git a/main_calc_app_pyside6.py b/main_calc_app_pyside6.py index c45ad10..ff9bdb9 100644 --- a/main_calc_app_pyside6.py +++ b/main_calc_app_pyside6.py @@ -25,7 +25,8 @@ from PySide6.QtCore import ( from PySide6.QtGui import ( QFont, QTextCursor, QTextCharFormat, QColor, QIcon, QSyntaxHighlighter, QTextDocument, QKeySequence, - QShortcut, QFontMetrics, QPalette, QTextOption, QAction + QShortcut, QFontMetrics, QPalette, QTextOption, QAction, + QClipboard ) from PySide6.QtWebEngineWidgets import QWebEngineView from PySide6.QtWebEngineCore import QWebEngineSettings @@ -834,6 +835,13 @@ class HybridCalculatorPySide6(QMainWindow): latex_status_action.triggered.connect(self._show_latex_panel_status) diag_menu.addAction(latex_status_action) + diag_menu.addSeparator() + + copy_debug_action = QAction("馃搵 Copiar Debug al Portapapeles", self) + copy_debug_action.setShortcut(QKeySequence("Ctrl+Shift+C")) + copy_debug_action.triggered.connect(self._copy_debug_to_clipboard) + diag_menu.addAction(copy_debug_action) + # Men煤 Tipos types_menu = menubar.addMenu("Tipos") @@ -2046,7 +2054,62 @@ PARA SOLUCIONAR: self._show_info_dialog("Estado Panel LaTeX", status_message) - # ========== UTILIDADES ========== + def _copy_debug_to_clipboard(self): + """Copia informaci贸n de debug completa al portapapeles""" + try: + # Obtener contenido de entrada + input_content = self.input_text.toPlainText() + + # Obtener contenido de salida (texto plano) + output_content = self.output_text.toPlainText() + + # Obtener informaci贸n del sistema + context_info = self.engine.get_context_info() + + # Obtener ecuaciones LaTeX si est谩n disponibles + latex_equations = "" + if hasattr(self, '_latex_equations') and self._latex_equations: + latex_equations = "\\n".join([ + f"[{eq['type']}] {eq['content']}" + for eq in self._latex_equations + ]) + + # Crear reporte de debug completo + debug_report = f"""=== REPORTE DEBUG CALCULADORA MAV === +Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')} + +=== ENTRADA === +{input_content} + +=== SALIDA === +{output_content} + +=== INFORMACI脫N DEL SISTEMA === +Ecuaciones en sistema: {context_info.get('equations', 0)} +Variables definidas: {context_info.get('variables', 0)} +Variables activas: {', '.join(context_info.get('variable_names', []))} + +=== PANEL LATEX === +Ecuaciones LaTeX: {len(self._latex_equations) if hasattr(self, '_latex_equations') else 0} +{latex_equations} + +=== CONFIGURACI脫N === +WebEngine disponible: {self.latex_panel._webview_available} +MathJax listo: {getattr(self.latex_panel, '_mathjax_ready', False)} +Panel LaTeX visible: {self.latex_panel_visible} + +=== FIN REPORTE ===""" + + # Copiar al portapapeles + clipboard = QApplication.clipboard() + clipboard.setText(debug_report) + + # Mostrar confirmaci贸n + self._update_status("馃搵 Informaci贸n de debug copiada al portapapeles", 3000) + + except Exception as e: + self.logger.error(f"Error copiando debug: {e}") + QMessageBox.critical(self, "Error", f"Error copiando debug al portapapeles:\\n{e}") def _obtener_ayuda(self, input_str: str) -> Optional[str]: """Obtiene ayuda usando helpers din谩micos""" diff --git a/main_evaluation_puro.py b/main_evaluation_puro.py index aae730e..92912b7 100644 --- a/main_evaluation_puro.py +++ b/main_evaluation_puro.py @@ -618,9 +618,10 @@ class PureAlgebraicEngine: return Eq(var_symbol, final_value) else: - # Hay variables con valores simb贸licos, mostrar la relaci贸n algebraica - # Ejemplo: t = x - 5 (donde x = t + 5, es simb贸lico) - result_eq = Eq(var_symbol, solution_value) + # Hay variables con valores simb贸licos, intentar resolver lo m谩ximo posible + # Aplicar resoluci贸n iterativa parcial + resolved_solution = self._resolve_iteratively(solution_value) + result_eq = Eq(var_symbol, resolved_solution) return result_eq else: # No hay variables sin resolver, intentar resolver completamente