diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 01925b8..fb4bd50 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -110,7 +110,7 @@ de = { "mpc-version-insufficient-error" : u"MPC-Version nicht ausreichend, bitte nutze `mpc-hc` >= `{}`", "mpv-version-error" : u"Syncplay ist nicht kompatibel mit dieser Version von mpv. Bitte benutze eine andere Version (z.B. Git HEAD).", "player-file-open-error" : u"Fehler beim Öffnen der Datei durch den Player", - "player-path-error" : u"Ungültiger Player-Pfad", + "player-path-error" : u"Ungültiger Player-Pfad. Supported players are: mpv, VLC, MPC-HC and mplayer2", # To do: Translate end "hostname-empty-error" : u"Hostname darf nicht leer sein", "empty-error" : u"{} darf nicht leer sein", # Configuration "media-player-error": u"Player-Fehler: \"{}\"", # Error line @@ -120,7 +120,7 @@ de = { "unable-to-start-client-error" : u"Client kann nicht gestartet werden", - "player-path-config-error": u"Player-Pfad ist nicht ordnungsgemäß gesetzt.", + "player-path-config-error": u"Player-Pfad ist nicht ordnungsgemäß gesetzt. Supported players are: mpv, VLC, MPC-HC and mplayer2.", # To do: Translate end "no-file-path-config-error": u"Es muss eine Datei ausgewählt werden, bevor der Player gestartet wird.", "no-hostname-config-error": u"Hostname darf nicht leer sein", "invalid-port-config-error" : u"Port muss gültig sein", @@ -181,7 +181,7 @@ de = { "media-setting-title" : u"Media-Player Einstellungen", "executable-path-label" : u"Pfad zum Media-Player:", - "media-path-label" : u"Pfad zur Datei:", + "media-path-label" : u"Pfad zur Datei:", # Todo: Translate to 'Path to video (optional)' "player-arguments-label" : u"Playerparameter:", "browse-label" : u"Durchsuchen", "update-server-list-label" : u"Liste aktualisieren", @@ -321,7 +321,7 @@ de = { "room-tooltip" : u"Der Raum, der betreten werden soll, kann ein x-beliebiger sein. Allerdings werden nur Clients im selben Raum synchronisiert.", "executable-path-tooltip" : u"Pfad zum ausgewählten, unterstützten Mediaplayer (MPC-HC, VLC, mplayer2 or mpv).", - "media-path-tooltip" : u"Pfad zum wiederzugebenden Video oder Stream. Notwendig für mpv und mplayer2.", + "media-path-tooltip" : u"Pfad zum wiederzugebenden Video oder Stream. Notwendig für mplayer2.", # TODO: Confirm translation "player-arguments-tooltip" : u"Zusätzliche Kommandozeilenparameter / -schalter für diesen Mediaplayer.", "mediasearcdirectories-arguments-tooltip" : u"Verzeichnisse, in denen Syncplay nach Mediendateien suchen soll, z.B. wenn du das Click-to-switch-Feature verwendest. Syncplay wird rekursiv Unterordner durchsuchen.", # TODO: Translate Click-to-switch? (or use as name for feature) diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index acb9bea..105bebf 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -109,7 +109,7 @@ en = { "mpc-version-insufficient-error" : "MPC version not sufficient, please use `mpc-hc` >= `{}`", "mpv-version-error" : "Syncplay is not compatible with this version of mpv. Please use a different version of mpv (e.g. Git HEAD).", "player-file-open-error" : "Player failed opening file", - "player-path-error" : "Player path is not set properly", + "player-path-error" : "Player path is not set properly. Supported players are: mpv, VLC, MPC-HC and mplayer2", "hostname-empty-error" : "Hostname can't be empty", "empty-error" : "{} can't be empty", # Configuration "media-player-error": "Media player error: \"{}\"", # Error line @@ -119,7 +119,7 @@ en = { "unable-to-start-client-error" : "Unable to start client", - "player-path-config-error": "Player path is not set properly", + "player-path-config-error": "Player path is not set properly. Supported players are: mpv, VLC, MPC-HC and mplayer2.", "no-file-path-config-error" :"File must be selected before starting your player", "no-hostname-config-error": "Hostname can't be empty", "invalid-port-config-error" : "Port must be valid", @@ -179,7 +179,7 @@ en = { "media-setting-title" : "Media player settings", "executable-path-label" : "Path to media player:", - "media-path-label" : "Path to media file:", + "media-path-label" : "Path to video (optional):", "player-arguments-label" : "Player arguments (if any):", "browse-label" : "Browse", "update-server-list-label" : u"Update list", @@ -320,8 +320,8 @@ en = { "password-tooltip" : "Passwords are only needed for connecting to private servers.", "room-tooltip" : "Room to join upon connection can be almost anything, but you will only be synchronised with people in the same room.", - "executable-path-tooltip" : "Location of your chosen supported media player (MPC-HC, VLC, mplayer2 or mpv).", - "media-path-tooltip" : "Location of video or stream to be opened. Necessary for mpv and mplayer2.", + "executable-path-tooltip" : "Location of your chosen supported media player (mpv, VLC, MPC-HC or mplayer2).", + "media-path-tooltip" : "Location of video or stream to be opened. Necessary for mplayer2.", "player-arguments-tooltip" : "Additional command line arguments / switches to pass on to this media player.", "mediasearcdirectories-arguments-tooltip" : u"Directories where Syncplay will search for media files, e.g. when you are using the click to switch feature. Syncplay will look recursively through sub-folders.", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 6438d20..31cef89 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -110,7 +110,7 @@ ru = { "mpc-version-insufficient-error" : u"Версия MPC слишком старая, пожалуйста, используйте `mpc-hc` >= `{}`", "mpv-version-error" : u"Syncplay не совместим с данной версией mpv. Пожалуйста, используйте другую версию mpv (лучше свежайшую).", "player-file-open-error" : u"Проигрыватель не может открыть файл.", - "player-path-error" : u"Путь к проигрывателю задан неверно.", + "player-path-error" : u"Путь к проигрывателю задан неверно. Supported players are: mpv, VLC, MPC-HC and mplayer2.", # TODO: Translate last sentence "hostname-empty-error" : u"Имя пользователя не может быть пустым.", "empty-error" : u"{} не может быть пустым.", # Configuration "media-player-error" : u"Ошибка проигрывателя: \"{}\"", # Error line @@ -120,7 +120,7 @@ ru = { "unable-to-start-client-error" : u"Невозможно запустить клиент", - "player-path-config-error": u"Путь к проигрывателю установлен неверно", + "player-path-config-error": u"Путь к проигрывателю установлен неверно. Supported players are: mpv, VLC, MPC-HC and mplayer2", # To do: Translate end "no-file-path-config-error" : u"Файл должен быть указан до включения проигрывателя", "no-hostname-config-error": u"Имя сервера не может быть пустым", "invalid-port-config-error" : u"Неверный номер порта", @@ -181,7 +181,7 @@ ru = { "media-setting-title" : u"Воспроизведение", "executable-path-label" : u"Путь к проигрывателю:", - "media-path-label" : u"Путь к видеофайлу:", + "media-path-label" : u"Путь к видеофайлу:", # Todo: Translate to 'Path to video (optional)' "player-arguments-label" : u"Аргументы запуска проигрывателя:", "browse-label" : u"Выбрать", "update-server-list-label" : u"Обновить список", @@ -323,7 +323,7 @@ ru = { "room-tooltip" : u"Комната, в которую Вы попадете сразу после подключения. Синхронизация возможна только между людьми в одной и той же комнате.", "executable-path-tooltip" : u"Расположение Вашего видеопроигрывателя (MPC-HC, VLC, mplayer2 или mpv).", - "media-path-tooltip" : u"Расположение видеофайла или потока для просмотра. Обязательно для mpv и mplayer2.", + "media-path-tooltip" : u"Расположение видеофайла или потока для просмотра. Обязательно для mplayer2.", # TODO: Confirm translation "player-arguments-tooltip" : u"Передавать дополнительные аргументы командной строки этому проигрывателю.", "mediasearcdirectories-arguments-tooltip" : u"Папки, где Syncplay будет искать медиа файлы, включая подпапки.", diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index d8e832a..41e4f4c 100644 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -89,6 +89,9 @@ class ConfigDialog(QtGui.QDialog): self.resetButton.show() self.playerargsTextbox.show() self.playerargsLabel.show() + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() self.runButton.show() self.saveMoreState(True) self.tabListWidget.setCurrentRow(0) @@ -100,6 +103,14 @@ class ConfigDialog(QtGui.QDialog): self.playerargsTextbox.hide() self.playerargsLabel.hide() self.runButton.hide() + if self.mediapathTextbox.text() == "": + self.mediapathTextbox.hide() + self.mediapathLabel.hide() + self.mediabrowseButton.hide() + else: + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() self.saveMoreState(False) self.stackedLayout.setCurrentIndex(0) newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 @@ -110,7 +121,6 @@ class ConfigDialog(QtGui.QDialog): self.setFixedSize(self.sizeHint()) self.moreToggling = False self.setFixedWidth(self.minimumSizeHint().width()) - self.executablepathCombobox.setFixedWidth(self.mediapathTextbox.width()) def openHelp(self): self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/client/")) @@ -415,6 +425,9 @@ class ConfigDialog(QtGui.QDialog): self.executablepathCombobox.setEditText(dropfilepath) else: self.mediapathTextbox.setText(dropfilepath) + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() def processWidget(self, container, torun): for widget in container.children(): @@ -514,8 +527,12 @@ class ConfigDialog(QtGui.QDialog): if self.publicServers: i = 0 for publicServer in self.publicServers: - self.hostCombobox.addItem(publicServer[1]) - self.hostCombobox.setItemData(i, publicServer[0], Qt.ToolTipRole) + serverTitle = publicServer[0] + serverAddressPort = publicServer[1] + self.hostCombobox.addItem(serverAddressPort) + self.hostCombobox.setItemData(i, serverTitle, Qt.ToolTipRole) + if not serverAddressPort in self.publicServerAddresses: + self.publicServerAddresses.append(serverAddressPort) i += 1 self.hostCombobox.setEditable(True) self.hostCombobox.setEditText(host) @@ -539,6 +556,8 @@ class ConfigDialog(QtGui.QDialog): self.usernameTextbox.setObjectName("name") self.serverpassLabel.setObjectName("password") self.serverpassTextbox.setObjectName("password") + self.hostCombobox.editTextChanged.connect(self.updatePasswordVisibilty) + self.hostCombobox.currentIndexChanged.connect(self.updatePasswordVisibilty) self.defaultroomLabel.setObjectName("room") self.defaultroomTextbox.setObjectName("room") @@ -566,11 +585,12 @@ class ConfigDialog(QtGui.QDialog): self.executableiconImage = QtGui.QImage() self.executableiconLabel = QLabel(self) self.executableiconLabel.setMinimumWidth(16) + self.executableiconLabel.setAlignment(Qt.AlignRight | Qt.AlignVCenter) self.executablepathCombobox = QtGui.QComboBox(self) self.executablepathCombobox.setEditable(True) self.executablepathCombobox.currentIndexChanged.connect(self.updateExecutableIcon) self.executablepathCombobox.setEditText(self._tryToFillPlayerPath(config['playerPath'], playerpaths)) - self.executablepathCombobox.setFixedWidth(165) + self.executablepathCombobox.setFixedWidth(250) self.executablepathCombobox.editTextChanged.connect(self.updateExecutableIcon) self.executablepathLabel = QLabel(getMessage("executable-path-label"), self) @@ -993,7 +1013,6 @@ class ConfigDialog(QtGui.QDialog): def showEvent(self, *args, **kwargs): self.ensureTabListIsVisible() self.setFixedWidth(self.minimumSizeHint().width()) - self.executablepathCombobox.setFixedWidth(self.mediapathTextbox.width()) def clearGUIData(self, leaveMore=False): settings = QSettings("Syncplay", "PlayerList") @@ -1025,8 +1044,25 @@ class ConfigDialog(QtGui.QDialog): for server in self.publicServers: self.hostCombobox.addItem(server[1]) self.hostCombobox.setItemData(i, server[0], Qt.ToolTipRole) + if not server[1] in self.publicServerAddresses: + self.publicServerAddresses.append(server[1]) i += 1 self.hostCombobox.setEditText(currentServer) + + def updatePasswordVisibilty(self): + if (self.hostCombobox.currentText() == "" and self.serverpassTextbox.text() == "") or unicode(self.hostCombobox.currentText()) in self.publicServerAddresses: + self.serverpassLabel.hide() + self.serverpassTextbox.hide() + self.serverpassTextbox.setText("") + else: + self.serverpassLabel.show() + self.serverpassTextbox.show() + newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 + if self.error: + newHeight += self.errorLabel.height()+3 + self.stackedFrame.setFixedHeight(newHeight) + self.adjustSize() + self.setFixedSize(self.sizeHint()) def __init__(self, config, playerpaths, error, defaultConfig): self.config = config @@ -1036,6 +1072,7 @@ class ConfigDialog(QtGui.QDialog): self.config['resetConfig'] = False self.subitems = {} self.publicServers = None + self.publicServerAddresses = [] self._playerProbeThread = GetPlayerIconThread() self._playerProbeThread.done.connect(self._updateExecutableIcon) @@ -1084,6 +1121,14 @@ class ConfigDialog(QtGui.QDialog): self.playerargsTextbox.hide() self.playerargsLabel.hide() self.runButton.hide() + if self.mediapathTextbox.text() == "": + self.mediapathTextbox.hide() + self.mediapathLabel.hide() + self.mediabrowseButton.hide() + else: + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 if self.error: newHeight +=self.errorLabel.height()+3 @@ -1108,3 +1153,4 @@ class ConfigDialog(QtGui.QDialog): self.processWidget(self, lambda w: self.loadValues(w)) self.processWidget(self, lambda w: self.connectChildren(w)) self.populateEmptyServerList() + self.updatePasswordVisibilty() \ No newline at end of file