Add load/save playlist from/to file menu options

This commit is contained in:
et0h 2019-08-19 17:43:21 +01:00
parent 143df6c999
commit 7d694797aa
7 changed files with 61 additions and 0 deletions

View File

@ -1730,6 +1730,12 @@ class SyncplayPlaylist():
if newPlaylist:
self.changePlaylist(newPlaylist, username=None, resetIndex=True)
def savePlaylistToFile(self, path):
with open(path, 'w') as playlistFile:
playlistToSave = utils.getListAsMultilineString(self._playlist)
playlistFile.write(playlistToSave)
self._ui.showMessage("Playlist saved as {}".format(path)) # TODO: Move to messages_en
def changePlaylist(self, files, username=None, resetIndex=False):
if self._playlist == files:

View File

@ -297,6 +297,8 @@ de = {
"openmedia-menu-label": "&Mediendatei öffnen...",
"openstreamurl-menu-label": "&Stream URL öffnen",
"setmediadirectories-menu-label": "Set media &directories", # TODO: Translate
"loadplaylistfromfile-menu-label": "&Load playlist from file", # TODO: Translate
"saveplaylisttofile-menu-label": "&Save playlist to file", # TODO: Translate
"exit-menu-label": "&Beenden",
"advanced-menu-label": "&Erweitert",
"window-menu-label": "&Fenster",

View File

@ -299,6 +299,8 @@ en = {
"openmedia-menu-label": "&Open media file",
"openstreamurl-menu-label": "Open &media stream URL",
"setmediadirectories-menu-label": "Set media &directories",
"loadplaylistfromfile-menu-label": "&Load playlist from file",
"saveplaylisttofile-menu-label": "&Save playlist to file",
"exit-menu-label": "E&xit",
"advanced-menu-label": "&Advanced",
"window-menu-label": "&Window",

View File

@ -299,6 +299,8 @@ es = {
"openmedia-menu-label": "A&brir archivo multimedia",
"openstreamurl-menu-label": "Abrir URL de &flujo de medios",
"setmediadirectories-menu-label": "&Establecer directorios de medios",
"loadplaylistfromfile-menu-label": "&Load playlist from file", # TODO: Translate
"saveplaylisttofile-menu-label": "&Save playlist to file", # TODO: Translate
"exit-menu-label": "&Salir",
"advanced-menu-label": "A&vanzado",
"window-menu-label": "&Ventana",

View File

@ -299,6 +299,8 @@ it = {
"openmedia-menu-label": "&Apri file multimediali",
"openstreamurl-menu-label": "Apri indirizzo di &rete",
"setmediadirectories-menu-label": "Imposta &cartelle multimediali",
"loadplaylistfromfile-menu-label": "&Load playlist from file", # TODO: Translate
"saveplaylisttofile-menu-label": "&Save playlist to file", # TODO: Translate
"exit-menu-label": "&Esci",
"advanced-menu-label": "&Avanzate",
"window-menu-label": "&Finestra",

View File

@ -301,6 +301,8 @@ ru = {
"openmedia-menu-label": "&Открыть файл",
"openstreamurl-menu-label": "Открыть &ссылку",
"setmediadirectories-menu-label": "&Папки воспроизведения",
"loadplaylistfromfile-menu-label": "&Load playlist from file", # TODO: Translate
"saveplaylisttofile-menu-label": "&Save playlist to file", # TODO: Translate
"exit-menu-label": "&Выход",
"advanced-menu-label": "&Дополнительно",
"window-menu-label": "&Вид",

View File

@ -711,6 +711,10 @@ class MainWindow(QtWidgets.QMainWindow):
menu.addAction(QtGui.QPixmap(resourcespath + "film_add.png"), getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog())
menu.addAction(QtGui.QPixmap(resourcespath + "world_add.png"), getMessage("addurlstoplaylist-menu-label"), lambda: self.OpenAddURIsToPlaylistDialog())
menu.addSeparator()
menu.addAction(getMessage("loadplaylistfromfile-menu-label"),lambda: self.OpenLoadPlaylistFromFileDialog()) # TODO: Add icon
menu.addAction("Load and shuffle playlist from file",lambda: self.OpenLoadPlaylistFromFileDialog(shuffle=True)) # TODO: Add icon and messages_en
menu.addAction(getMessage("saveplaylisttofile-menu-label"),lambda: self.OpenSavePlaylistToFileDialog()) # TODO: Add icon
menu.addSeparator()
menu.addAction(QtGui.QPixmap(resourcespath + "film_folder_edit.png"), getMessage("setmediadirectories-menu-label"), lambda: self.openSetMediaDirectoriesDialog())
menu.addAction(QtGui.QPixmap(resourcespath + "shield_edit.png"), getMessage("settrusteddomains-menu-label"), lambda: self.openSetTrustedDomainsDialog())
menu.exec_(self.playlist.viewport().mapToGlobal(position))
@ -1041,6 +1045,47 @@ class MainWindow(QtWidgets.QMainWindow):
self.updatingPlaylist = False
self.playlist.updatePlaylist(self.getPlaylistState())
@needsClient
def OpenLoadPlaylistFromFileDialog(self, shuffle=False):
self.loadMediaBrowseSettings()
if isMacOS() and IsPySide:
options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog)
else:
options = QtWidgets.QFileDialog.Options()
self.mediadirectory = ""
currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None
if currentdirectory and os.path.isdir(currentdirectory):
defaultdirectory = currentdirectory
else:
defaultdirectory = self.getInitialMediaDirectory()
browserfilter = "Playlists (*.m3u *.m3u8 *.txt)"
filepath, filtr = QtWidgets.QFileDialog.getOpenFileName(
self, "Load playlist from file", defaultdirectory,
browserfilter, "", options) # TODO: Note Shuffle and move to messages_en
if os.path.isfile(filepath):
self._syncplayClient.playlist.loadPlaylistFromFile(filepath, shuffle=shuffle)
self.playlist.updatePlaylist(self.getPlaylistState())
@needsClient
def OpenSavePlaylistToFileDialog(self):
self.loadMediaBrowseSettings()
if isMacOS() and IsPySide:
options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog)
else:
options = QtWidgets.QFileDialog.Options()
self.mediadirectory = ""
currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None
if currentdirectory and os.path.isdir(currentdirectory):
defaultdirectory = currentdirectory
else:
defaultdirectory = self.getInitialMediaDirectory()
browserfilter = "Playlist (*.m3u8 *.m3u *.txt)"
filepath, filtr = QtWidgets.QFileDialog.getSaveFileName(
self, "Save playlist to file", defaultdirectory,
browserfilter, "", options) # TODO: Move to messages_en
if filepath:
self._syncplayClient.playlist.savePlaylistToFile(filepath)
@needsClient
def OpenAddURIsToPlaylistDialog(self):
URIsDialog = QtWidgets.QDialog()