From d93fcb56501ee1df60f61b1c58930190cbe7373d Mon Sep 17 00:00:00 2001 From: Et0h Date: Thu, 2 Jun 2016 19:58:20 +0100 Subject: [PATCH] Add "Add folder" button to "Set media directories" dialog --- syncplay/messages_de.py | 2 ++ syncplay/messages_en.py | 2 ++ syncplay/messages_ru.py | 2 ++ syncplay/ui/gui.py | 25 +++++++++++++++++++++---- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 9f1b6c7..a02fa66 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -279,6 +279,8 @@ de = { "promptforstreamurl-msgbox-label" : u"Stream URL öffnen", "promptforstreamurlinfo-msgbox-label" : u"Stream URL", + "addfolder-label" : u"Add folder", # TODO: Translate + "adduris-msgbox-label" : u"Add URLs to playlist (one per line)", # TODO: Translate "createcontrolledroom-msgbox-label" : u"Zentral gesteuerten Raum erstellen", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 280fd92..055ce4d 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -281,6 +281,8 @@ en = { "promptforstreamurl-msgbox-label" : "Open media stream URL", "promptforstreamurlinfo-msgbox-label" : "Stream URL", + "addfolder-label" : u"Add folder", + "adduris-msgbox-label" : u"Add URLs to playlist (one per line)", "createcontrolledroom-msgbox-label" : "Create managed room", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 2c48970..660ced1 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -281,6 +281,8 @@ ru = { "promptforstreamurl-msgbox-label" : u"Открыть URL потокового вещания", "promptforstreamurlinfo-msgbox-label" : u"URL потока", + "addfolder-label" : u"Add folder", # TODO: Translate + "adduris-msgbox-label" : u"Add URLs to playlist (one per line)", # TODO: Translate "createcontrolledroom-msgbox-label" : u"Создать управляемую комнату", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index f9570f6..909119e 100644 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -710,10 +710,10 @@ class MainWindow(QtGui.QMainWindow): settings.setValue("mediadir", self.mediadirectory) settings.endGroup() - def getInitialMediaDirectory(self): - if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): + def getInitialMediaDirectory(self, includeUserSpecifiedDirectories=True): + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: defaultdirectory = self.config["mediaSearchDirectories"][0] - elif os.path.isdir(self.mediadirectory): + elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): defaultdirectory = self.mediadirectory elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation)): defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation) @@ -803,12 +803,13 @@ class MainWindow(QtGui.QMainWindow): self.addStreamToPlaylist(URI) self.updatingPlaylist = False + @needsClient def openSetMediaDirectoriesDialog(self): MediaDirectoriesDialog = QtGui.QDialog() MediaDirectoriesDialog.setWindowTitle(getMessage("syncplay-mediasearchdirectories-title")) # TODO: Move to messages_*.py MediaDirectoriesLayout = QtGui.QGridLayout() MediaDirectoriesLabel = QtGui.QLabel(getMessage("syncplay-mediasearchdirectories-title")) - MediaDirectoriesLayout.addWidget(MediaDirectoriesLabel, 0, 0, 1, 1) + MediaDirectoriesLayout.addWidget(MediaDirectoriesLabel, 0, 0, 1, 2) MediaDirectoriesTextbox = QtGui.QPlainTextEdit() MediaDirectoriesTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap) MediaDirectoriesTextbox.setPlainText(utils.getListAsMultilineString(self.config["mediaSearchDirectories"])) @@ -819,6 +820,9 @@ class MainWindow(QtGui.QMainWindow): MediaDirectoriesButtonBox.accepted.connect(MediaDirectoriesDialog.accept) MediaDirectoriesButtonBox.rejected.connect(MediaDirectoriesDialog.reject) MediaDirectoriesLayout.addWidget(MediaDirectoriesButtonBox, 2, 0, 1, 1) + MediaDirectoriesAddFolderButton = QtGui.QPushButton(getMessage("addfolder-label")) + MediaDirectoriesAddFolderButton.pressed.connect(lambda: self.openAddMediaDirectoryDialog(MediaDirectoriesTextbox, MediaDirectoriesDialog)) + MediaDirectoriesLayout.addWidget(MediaDirectoriesAddFolderButton, 1, 1, 1, 1, Qt.AlignTop) MediaDirectoriesDialog.setLayout(MediaDirectoriesLayout) MediaDirectoriesDialog.show() result = MediaDirectoriesDialog.exec_() @@ -826,6 +830,19 @@ class MainWindow(QtGui.QMainWindow): newMediaDirectories = utils.convertMultilineStringToList(MediaDirectoriesTextbox.toPlainText()) self._syncplayClient.fileSwitch.changeMediaDirectories(newMediaDirectories) + @needsClient + def openAddMediaDirectoryDialog(self, MediaDirectoriesTextbox, MediaDirectoriesDialog): + folderName = unicode(QtGui.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),QtGui.QFileDialog.ShowDirsOnly)) + if folderName: + existingMediaDirs = MediaDirectoriesTextbox.toPlainText() + if existingMediaDirs == "": + newMediaDirList = folderName + else: + newMediaDirList = existingMediaDirs + u"\n" + folderName + MediaDirectoriesTextbox.setPlainText(newMediaDirList) + MediaDirectoriesDialog.raise_() + MediaDirectoriesDialog.activateWindow() + @needsClient def promptForStreamURL(self): streamURL, ok = QtGui.QInputDialog.getText(self, getMessage("promptforstreamurl-msgbox-label"),