diff --git a/src/request_tab_widget.py b/src/request_tab_widget.py index 49003ba..3f53b11 100644 --- a/src/request_tab_widget.py +++ b/src/request_tab_widget.py @@ -936,13 +936,20 @@ class RequestTabWidget(Gtk.Box): if not isinstance(script_result, ScriptResult): return - # Show container - self.script_results_container.set_visible(True) + # Determine if there's meaningful content to display (before building output_text) + has_content = ( + (script_result.success and script_result.output.strip()) or # Has console output + script_result.variable_updates or # Set variables + script_result.warnings or # Has warnings + not script_result.success # Has errors + ) - # Adjust paned positions to make the panel visible (use idle_add to wait for proper sizing) - GLib.idle_add(self._adjust_paned_for_script_results) + # If no content, hide the panel and return early + if not has_content: + self._clear_script_results() + return - # Set status icon + # Build output text for display if script_result.success: self.script_status_icon.set_from_icon_name("object-select-symbolic") output_text = script_result.output @@ -968,6 +975,12 @@ class RequestTabWidget(Gtk.Box): for warning in script_result.warnings: output_text += f"\n⚠ {warning}" + # Show container and display output + self.script_results_container.set_visible(True) + + # Adjust paned positions to make the panel visible (use idle_add to wait for proper sizing) + GLib.idle_add(self._adjust_paned_for_script_results) + # Set output text buffer = self.script_output_textview.get_buffer() buffer.set_text(output_text) @@ -1017,13 +1030,20 @@ class RequestTabWidget(Gtk.Box): if not isinstance(preprocessing_result, ScriptResult): return - # Show container - self.preprocessing_results_container.set_visible(True) + # Determine if there's meaningful content to display (before building output_text) + has_content = ( + (preprocessing_result.success and preprocessing_result.output.strip()) or # Has console output + preprocessing_result.variable_updates or # Set variables + preprocessing_result.warnings or # Has warnings + not preprocessing_result.success # Has errors + ) - # Adjust paned positions to make the panel visible (use idle_add to wait for proper sizing) - GLib.idle_add(self._adjust_paned_for_preprocessing_results) + # If no content, hide the panel and return early + if not has_content: + self._clear_preprocessing_results() + return - # Set status icon + # Build output text for display if preprocessing_result.success: self.preprocessing_status_icon.set_from_icon_name("object-select-symbolic") output_text = preprocessing_result.output @@ -1049,13 +1069,19 @@ class RequestTabWidget(Gtk.Box): for warning in preprocessing_result.warnings: output_text += f"\n⚠ {warning}" - # Add request modification summary if successful + # Add request modification summary if successful and there's other content to show if preprocessing_result.success and preprocessing_result.modified_request: if output_text: output_text += "\n" output_text += "\n--- Request Modified ---" output_text += "\n✓ Request was modified by preprocessing script" + # Show container and display output + self.preprocessing_results_container.set_visible(True) + + # Adjust paned positions to make the panel visible (use idle_add to wait for proper sizing) + GLib.idle_add(self._adjust_paned_for_preprocessing_results) + # Set output text buffer = self.preprocessing_output_textview.get_buffer() buffer.set_text(output_text)