diff --git a/gui/tabs/run_tab.py b/gui/tabs/run_tab.py index 3c245dd..662fbb0 100644 --- a/gui/tabs/run_tab.py +++ b/gui/tabs/run_tab.py @@ -118,13 +118,16 @@ class RunTab(QTabWidget): def toggle_console(self, state): self.output_text.setVisible(state == Qt.Checked) - self.results_table.setVisible(state == Qt.Checked) + # Don't hide the results table when toggling the console + if state == Qt.Checked: + self.results_table.setVisible(True) def run_script(self): if self.process is not None and self.process.state() == QProcess.Running: print("Script già in esecuzione.") return + # Reset all state variables when starting a new search self.current_context = None self.selected_season = None self.buffer = "" @@ -177,11 +180,23 @@ class RunTab(QTabWidget): ) if "Episodes find:" in self.buffer: - self.results_table.hide() - self.current_context = "episodes" - text_to_show = f"Trovati {self.buffer.split('Episodes find:')[1].split()[0]} episodi!" - self.status_label.setText(text_to_show) - self.status_label.show() + # If we've selected a season and we're now seeing episodes, update the table with episode data + if self.selected_season is not None: + # Check if we have a table to display + if (("┏" in self.buffer or "┌" in self.buffer) and + ("┗" in self.buffer or "┛" in self.buffer or "└" in self.buffer)): + self.parse_and_show_results(self.buffer) + self.status_label.hide() + else: + # We're still waiting for the table data + self.status_label.setText("Caricamento episodi...") + self.status_label.show() + else: + self.results_table.hide() + self.current_context = "episodes" + text_to_show = f"Trovati {self.buffer.split('Episodes find:')[1].split()[0]} episodi!" + self.status_label.setText(text_to_show) + self.status_label.show() elif (("┏" in self.buffer or "┌" in self.buffer) and ("┗" in self.buffer or "┛" in self.buffer or "└" in self.buffer)) or "Seasons found:" in self.buffer: self.parse_and_show_results(self.buffer) @@ -201,6 +216,12 @@ class RunTab(QTabWidget): self.results_table.update_with_seasons(num_seasons) return + # If we've selected a season and we're now seeing episodes, don't update the table with search results + # But only if we don't have a table to display yet + if self.selected_season is not None and "Episodes find:" in text and not (("┏" in text or "┌" in text) and + ("┗" in text or "┛" in text or "└" in text)): + return + if ("┏━━━━━━━┳" in text or "┌───────┬" in text) and "└───────┴" in text: chars_to_find = [] if "┏" in text: @@ -222,6 +243,8 @@ class RunTab(QTabWidget): cells = [cell.strip() for cell in line.split("│")[1:-1]] rows.append(cells) + # Make sure we're showing the table + self.results_table.setVisible(True) self.results_table.update_with_results(headers, rows) def send_input(self): @@ -235,6 +258,8 @@ class RunTab(QTabWidget): self.results_table.hide() else: self.selected_season = user_input + # Clear the buffer to ensure we don't mix old data with new episode data + self.buffer = "" elif self.current_context == "episodes": if "-" in user_input or user_input == "*": @@ -262,6 +287,8 @@ class RunTab(QTabWidget): self.input_field.hide() self.send_button.hide() self.status_label.hide() + # Reset selected_season when the process finishes + self.selected_season = None print("Script terminato.") def update_output(self, text):