diff --git a/picard/ui/options/renaming.py b/picard/ui/options/renaming.py index 711fe0cd9..4215c98fb 100644 --- a/picard/ui/options/renaming.py +++ b/picard/ui/options/renaming.py @@ -143,23 +143,15 @@ class RenamingOptionsPage(OptionsPage): self.current_row = -1 - def synchronize_selected_example_lines(self, source, target): - """Matches selected item in target to source""" - if source.currentRow() != self.current_row: - self.current_row = source.currentRow() - target.blockSignals(True) - target.setCurrentRow(self.current_row) - target.blockSignals(False) - def match_after_to_before(self): """Sets the selected item in the 'after' list to the corresponding item in the 'before' list. """ - self.synchronize_selected_example_lines(self.ui.example_filename_before, self.ui.example_filename_after) + self.script_editor_page.synchronize_selected_example_lines(self.current_row, self.ui.example_filename_before, self.ui.example_filename_after) def match_before_to_after(self): """Sets the selected item in the 'before' list to the corresponding item in the 'after' list. """ - self.synchronize_selected_example_lines(self.ui.example_filename_after, self.ui.example_filename_before) + self.script_editor_page.synchronize_selected_example_lines(self.current_row, self.ui.example_filename_after, self.ui.example_filename_before) def show_script_editing_page(self): self.script_editor_page.show() @@ -214,14 +206,9 @@ class RenamingOptionsPage(OptionsPage): self.script_editor_page.display_examples() def display_examples(self): - self.ui.example_filename_before.clear() - self.ui.example_filename_after.clear() self.current_row = -1 - examples = self.examples.get_examples() - for before, after in sorted(examples, key=lambda x: x[1]): - self.ui.example_filename_before.addItem(before) - self.ui.example_filename_after.addItem(after) + self.script_editor_page.update_example_listboxes(self.ui.example_filename_before, self.ui.example_filename_after, examples) def load(self): config = get_config() diff --git a/picard/ui/scripteditor.py b/picard/ui/scripteditor.py index ca03ba724..437c610df 100644 --- a/picard/ui/scripteditor.py +++ b/picard/ui/scripteditor.py @@ -368,23 +368,24 @@ class ScriptEditorPage(PicardDialog): self.set_script(selected_script) self.update_examples() - def synchronize_selected_example_lines(self, source, target): + @staticmethod + def synchronize_selected_example_lines(current_row, source, target): """Matches selected item in target to source""" - if source.currentRow() != self.current_row: - self.current_row = source.currentRow() + if source.currentRow() != current_row: + current_row = source.currentRow() target.blockSignals(True) - target.setCurrentRow(self.current_row) + target.setCurrentRow(current_row) target.blockSignals(False) def match_after_to_before(self): """Sets the selected item in the 'after' list to the corresponding item in the 'before' list. """ - self.synchronize_selected_example_lines(self.ui.example_filename_before, self.ui.example_filename_after) + self.synchronize_selected_example_lines(self.current_row, self.ui.example_filename_before, self.ui.example_filename_after) def match_before_to_after(self): """Sets the selected item in the 'before' list to the corresponding item in the 'after' list. """ - self.synchronize_selected_example_lines(self.ui.example_filename_after, self.ui.example_filename_before) + self.synchronize_selected_example_lines(self.current_row, self.ui.example_filename_after, self.ui.example_filename_before) def save_script(self): """Emits a `save` signal to trigger appropriate save action in the parent object. @@ -420,20 +421,23 @@ class ScriptEditorPage(PicardDialog): self.examples.update_examples(override) self.display_examples() + @staticmethod + def update_example_listboxes(before_listbox, after_listbox, examples): + before_listbox.clear() + after_listbox.clear() + for before, after in sorted(examples, key=lambda x: x[1]): + before_listbox.addItem(before) + after_listbox.addItem(after) + def display_examples(self, send_signal=True): """Update the display of the before and after file naming examples. Optionally emits an `update` signal. Args: send_signal (bool, optional): Determines if an `update` signal is emitted. Defaults to True. """ - self.ui.example_filename_before.clear() - self.ui.example_filename_after.clear() self.current_row = -1 - examples = self.examples.get_examples() - for before, after in sorted(examples, key=lambda x: x[1]): - self.ui.example_filename_before.addItem(before) - self.ui.example_filename_after.addItem(after) + self.update_example_listboxes(self.ui.example_filename_before, self.ui.example_filename_after, examples) if send_signal: self.signal_update.emit()