102 lines
3.5 KiB
Python
102 lines
3.5 KiB
Python
#!/usr/bin/python3
|
|
|
|
from PyQt6.QtWidgets import QDialog, QFileDialog
|
|
|
|
from .library.import_dialog import ImportDialog
|
|
from ..types import Types
|
|
|
|
|
|
class Popups:
|
|
def __init__(self, app, gui):
|
|
self.app = app
|
|
self.gui = gui
|
|
|
|
self.window = gui.window
|
|
|
|
self.audio_file_selector = QFileDialog(self.window, "Select Audio Files")
|
|
self.audio_file_selector.setFileMode(QFileDialog.FileMode.ExistingFiles)
|
|
self.audio_file_selector.setNameFilters(["Audio Files (*.flac *.wav *.mp3 *.ogg *.opus *.m4a)", "Any (*)"])
|
|
self.audio_file_selector.setViewMode(QFileDialog.ViewMode.List)
|
|
|
|
self.playlist_file_selector = QFileDialog(self.window, "Select Playlist")
|
|
self.playlist_file_selector.setFileMode(QFileDialog.FileMode.ExistingFile)
|
|
self.playlist_file_selector.setNameFilters(["Playlists (*.wbz.m3u *.m3u)", "Any (*)"])
|
|
self.playlist_file_selector.setViewMode(QFileDialog.ViewMode.List)
|
|
|
|
self.import_dialog = ImportDialog()
|
|
|
|
self.window.open_track_action.triggered.connect(self.open_tracks)
|
|
self.window.import_track_action.triggered.connect(self.import_tracks)
|
|
self.window.open_playlist_action.triggered.connect(self.open_playlist)
|
|
self.window.import_playlist_action.triggered.connect(self.import_playlist)
|
|
|
|
def select_audio_files(self):
|
|
if self.audio_file_selector.exec():
|
|
return self.audio_file_selector.selectedFiles()
|
|
|
|
def select_playlist_file(self):
|
|
if self.playlist_file_selector.exec():
|
|
return self.playlist_file_selector.selectedFiles()[0]
|
|
|
|
def open_tracks(self):
|
|
files = self.select_audio_files()
|
|
|
|
if files is not None and not files == []:
|
|
self.app.library.open_tracks(files)
|
|
|
|
def get_import_options(self):
|
|
import_options = Types.ImportOptions()
|
|
|
|
if self.import_dialog.tagging_section.overwrite_metadata.isChecked():
|
|
artist = self.import_dialog.tagging_section.artist.text()
|
|
album = self.import_dialog.tagging_section.album.text()
|
|
genre = self.import_dialog.tagging_section.genre.text()
|
|
|
|
if not artist == "":
|
|
import_options.artist = artist
|
|
|
|
if not album == "":
|
|
import_options.album = album
|
|
|
|
if not genre == "":
|
|
import_options.genre = genre
|
|
|
|
if self.import_dialog.file_section.copy_type_copy.isChecked():
|
|
import_options.copy_type = Types.CopyType.copy
|
|
|
|
elif self.import_dialog.file_section.copy_type_move.isChecked():
|
|
import_options.copy_type = Types.CopyType.move
|
|
|
|
return import_options
|
|
|
|
def import_tracks(self):
|
|
files = self.select_audio_files()
|
|
|
|
if files is None or files == []:
|
|
return
|
|
|
|
if self.import_dialog.exec() == QDialog.rejected:
|
|
return
|
|
|
|
import_options = self.get_import_options()
|
|
|
|
self.app.library.import_tracks(files, import_options)
|
|
|
|
def open_playlist(self):
|
|
playlist_path = self.select_playlist_file()
|
|
|
|
if playlist_path is not None and not playlist_path == "":
|
|
self.app.library.open_playlist(playlist_path)
|
|
|
|
def import_playlist(self):
|
|
playlist_path = self.select_playlist_file()
|
|
|
|
if playlist_path is None or playlist_path == "":
|
|
return
|
|
|
|
if self.import_dialog.exec() == QDialog.rejected:
|
|
return
|
|
|
|
import_options = self.get_import_options()
|
|
|
|
self.app.library.import_playlist(playlist_path, import_options)
|