From 74bdbe2975919fd120b28f34f5dd2d5bf4203134 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sat, 16 Dec 2023 12:34:23 +0000 Subject: [PATCH] Improve open in / import from Audacity --- app/musicmuster.py | 1 + app/playlists.py | 47 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index 1135f3a..8abf3fd 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -219,6 +219,7 @@ class Window(QMainWindow, Ui_MainWindow): self.active_proxy_model = lambda: self.tabPlaylist.currentWidget().model() self.move_source_rows: Optional[List[int]] = None self.move_source_model: Optional[PlaylistProxyModel] = None + self.audacity_file_path: Optional[str] = None if Config.CARTS_HIDE: self.cartsWidget.hide() diff --git a/app/playlists.py b/app/playlists.py index 4dc1fb6..6177f87 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -346,12 +346,19 @@ class PlaylistTab(QTableView): track_row = not header_row current_row = model_row_number == track_sequence.now.plr_rownum next_row = model_row_number == track_sequence.next.plr_rownum + track_path = self.source_model.get_row_info(model_row_number).path - # Open in Audacity + # Open/import in/from Audacity if track_row and not current_row: - self._add_context_menu( - "Open in Audacity", lambda: self.open_in_audacity(model_row_number) - ) + if track_path == self.musicmuster.audacity_file_path: + # This track was opened in Audacity + self._add_context_menu( + "Update from Audacity", lambda: self._import_from_audacity(model_row_number) + ) + else: + self._add_context_menu( + "Open in Audacity", lambda: self._open_in_audacity(model_row_number) + ) # Rescan if track_row and not current_row: @@ -536,6 +543,24 @@ class PlaylistTab(QTableView): ) ) + def _import_from_audacity(self, row_number: int) -> None: + """ + Import current Audacity track to passed row + """ + + # Notify user if audacity not running + if "audacity" not in [i.name() for i in psutil.process_iter()]: + show_warning(self.musicmuster, "Audacity", "Audacity is not running") + return + + audacity = self.audacity + if not audacity: + return + + audacity.export_file() + self.musicmuster.audacity_file_path = None + self._rescan(row_number) + def _info_row(self, row_number: int) -> None: """Display popup with info re row""" @@ -561,7 +586,7 @@ class PlaylistTab(QTableView): self.source_model.mark_unplayed(row_numbers) self.clear_selection() - def open_in_audacity(self, row_number: int) -> None: + def _open_in_audacity(self, row_number: int) -> None: """ Open track in passed row in Audacity """ @@ -575,15 +600,9 @@ class PlaylistTab(QTableView): if not path: return - audacity = AudacityManager() - audacity.open_file(path) - if ask_yes_no( - "Export file", - "Click yes to export file, no to ignore", - parent=self.musicmuster, - ): - audacity.export_file() - self._rescan(row_number) + self.musicmuster.audacity_file_path = path + self.audacity = AudacityManager() + self.audacity.open_file(path) def _rescan(self, row_number: int) -> None: """Rescan track"""