diff --git a/buildPy2exe.py b/buildPy2exe.py index af07026..3a0d09b 100644 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -655,6 +655,7 @@ guiIcons = ['resources/accept.png', 'resources/arrow_undo.png', 'resources/clock 'resources/tick.png', 'resources/lock_open.png', 'resources/empty_checkbox.png', 'resources/tick_checkbox.png', 'resources/world_explore.png', 'resources/application_get.png', 'resources/cog.png', 'resources/arrow_switch.png', 'resources/film_go.png', 'resources/world_go.png', 'resources/arrow_refresh.png', 'resources/bullet_right_grey.png', + 'film_folder_edit.png', 'resources/world_add.png', 'resources/film_add.png', 'resources/delete.png', 'resources/spinner.mng' ] resources = ["resources/icon.ico", "resources/syncplay.png"] diff --git a/resources/film_folder_edit.png b/resources/film_folder_edit.png new file mode 100644 index 0000000..ba80c64 Binary files /dev/null and b/resources/film_folder_edit.png differ diff --git a/syncplay/client.py b/syncplay/client.py index 48eaf7a..a187e42 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -1591,6 +1591,15 @@ class FileSwitchManager(object): def setCurrentDirectory(self, curDir): self.currentDirectory = curDir + def changeMediaDirectories(self, mediaDirs): + if mediaDirs <> self._client._config["mediaSearchDirectories"]: + from syncplay.ui.ConfigurationGetter import ConfigurationGetter + ConfigurationGetter().setConfigOption("mediaSearchDirectories", mediaDirs) + self._client._config["mediaSearchDirectories"] = mediaDirs + self._client.ui.showMessage(getMessage("media-directory-list-updated-notification")) + self.folderSearchEnabled = True + self.setMediaDirectories(mediaDirs) + def setMediaDirectories(self, mediaDirs): self.mediaDirectories = mediaDirs self.updateInfo() diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index d3a38a6..f92f17f 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -28,6 +28,8 @@ de = { "current-offset-notification" : u"Aktueller Offset: {} Sekunden", # Offset + "media-directory-list-updated-notification" : u"Syncplay media directories have been updated.", # TODO: Translate + "room-join-notification" : u"<{}> hat den Raum '{}' betreten", # User "left-notification" : u"<{}> ist gegangen", # User "left-paused-notification" : u"<{}> ist gegangen, <{}> pausierte", # User who left, User who paused @@ -137,8 +139,8 @@ de = { "invalid-offset-value" : u"Ungültiger Offset-Wert", "switch-file-not-found-error" : u"Konnte nicht zur Datei '{0}' wechseln. Syncplay looks in the specified media directories.", # File not found, folder it was not found in # TODO: Re-translate "Syncplay sucht im Ordner der aktuellen Datei und angegebenen Medien-Verzeichnissen." to reference to checking in "current media directory" - "folder-search-timeout-error" : u"The search for media in media directories was aborted as it took too long to search through '{}'. This will occur if you select a folder with too many sub-folders in your list of media folders to search through. For automatic file switching to work again please remove this directory as a media directory (optionally using a sub-directory instead) and re-open Syncplay.", #Folder # TODO: Re-translate using new language - "folder-search-first-file-timeout-error" : u"The search for media in '{}' was aborted as it took too long to access the directory. This could happen if it is a network drive or if you configure your drive to spin down after a period of inactivity. For automatic file switching to work again please remove this directory as a media directory or resolve the issue (e.g. by changing power saving settings) and re-open Syncplay.", #Folder # TODO: Translate + "folder-search-timeout-error" : u"The search for media in media directories was aborted as it took too long to search through '{}'. This will occur if you select a folder with too many sub-folders in your list of media folders to search through. For automatic file switching to work again please select File->Set Media Directories in the menu bar and remove this directory or replace it with an appropriate sub-folder.", #Folder # TODO: Translate + "folder-search-first-file-timeout-error" : u"The search for media in '{}' was aborted as it took too long to access the directory. This could happen if it is a network drive or if you configure your drive to spin down after a period of inactivity. For automatic file switching to work again please go to File->Set Media Directories and either remove the directory or resolve the issue (e.g. by changing power saving settings).", #Folder # TODO: Translate "failed-to-load-server-list-error" : u"Konnte die Liste der öffentlichen Server nicht laden. Bitte besuche http://www.syncplay.pl/ [Englisch] mit deinem Browser.", @@ -255,6 +257,7 @@ de = { "file-menu-label" : u"&Datei", # & precedes shortcut key "openmedia-menu-label" : u"&Mediendatei öffnen...", "openstreamurl-menu-label" : u"&Stream URL öffnen", + "setmediadirectories-menu-label" : u"Set media &directories", # TODO: Translate "exit-menu-label" : u"&Beenden", "advanced-menu-label" : u"&Erweitert", "window-menu-label" : u"&Fenster", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 0f40410..2519be0 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -28,6 +28,8 @@ en = { "current-offset-notification" : "Current offset: {} seconds", # Offset + "media-directory-list-updated-notification" : u"Syncplay media directories have been updated.", + "room-join-notification" : u"<{}> has joined the room: '{}'", # User "left-notification" : u"<{}> has left", # User "left-paused-notification" : u"<{}> left, <{}> paused", # User who left, User who paused @@ -137,8 +139,8 @@ en = { "invalid-offset-value" : u"Invalid offset value", "switch-file-not-found-error" : u"Could not switch to file '{0}'. Syncplay looks in specified media directories.", # File not found - "folder-search-timeout-error" : u"The search for media in media directories was aborted as it took too long to search through '{}'. This will occur if you select a folder with too many sub-folders in your list of media folders to search through. For automatic file switching to work again please remove this directory as a media directory (optionally using a sub-directory instead) and re-open Syncplay.", #Folder - "folder-search-first-file-timeout-error" : u"The search for media in '{}' was aborted as it took too long to access the directory. This could happen if it is a network drive or if you configure your drive to spin down after a period of inactivity. For automatic file switching to work again please remove this directory as a media directory or resolve the issue (e.g. by changing power saving settings) and re-open Syncplay.", #Folder + "folder-search-timeout-error" : u"The search for media in media directories was aborted as it took too long to search through '{}'. This will occur if you select a folder with too many sub-folders in your list of media folders to search through. For automatic file switching to work again please select File->Set Media Directories in the menu bar and remove this directory or replace it with an appropriate sub-folder.", #Folder + "folder-search-first-file-timeout-error" : u"The search for media in '{}' was aborted as it took too long to access the directory. This could happen if it is a network drive or if you configure your drive to spin down after a period of inactivity. For automatic file switching to work again please go to File->Set Media Directories and either remove the directory or resolve the issue (e.g. by changing power saving settings).", #Folder "failed-to-load-server-list-error" : u"Failed to load public server list. Please visit http://www.syncplay.pl/ in your browser.", @@ -257,6 +259,7 @@ en = { "file-menu-label" : "&File", # & precedes shortcut key "openmedia-menu-label" : "&Open media file", "openstreamurl-menu-label" : "Open &media stream URL", + "setmediadirectories-menu-label" : u"Set media &directories", "exit-menu-label" : "E&xit", "advanced-menu-label" : "&Advanced", "window-menu-label" : "&Window", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 5648e72..6179e8a 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -28,6 +28,8 @@ ru = { "current-offset-notification" : u"Текущее смещение: {} секунд(ы)", # Offset + "media-directory-list-updated-notification" : u"Syncplay media directories have been updated.", # TODO: Translate + "room-join-notification" : u"<{}> зашел(зашла) в комнату: '{}'", # User "left-notification" : u"<{}> покинул(а) комнату", # User "left-paused-notification" : u"<{}> покинул(а) комнату, <{}> приостановил(а) воспроизведение", # User who left, User who paused @@ -137,8 +139,8 @@ ru = { "invalid-offset-value" : u"Некорректное смещение", "switch-file-not-found-error" : u"Невозможно переключиться на файл '{0}'. Syncplay looks in the folder specified media directories.", # File not found # TODO: Translate last part into Russian - "folder-search-timeout-error" : u"The search for media in media directories was aborted as it took too long to search through '{}'. This will occur if you select a folder with too many sub-folders in your list of media folders to search through. For automatic file switching to work again please remove this directory as a media directory (optionally using a sub-directory instead) and re-open Syncplay.", #Folder # TODO: Translate - "folder-search-first-file-timeout-error" : u"The search for media in '{}' was aborted as it took too long to access the directory. This could happen if it is a network drive or if you configure your drive to spin down after a period of inactivity. For automatic file switching to work again please remove this directory as a media directory or resolve the issue (e.g. by changing power saving settings) and re-open Syncplay.", #Folder # TODO: Translate + "folder-search-timeout-error" : u"The search for media in media directories was aborted as it took too long to search through '{}'. This will occur if you select a folder with too many sub-folders in your list of media folders to search through. For automatic file switching to work again please select File->Set Media Directories in the menu bar and remove this directory or replace it with an appropriate sub-folder.", #Folder # TODO: Translate + "folder-search-first-file-timeout-error" : u"The search for media in '{}' was aborted as it took too long to access the directory. This could happen if it is a network drive or if you configure your drive to spin down after a period of inactivity. For automatic file switching to work again please go to File->Set Media Directories and either remove the directory or resolve the issue (e.g. by changing power saving settings).", #Folder # TODO: Translate "failed-to-load-server-list-error" : u"Failed to load public server list. Please visit http://www.syncplay.pl/ in your browser.", # TODO: Translate into Russian @@ -257,6 +259,7 @@ ru = { "file-menu-label" : u"&Файл", # & precedes shortcut key "openmedia-menu-label" : u"&Открыть видеофайл", "openstreamurl-menu-label" : u"Открыть URL &потокового вещания", + "setmediadirectories-menu-label" : u"Set media &directories", # TODO: Translate "exit-menu-label" : u"&Выход", "advanced-menu-label" : u"&Дополнительно", "window-menu-label" : u"&Окна", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 57baf88..c35943b 100644 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -776,7 +776,7 @@ class MainWindow(QtGui.QMainWindow): @needsClient def OpenAddURIsToPlaylistDialog(self): URIsDialog = QtGui.QDialog() - URIsDialog.setWindowTitle("Add URLs to playlist (one per line)") + URIsDialog.setWindowTitle(u"Add URLs to playlist (one per line)") # TODO: Move to messages_*.py URIsLayout = QtGui.QGridLayout() URIsTextbox = QtGui.QPlainTextEdit() URIsTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap) @@ -797,6 +797,27 @@ class MainWindow(QtGui.QMainWindow): self.addStreamToPlaylist(URI) self.updatingPlaylist = False + def openSetMediaDirectoriesDialog(self): + MediaDirectoriesDialog = QtGui.QDialog() + MediaDirectoriesDialog.setWindowTitle(getMessage("syncplay-mediasearchdirectories-title")) # TODO: Move to messages_*.py + MediaDirectoriesLayout = QtGui.QGridLayout() + MediaDirectoriesTextbox = QtGui.QPlainTextEdit() + MediaDirectoriesTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap) + MediaDirectoriesTextbox.setPlainText(utils.getListAsMultilineString(self.config["mediaSearchDirectories"])) + MediaDirectoriesLayout.addWidget(MediaDirectoriesTextbox, 0, 0, 1, 1) + MediaDirectoriesButtonBox = QtGui.QDialogButtonBox() + MediaDirectoriesButtonBox.setOrientation(Qt.Horizontal) + MediaDirectoriesButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel) + MediaDirectoriesButtonBox.accepted.connect(MediaDirectoriesDialog.accept) + MediaDirectoriesButtonBox.rejected.connect(MediaDirectoriesDialog.reject) + MediaDirectoriesLayout.addWidget(MediaDirectoriesButtonBox, 1, 0, 1, 1) + MediaDirectoriesDialog.setLayout(MediaDirectoriesLayout) + MediaDirectoriesDialog.show() + result = MediaDirectoriesDialog.exec_() + if result == QtGui.QDialog.Accepted: + newMediaDirectories = utils.convertMultilineStringToList(MediaDirectoriesTextbox.toPlainText()) + self._syncplayClient.fileSwitch.changeMediaDirectories(newMediaDirectories) + @needsClient def promptForStreamURL(self): streamURL, ok = QtGui.QInputDialog.getText(self, getMessage("promptforstreamurl-msgbox-label"), @@ -1092,6 +1113,10 @@ class MainWindow(QtGui.QMainWindow): window.openAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'world_explore.png'), getMessage("openstreamurl-menu-label")) window.openAction.triggered.connect(self.promptForStreamURL) + window.openAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'film_folder_edit.png'), + getMessage("setmediadirectories-menu-label")) + window.openAction.triggered.connect(self.openSetMediaDirectoriesDialog) + window.exitAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'cross.png'), getMessage("exit-menu-label"))