diff --git a/README.md b/README.md index 173b7e202..a87367674 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ Solution to synchronize video playback across multiple instances of mpv, VLC, MPC-HC, MPC-BE and mplayer2 over the Internet. ## Official website -http://syncplay.pl +https://syncplay.pl ## Download -http://syncplay.pl/download/ +https://syncplay.pl/download/ ## What does it do diff --git a/resources/lua/intf/syncplay.lua b/resources/lua/intf/syncplay.lua index 4f3d07d89..44e88283e 100644 --- a/resources/lua/intf/syncplay.lua +++ b/resources/lua/intf/syncplay.lua @@ -4,14 +4,14 @@ Principal author: Etoh Other contributors: DerGenaue, jb, Pilotat - Project: http://syncplay.pl/ + Project: https://syncplay.pl/ Version: 0.3.4 Note: * This interface module is intended to be used in conjunction with Syncplay. * Syncplay provides synchronized video playback across multiple media player instances over the net. * Syncplay allows group of people who all have the same videos to watch them together wherever they are. - * Syncplay is available to download for free from http://syncplay.pl/ + * Syncplay is available to download for free from https://syncplay.pl/ --[==========================================================================[ diff --git a/syncplay/__init__.py b/syncplay/__init__.py index e03947816..53e985a3c 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ -version = '1.5.2' +version = '1.5.3' milestone = 'Yoitsu' -release_number = '56' -projectURL = 'http://syncplay.pl/' +release_number = '60' +projectURL = 'https://syncplay.pl/' diff --git a/syncplay/client.py b/syncplay/client.py index e330843f1..e8cb8b5d4 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -1929,6 +1929,10 @@ def isDirectoryInList(self, directoryToFind, folderList): return False def notifyUserIfFileNotInMediaDirectory(self, filenameToFind, path): + try: + path = path.decode('utf-8') + except UnicodeEncodeError: + pass directoryToFind = os.path.dirname(path) if directoryToFind in self.mediaDirectoriesNotFound: return diff --git a/syncplay/constants.py b/syncplay/constants.py index f5f0f418b..122b491f6 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -10,7 +10,7 @@ CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini" DEFAULT_CONFIG_NAME_LINUX = ".syncplay" -RECENT_CLIENT_THRESHOLD = "1.5.1" #This and higher considered 'recent' clients (no warnings) +RECENT_CLIENT_THRESHOLD = "1.5.3" #This and higher considered 'recent' clients (no warnings) WARN_OLD_CLIENTS = True #Use MOTD to inform old clients to upgrade LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded SHOW_CONTACT_INFO = True # Displays dev contact details below list in GUI @@ -66,8 +66,8 @@ DEFAULT_CHAT_FONT_WEIGHT = 1 # Max numbers are used by server (and client pre-connection). Once connected client gets values from server featureList (or uses 'fallback' versions for old servers) -MAX_CHAT_MESSAGE_LENGTH = 125 # Number of displayed characters -MAX_USERNAME_LENGTH = 20 # Number of displayed characters +MAX_CHAT_MESSAGE_LENGTH = 150 # Number of displayed characters +MAX_USERNAME_LENGTH = 150 # Number of displayed characters MAX_ROOM_NAME_LENGTH = 35 # Number of displayed characters MAX_FILENAME_LENGTH = 250 # Number of displayed characters FALLBACK_MAX_CHAT_MESSAGE_LENGTH = 50 # Number of displayed characters @@ -256,9 +256,9 @@ CHATROOM_MODE = "Chatroom" SCROLLING_MODE = "Scrolling" -SYNCPLAY_UPDATE_URL = u"http://syncplay.pl/checkforupdate?{}" # Params -SYNCPLAY_DOWNLOAD_URL = "http://syncplay.pl/download/" -SYNCPLAY_PUBLIC_SERVER_LIST_URL = u"http://syncplay.pl/listpublicservers?{}" # Params +SYNCPLAY_UPDATE_URL = u"https://syncplay.pl/checkforupdate?{}" # Params +SYNCPLAY_DOWNLOAD_URL = "https://syncplay.pl/download/" +SYNCPLAY_PUBLIC_SERVER_LIST_URL = u"https://syncplay.pl/listpublicservers?{}" # Params DEFAULT_TRUSTED_DOMAINS = [u"youtube.com",u"youtu.be"] TRUSTABLE_WEB_PROTOCOLS = [u"http://www.",u"https://www.",u"http://",u"https://"] diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index f0158340f..eac5b703b 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -66,7 +66,7 @@ "controller-userlist-userflag" : u"Raumleiter", "ready-userlist-userflag" : u"Bereit", - "update-check-failed-notification" : u"Konnte nicht automatisch prüfen, ob Syncplay {} aktuell ist. Soll http://syncplay.pl/ geöffnet werden, um manuell nach Updates zu suchen?", #Syncplay version + "update-check-failed-notification" : u"Konnte nicht automatisch prüfen, ob Syncplay {} aktuell ist. Soll https://syncplay.pl/ geöffnet werden, um manuell nach Updates zu suchen?", #Syncplay version "syncplay-uptodate-notification" : u"Syncplay ist aktuell", "syncplay-updateavailable-notification" : u"Eine neuere Version von Syncplay ist verfügbar. Soll die Download-Seite geöffnet werden?", @@ -94,9 +94,9 @@ "promptforupdate-label" : u"Soll Syncplay regelmäßig nach Updates suchen?", "vlc-version-mismatch": u"This version of VLC does not support Syncplay. VLC {}+ supports Syncplay but VLC 3 does not. Please use an alternative media player.", # VLC min version # TODO: Translate - "vlc-interface-version-mismatch": u"Du nutzt Version {} des VLC-Syncplay Interface-Moduls, Syncplay benötigt aber mindestens Version {}. In der Syncplay-Anleitung unter http://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning": u"Warnung: Es ist eine alte Version des Syncplay Interface-Moduls für VLC im VLC-Verzeichnis installiert. In der Syncplay-Anleitung unter http://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", - "vlc-interface-not-installed": u"Warnung: Es wurde kein Syncplay Interface-Modul für VLC im VLC-Verzeichnis gefunden. Daher wird, wenn du VLC 2.0 nutzt, die syncplay.lua die mit Syncplay mitgeliefert wurde, verwendet. Dies bedeutet allerdings, dass keine anderen Interface-Skripts und Erweiterungen geladen werden. In der Syncplay-Anleitung unter http://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", + "vlc-interface-version-mismatch": u"Du nutzt Version {} des VLC-Syncplay Interface-Moduls, Syncplay benötigt aber mindestens Version {}. In der Syncplay-Anleitung unter https://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": u"Warnung: Es ist eine alte Version des Syncplay Interface-Moduls für VLC im VLC-Verzeichnis installiert. In der Syncplay-Anleitung unter https://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", + "vlc-interface-not-installed": u"Warnung: Es wurde kein Syncplay Interface-Modul für VLC im VLC-Verzeichnis gefunden. Daher wird, wenn du VLC 2.0 nutzt, die syncplay.lua die mit Syncplay mitgeliefert wurde, verwendet. Dies bedeutet allerdings, dass keine anderen Interface-Skripts und Erweiterungen geladen werden. In der Syncplay-Anleitung unter https://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", "media-player-latency-warning": u"Warnung: Der Mediaplayer brauchte {} Sekunden zum Antworten. Wenn Probleme bei der Synchronisation auftreten, schließe bitte andere Anwendungen, um Ressourcen freizugeben. Sollte das nicht funktionieren, versuche es mit einem anderen Media-Player.", # Seconds to respond "mpv-unresponsive-error": u"MPV hat für {} Sekunden nicht geantwortet und scheint abgestürzt zu sein. Bitte starte Syncplay neu.", # Seconds to respond @@ -130,8 +130,8 @@ "not-json-error" : u"Kein JSON-String\n", "hello-arguments-error" : u"Zu wenige Hello-Argumente\n", "version-mismatch-error" : u"Verschiedene Versionen auf Client und Server\n", - "vlc-failed-connection": u"Kann nicht zu VLC verbinden. Wenn du syncplay.lua nicht installiert hast, findest du auf http://syncplay.pl/LUA/ [Englisch] eine Anleitung.", - "vlc-failed-noscript": u"Laut VLC ist das syncplay.lua Interface-Skript nicht installiert. Auf http://syncplay.pl/LUA/ [Englisch] findest du eine Anleitung.", + "vlc-failed-connection": u"Kann nicht zu VLC verbinden. Wenn du syncplay.lua nicht installiert hast, findest du auf https://syncplay.pl/LUA/ [Englisch] eine Anleitung.", + "vlc-failed-noscript": u"Laut VLC ist das syncplay.lua Interface-Skript nicht installiert. Auf https://syncplay.pl/LUA/ [Englisch] findest du eine Anleitung.", "vlc-failed-versioncheck": u"Diese VLC-Version wird von Syncplay nicht unterstützt. Bitte nutze VLC 2.0", "vlc-failed-other" : u"Beim Laden des syncplay.lua Interface-Skripts durch VLC trat folgender Fehler auf: {}", # Syncplay Error @@ -262,7 +262,7 @@ "run-label" : u"Syncplay starten", "storeandrun-label" : u"Konfiguration speichern und Syncplay starten", - "contact-label" : u"Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an dev@syncplay.pl, chatte auf dem #Syncplay IRC-Kanal auf irc.freenode.net oder öffne eine Fehlermeldung auf GitHub. Außerdem findest du auf http://syncplay.pl/ weitere Informationen, Hilfestellungen und Updates. OTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence + "contact-label" : u"Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an dev@syncplay.pl, chatte auf dem #Syncplay IRC-Kanal auf irc.freenode.net oder öffne eine Fehlermeldung auf GitHub. Außerdem findest du auf https://syncplay.pl/ weitere Informationen, Hilfestellungen und Updates. OTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence "joinroom-label" : u"Raum beitreten", "joinroom-menu-label" : u"Raum beitreten {}", #TODO: Might want to fix this @@ -316,7 +316,7 @@ "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : u"Offset einstellen", - "offsetinfo-msgbox-label" : u"Offset (siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", + "offsetinfo-msgbox-label" : u"Offset (siehe https://syncplay.pl/guide/ für eine Anleitung [Englisch]):", "promptforstreamurl-msgbox-label" : u"Stream URL öffnen", "promptforstreamurlinfo-msgbox-label" : u"Stream URL", @@ -328,10 +328,10 @@ "trusteddomains-msgbox-label" : u"Domains it is okay to automatically switch to (one per line)", # TODO: Translate "createcontrolledroom-msgbox-label" : u"Zentral gesteuerten Raum erstellen", - "controlledroominfo-msgbox-label" : u"Namen des zentral gesteuerten Raums eingeben\r\n(siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", + "controlledroominfo-msgbox-label" : u"Namen des zentral gesteuerten Raums eingeben\r\n(siehe https://syncplay.pl/guide/ für eine Anleitung [Englisch]):", "identifyascontroller-msgbox-label" : u"Als Raumleiter identifizieren", - "identifyinfo-msgbox-label" : u"Passwort des zentral gesteuerten Raums eingeben\r\n(siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", + "identifyinfo-msgbox-label" : u"Passwort des zentral gesteuerten Raums eingeben\r\n(siehe https://syncplay.pl/guide/ für eine Anleitung [Englisch]):", "public-server-msgbox-label" : u"Einen öffentlichen Server für diese Sitzung auswählen", @@ -414,7 +414,7 @@ "nofile-note" : u"(keine Datei wird abgespielt)", # Server messages to client - "new-syncplay-available-motd-message" : u" Du nutzt Syncplay Version {}, aber es gibt eine neuere Version auf http://syncplay.pl", # ClientVersion + "new-syncplay-available-motd-message" : u" Du nutzt Syncplay Version {}, aber es gibt eine neuere Version auf https://syncplay.pl", # ClientVersion # Server notifications "welcome-server-notification" : u"Willkommen zum Syncplay-Server, v. {0}", # version @@ -433,6 +433,7 @@ "server-motd-argument": u"Pfad zur Datei, von der die Nachricht des Tages geladen wird", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Die Nachricht des Tages hat unmaskierte Platzhalter. Alle $-Zeichen sollten verdoppelt werden ($$).", "server-messed-up-motd-too-long": u"Die Nachricht des Tages ist zu lang - Maximal {} Zeichen, aktuell {}.", @@ -454,7 +455,7 @@ "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 4d04b0440..2dc14a55d 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -66,7 +66,7 @@ "controller-userlist-userflag" : "Operator", "ready-userlist-userflag" : "Ready", - "update-check-failed-notification" : u"Could not automatically check whether Syncplay {} is up to date. Want to visit http://syncplay.pl/ to manually check for updates?", #Syncplay version + "update-check-failed-notification" : u"Could not automatically check whether Syncplay {} is up to date. Want to visit https://syncplay.pl/ to manually check for updates?", #Syncplay version "syncplay-uptodate-notification" : u"Syncplay is up to date", "syncplay-updateavailable-notification" : u"A new version of Syncplay is available. Do you want to visit the release page?", @@ -93,9 +93,9 @@ "language-changed-msgbox-label" : "Language will be changed when you run Syncplay.", "promptforupdate-label" : u"Is it okay for Syncplay to automatically check for updates from time to time?", - "vlc-interface-version-mismatch": "You are running version {} of the Syncplay interface module for VLC, but Syncplay is designed to run with version {} and above. Please refer to the Syncplay User Guide at http://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning": "Warning: Syncplay detected that an old version version of the Syncplay interface module for VLC was installed in the VLC directory. Please refer to the Syncplay User Guide at http://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", - "vlc-interface-not-installed": "Warning: The Syncplay interface module for VLC was not found in the VLC directory. As such, if you are running VLC 2.0 then VLC will use the syncplay.lua module contained within the Syncplay directory, but this will mean that other custom interface scripts and extensions will not work. Please refer to the Syncplay User Guide at http://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", + "vlc-interface-version-mismatch": "You are running version {} of the Syncplay interface module for VLC, but Syncplay is designed to run with version {} and above. Please refer to the Syncplay User Guide at https://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": "Warning: Syncplay detected that an old version version of the Syncplay interface module for VLC was installed in the VLC directory. Please refer to the Syncplay User Guide at https://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", + "vlc-interface-not-installed": "Warning: The Syncplay interface module for VLC was not found in the VLC directory. As such, if you are running VLC 2.0 then VLC will use the syncplay.lua module contained within the Syncplay directory, but this will mean that other custom interface scripts and extensions will not work. Please refer to the Syncplay User Guide at https://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", "media-player-latency-warning": u"Warning: The media player took {} seconds to respond. If you experience syncing issues then close applications to free up system resources, and if that doesn't work then try a different media player.", # Seconds to respond "mpv-unresponsive-error": u"mpv has not responded for {} seconds so appears to have malfunctioned. Please restart Syncplay.", # Seconds to respond @@ -129,8 +129,8 @@ "not-json-error" : "Not a json encoded string\n", "hello-arguments-error" : "Not enough Hello arguments\n", # DO NOT TRANSLATE "version-mismatch-error" : "Mismatch between versions of client and server\n", - "vlc-failed-connection": "Failed to connect to VLC. If you have not installed syncplay.lua and are using the latest verion of VLC then please refer to http://syncplay.pl/LUA/ for instructions.", - "vlc-failed-noscript": "VLC has reported that the syncplay.lua interface script has not been installed. Please refer to http://syncplay.pl/LUA/ for instructions.", + "vlc-failed-connection": "Failed to connect to VLC. If you have not installed syncplay.lua and are using the latest verion of VLC then please refer to https://syncplay.pl/LUA/ for instructions.", + "vlc-failed-noscript": "VLC has reported that the syncplay.lua interface script has not been installed. Please refer to https://syncplay.pl/LUA/ for instructions.", "vlc-failed-versioncheck": "This version of VLC is not supported by Syncplay.", "feature-sharedPlaylists" : u"shared playlists", # used for not-supported-by-server-error @@ -267,7 +267,7 @@ "run-label" : "Run Syncplay", "storeandrun-label" : "Store configuration and run Syncplay", - "contact-label" : "Feel free to e-mail dev@syncplay.pl, chat via the #Syncplay IRC channel on irc.freenode.net, raise an issue via GitHub, like us on Facebook, follow us on Twitter, or visit http://syncplay.pl/. NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", + "contact-label" : "Feel free to e-mail dev@syncplay.pl, chat via the #Syncplay IRC channel on irc.freenode.net, raise an issue via GitHub, like us on Facebook, follow us on Twitter, or visit https://syncplay.pl/. NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", "joinroom-label" : "Join room", "joinroom-menu-label" : u"Join room {}", @@ -321,7 +321,7 @@ "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : "Set offset", - "offsetinfo-msgbox-label" : "Offset (see http://syncplay.pl/guide/ for usage instructions):", + "offsetinfo-msgbox-label" : "Offset (see https://syncplay.pl/guide/ for usage instructions):", "promptforstreamurl-msgbox-label" : "Open media stream URL", "promptforstreamurlinfo-msgbox-label" : "Stream URL", @@ -333,10 +333,10 @@ "trusteddomains-msgbox-label" : u"Domains it is okay to automatically switch to (one per line)", "createcontrolledroom-msgbox-label" : "Create managed room", - "controlledroominfo-msgbox-label" : "Enter name of managed room\r\n(see http://syncplay.pl/guide/ for usage instructions):", + "controlledroominfo-msgbox-label" : "Enter name of managed room\r\n(see https://syncplay.pl/guide/ for usage instructions):", "identifyascontroller-msgbox-label" : "Identify as room operator", - "identifyinfo-msgbox-label" : "Enter operator password for this room\r\n(see http://syncplay.pl/guide/ for usage instructions):", + "identifyinfo-msgbox-label" : "Enter operator password for this room\r\n(see https://syncplay.pl/guide/ for usage instructions):", "public-server-msgbox-label" : u"Select the public server for this viewing session", @@ -417,7 +417,7 @@ "nofile-note" : "(No file being played)", # Server messages to client - "new-syncplay-available-motd-message" : " You are using Syncplay {} but a newer version is available from http://syncplay.pl ", # ClientVersion + "new-syncplay-available-motd-message" : " You are using Syncplay {} but a newer version is available from https://syncplay.pl ", # ClientVersion # Server notifications "welcome-server-notification" : "Welcome to Syncplay server, ver. {0}", # version @@ -437,6 +437,7 @@ "server-motd-argument": "path to file from which motd will be fetched", "server-chat-argument" : "Should chat be disabled?", "server-chat-maxchars-argument" : u"Maximum number of characters in a chat message (default is {})", # Default number of characters + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", "server-messed-up-motd-unescaped-placeholders": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).", "server-messed-up-motd-too-long": u"Message of the Day is too long - maximum of {} chars, {} given.", @@ -458,7 +459,7 @@ "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 53a5c1e1a..2de7b7922 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -50,7 +50,7 @@ "file-different-notification" : u"Il file che stai riproducendo sembra essere diverso da quello di {}", # User "file-differences-notification" : u"Il tuo file mostra le seguenti differenze: {}", # Differences - "room-file-differences" : u"Differenze: {} \n", # File differences (filename, size, and/or duration) + "room-file-differences" : u"Differenze: {}", # File differences (filename, size, and/or duration) "file-difference-filename" : u"nome", "file-difference-filesize" : u"dimensione", "file-difference-duration" : u"durata", @@ -66,7 +66,7 @@ "controller-userlist-userflag" : u"Gestore", "ready-userlist-userflag" : u"Pronto", - "update-check-failed-notification" : u"Controllo automatico degli aggiornamenti di Syncplay {} fallito. Vuoi visitare http://syncplay.pl/ per verificare manualmente la presenza di aggiornamenti?", #Syncplay version + "update-check-failed-notification" : u"Controllo automatico degli aggiornamenti di Syncplay {} fallito. Vuoi visitare https://syncplay.pl/ per verificare manualmente la presenza di aggiornamenti?", #Syncplay version "syncplay-uptodate-notification" : u"Syncplay è aggiornato", "syncplay-updateavailable-notification" : u"Una nuova versione di Syncplay è disponibile. Vuoi visitare la pagina delle release?", @@ -93,10 +93,10 @@ "language-changed-msgbox-label" : u"La lingua sarà cambiata quando avvierai Syncplay.", "promptforupdate-label" : u"Ti piacerebbe che, di tanto in tanto, Syncplay controllasse automaticamente la presenza di aggiornamenti?", - "vlc-interface-version-mismatch": u"Stai eseguendo la versione {} del modulo di interfaccia per VLC di Syncplay, ma Syncplay è progettato per essere utilizzato con la versione {} o superiore. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning": u"Attenzione: Syncplay ha rilevato una vecchia versione del modulo di interfaccia per VLC di Syncplay installata nella cartella di VLC. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", + "vlc-interface-version-mismatch": u"Stai eseguendo la versione {} del modulo di interfaccia per VLC di Syncplay, ma Syncplay è progettato per essere utilizzato con la versione {} o superiore. Per favore, fai riferimento alla User Guide di Syncplay presso https://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": u"Attenzione: Syncplay ha rilevato una vecchia versione del modulo di interfaccia per VLC di Syncplay installata nella cartella di VLC. Per favore, fai riferimento alla User Guide di Syncplay presso https://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", "media-player-latency-warning": u"Attenzione: il media player ha impiegato {} secondi per rispondere. Se stai avendo problemi di sincronizzazione, chiudi delle applicazioni per liberare le risorse di sistema e, se ciò non dovesse avere alcun effetto, prova un altro media player.", # Seconds to respond - "vlc-interface-not-installed": u"Attenzione: il modulo di interfaccia per VLC di Syncplay non è stato trovato nella cartella di VLC. Se stai utilizzando VLC 2.0, VLC userà il modulo syncplay.lua contenuto nella cartella di Syncplay, ma ciò significa che altri custom script di interfaccia ed estensioni non funzioneranno. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", + "vlc-interface-not-installed": u"Attenzione: il modulo di interfaccia per VLC di Syncplay non è stato trovato nella cartella di VLC. Se stai utilizzando VLC 2.0, VLC userà il modulo syncplay.lua contenuto nella cartella di Syncplay, ma ciò significa che altri custom script di interfaccia ed estensioni non funzioneranno. Per favore, fai riferimento alla User Guide di Syncplay presso https://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", "mpv-unresponsive-error": u"mpv non ha risposto per {} secondi, quindi sembra non funzionare correttamente. Per favore, riavvia Syncplay.", # Seconds to respond # Client prompts @@ -129,8 +129,8 @@ "not-json-error" : u"Non è una stringa con codifica JSON\n", "hello-arguments-error" : "Not enough Hello arguments\n", # DO NOT TRANSLATE "version-mismatch-error" : u"La versione del client è diversa da quella del server\n", - "vlc-failed-connection": u"Impossibile collegarsi a VLC. Se non hai installato syncplay.lua e stai usando l'ultima versione di VLC, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", - "vlc-failed-noscript": u"VLC ha segnalato che lo script di interfaccia syncplay.lua non è stato installato. Per favore, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", + "vlc-failed-connection": u"Impossibile collegarsi a VLC. Se non hai installato syncplay.lua e stai usando l'ultima versione di VLC, fai riferimento a https://syncplay.pl/LUA/ per istruzioni.", + "vlc-failed-noscript": u"VLC ha segnalato che lo script di interfaccia syncplay.lua non è stato installato. Per favore, fai riferimento a https://syncplay.pl/LUA/ per istruzioni.", "vlc-failed-versioncheck": u"Questa versione di VLC non è supportata da Syncplay.", "feature-sharedPlaylists" : u"playlist condivise", # used for not-supported-by-server-error @@ -268,7 +268,7 @@ "run-label" : u"Avvia Syncplay", "storeandrun-label" : u"Salva la configurazione e avvia Syncplay", - "contact-label" : u"Sentiti libero di inviare un'e-mail a dev@syncplay.pl, chattare tramite il canale IRC #Syncplay su irc.freenode.net, segnalare un problema su GitHub, lasciare un like sulla nostra pagina Facebook, seguirci su Twitter, o visitare http://syncplay.pl/. NOTA: i messaggi di chat non sono cifrati, quindi non usare Syncplay per inviare dati sensibili.", + "contact-label" : u"Sentiti libero di inviare un'e-mail a dev@syncplay.pl, chattare tramite il canale IRC #Syncplay su irc.freenode.net, segnalare un problema su GitHub, lasciare un like sulla nostra pagina Facebook, seguirci su Twitter, o visitare https://syncplay.pl/. NOTA: i messaggi di chat non sono cifrati, quindi non usare Syncplay per inviare dati sensibili.", "joinroom-label" : u"Entra nella stanza", "joinroom-menu-label" : u"Entra nella stanza {}", @@ -322,7 +322,7 @@ "about-dialog-dependencies": u"Dipendenze", "setoffset-msgbox-label" : u"Imposta offset", - "offsetinfo-msgbox-label" : u"Offset (vedi http://syncplay.pl/guide/ per istruzioni):", + "offsetinfo-msgbox-label" : u"Offset (vedi https://syncplay.pl/guide/ per istruzioni):", "promptforstreamurl-msgbox-label" : u"Apri URL", "promptforstreamurlinfo-msgbox-label" : u"Indirizzo di rete", @@ -334,10 +334,10 @@ "trusteddomains-msgbox-label" : u"Domini a cui è lecito passare automaticamente (uno per riga)", "createcontrolledroom-msgbox-label" : u"Crea stanza gestita", - "controlledroominfo-msgbox-label" : u"Inserisci il nome della stanza gestita\r\n(vedi http://syncplay.pl/guide/ per istruzioni):", + "controlledroominfo-msgbox-label" : u"Inserisci il nome della stanza gestita\r\n(vedi https://syncplay.pl/guide/ per istruzioni):", "identifyascontroller-msgbox-label" : u"Identificati come operatore della stanza", - "identifyinfo-msgbox-label" : u"Inserisci la password dell'operatore per questa stanza\r\n(vedi http://syncplay.pl/guide/ per istruzioni):", + "identifyinfo-msgbox-label" : u"Inserisci la password dell'operatore per questa stanza\r\n(vedi https://syncplay.pl/guide/ per istruzioni):", "public-server-msgbox-label" : u"Seleziona il server pubblico per questa sessione", @@ -418,7 +418,7 @@ "nofile-note" : u"(Nessun file in riproduzione)", # Server messages to client - "new-syncplay-available-motd-message" : u" Stai usando Syncplay {} ma una nuova versione è disponibile presso http://syncplay.pl ", # ClientVersion + "new-syncplay-available-motd-message" : u" Stai usando Syncplay {} ma una nuova versione è disponibile presso https://syncplay.pl ", # ClientVersion # Server notifications "welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version @@ -438,6 +438,7 @@ "server-motd-argument": u"percorso del file da cui verrà letto il messaggio del giorno", "server-chat-argument" : u"abilita o disabilita la chat", "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Il messaggio del giorno ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).", "server-messed-up-motd-too-long": u"Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", @@ -459,7 +460,7 @@ "sharedplaylistenabled-label" : u"Abilita le playlist condivise", "removefromplaylist-menu-label" : u"Rimuovi dalla playlist", "shuffleremainingplaylist-menu-label" : u"Mescola i file non ancora riprodotti", - "shuffleentireplaylist-menuu-label" : u"Mescola l'intera playlist", + "shuffleentireplaylist-menu-label" : u"Mescola l'intera playlist", "undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist", "addfilestoplaylist-menu-label" : u"Aggiungi un file alla fine della playlist", "addurlstoplaylist-menu-label" : u"Aggiungi un indirizzo alla fine della playlist", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 0b47c0788..c2359464b 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -66,7 +66,7 @@ "controller-userlist-userflag" : u"Оператор", "ready-userlist-userflag" : u"Готов", - "update-check-failed-notification" : u"Невозможно автоматически проверить, что версия Syncplay {} все еще актуальна. Хотите зайти на http://syncplay.pl/ и вручную проверить наличие обновлений?", + "update-check-failed-notification" : u"Невозможно автоматически проверить, что версия Syncplay {} все еще актуальна. Хотите зайти на https://syncplay.pl/ и вручную проверить наличие обновлений?", "syncplay-uptodate-notification" : u"У вас последняя версия Syncplay", "syncplay-updateavailable-notification" : u"Доступна новая версия Syncplay. Хотите открыть страницу релиза?", @@ -94,9 +94,9 @@ "promptforupdate-label" : u"Вы не против, если Syncplay будет автоматически изредка проверять наличие обновлений?", "vlc-version-mismatch": u"Syncplay не поддерживает данную версию VLC. Syncplay поддерживает VLC {}+, но не VLC 3. Используйте другой проигрыватель.", # VLC min version - "vlc-interface-version-mismatch" : u"Вы используете модуль интерфейса Syncplay устаревшей версии {} для VLC. К сожалению, Syncplay способен работать с версией {} и выше. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (http://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning" : u"Внимание: Syncplay обнаружил, что старая версия модуля интерфейса Syncplay для VLC уже установлена в директорию VLC. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (http://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", - "vlc-interface-not-installed" : u"Внимание: Модуль интерфейса Syncplay для VLC не обнаружен в директории VLC. По существу, если Вы используете VLC 2.0, то VLC будет использовать модуль syncplay.lua из директории Syncplay, но в таком случае другие пользовательские скрипты и расширения интерфейса не будут работать. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (http://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", + "vlc-interface-version-mismatch" : u"Вы используете модуль интерфейса Syncplay устаревшей версии {} для VLC. К сожалению, Syncplay способен работать с версией {} и выше. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (https://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning" : u"Внимание: Syncplay обнаружил, что старая версия модуля интерфейса Syncplay для VLC уже установлена в директорию VLC. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (https://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", + "vlc-interface-not-installed" : u"Внимание: Модуль интерфейса Syncplay для VLC не обнаружен в директории VLC. По существу, если Вы используете VLC 2.0, то VLC будет использовать модуль syncplay.lua из директории Syncplay, но в таком случае другие пользовательские скрипты и расширения интерфейса не будут работать. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (https://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", "media-player-latency-warning": u"Внимание: У Вашего проигрывателя слишком большой отклик ({} секунд). Если Вы замечаете проблемы с синхронизацией, то закройте ресурсоемкие приложения. Если это не помогло - попробуйте другой проигрыватель.", # Seconds to respond "mpv-unresponsive-error": u"mpv не отвечает {} секунд, по-видимому, произошел сбой. Пожалуйста, перезапустите Syncplay.", # Seconds to respond @@ -130,8 +130,8 @@ "not-json-error" : u"Не является закодированной json-строкой\n", "hello-arguments-error" : u"Не хватает аргументов Hello\n", "version-mismatch-error" : u"Конфликт версий между клиентом и сервером\n", - "vlc-failed-connection" : u"Ошибка подключения к VLC. Если у Вас не установлен syncplay.lua, то обратитесь к http://syncplay.pl/LUA/ за инструкциями.", - "vlc-failed-noscript" : u"VLC сообщает, что скрипт интерфейса syncplay.lua не установлен. Пожалуйста, обратитесь к http://syncplay.pl/LUA/ за инструкциями.", + "vlc-failed-connection" : u"Ошибка подключения к VLC. Если у Вас не установлен syncplay.lua, то обратитесь к https://syncplay.pl/LUA/ за инструкциями.", + "vlc-failed-noscript" : u"VLC сообщает, что скрипт интерфейса syncplay.lua не установлен. Пожалуйста, обратитесь к https://syncplay.pl/LUA/ за инструкциями.", "vlc-failed-versioncheck" : u"Данная версия VLC не поддерживается Syncplay. Пожалуйста, используйте VLC версии 2 или выше.", "vlc-failed-other" : u"Во время загрузки скрипта интерфейса syncplay.lua в VLC произошла следующая ошибка: {}", # Syncplay Error @@ -271,7 +271,7 @@ "run-label" : u"Запустить", "storeandrun-label" : u"Сохранить и запустить", - "contact-label" : u"Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на dev@syncplay.pl, в IRC канал #Syncplay на irc.freenode.net или задавайте вопросы через GitHub. Кроме того, заходите на www.syncplay.pl за инорфмацией, помощью и обновлениями! NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence + "contact-label" : u"Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на dev@syncplay.pl, в IRC канал #Syncplay на irc.freenode.net или задавайте вопросы через GitHub. Кроме того, заходите на www.syncplay.pl за инорфмацией, помощью и обновлениями! NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence "joinroom-label" : u"Зайти в комнату", "joinroom-menu-label" : u"Зайти в комнату {}", @@ -420,7 +420,7 @@ "nofile-note" : u"(ничего)", # Server messages to client - "new-syncplay-available-motd-message" : u" Вы используете Syncplay версии {}. Доступна более новая версия на http://syncplay.pl/ . ", # ClientVersion + "new-syncplay-available-motd-message" : u" Вы используете Syncplay версии {}. Доступна более новая версия на https://syncplay.pl/ . ", # ClientVersion # Server notifications "welcome-server-notification" : u"Добро пожаловать на сервер Syncplay версии {0}", # version @@ -439,6 +439,7 @@ "server-motd-argument" : u"путь к файлу, из которого будет извлекаться MOTD-сообщение", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders" : u"MOTD-сообщение содержит неэкранированные спец.символы. Все знаки $ должны быть продублированы ($$).", "server-messed-up-motd-too-long" : u"MOTD-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).", @@ -459,7 +460,7 @@ "sharedplaylistenabled-label" : u"Включить общий список воспроизведения", "removefromplaylist-menu-label" : u"Удалить", "shufflepremaininglaylist-menuu-label" : u"Shuffle remaining playlist", # Was: Перемешать список # TODO: Translate - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", # TODO: Translate + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", # TODO: Translate "undoplaylist-menu-label" : u"Отменить последнее действие", "addfilestoplaylist-menu-label" : u"Добавить файлы в очередь", "addurlstoplaylist-menu-label" : u"Добавить ссылку в очередь", diff --git a/syncplay/server.py b/syncplay/server.py index 21a09adc4..8e1c62505 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -14,7 +14,7 @@ from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator, meetsMinVersion, playlistIsValid, truncateText class SyncFactory(Factory): - def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH): + def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH, maxUsernameLength=constants.MAX_USERNAME_LENGTH): self.isolateRooms = isolateRooms print getMessage("welcome-server-notification").format(syncplay.version) if password: @@ -28,6 +28,7 @@ def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None self.disableReady = disableReady self.disableChat = disableChat self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH + self.maxUsernameLength = maxUsernameLength if maxUsernameLength is not None else constants.MAX_USERNAME_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -50,7 +51,7 @@ def getFeatures(self): features["managedRooms"] = True features["chat"] = not self.disableChat features["maxChatMessageLength"] = self.maxChatMessageLength - features["maxUsernameLength"] = constants.MAX_USERNAME_LENGTH + features["maxUsernameLength"] = self.maxUsernameLength features["maxRoomNameLength"] = constants.MAX_ROOM_NAME_LENGTH features["maxFilenameLength"] = constants.MAX_FILENAME_LENGTH @@ -549,3 +550,4 @@ def _prepareArgParser(self): self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-username-length', metavar='maxUsernameLength', type=int, nargs='?',help=getMessage("server-maxusernamelength-argument").format(constants.MAX_USERNAME_LENGTH)) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 373715dbf..5a092f0cb 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1,5 +1,5 @@ from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 -from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine +from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine, QEventLoop, Signal from syncplay.vendor.Qt.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices if IsPySide2: @@ -25,7 +25,10 @@ def run(self): if QCoreApplication.instance() is None: self.app = QtWidgets.QApplication(sys.argv) dialog = ConfigDialog(self.config, self._availablePlayerPaths, self.error, self.defaultConfig) - dialog.exec_() + configLoop = QEventLoop() + dialog.show() + dialog.closed.connect(configLoop.quit) + configLoop.exec_() def setAvailablePaths(self, paths): self._availablePlayerPaths = paths @@ -73,6 +76,8 @@ class ConfigDialog(QtWidgets.QDialog): pressedclosebutton = True moreToggling = False + + closed = Signal() def automaticUpdatePromptCheck(self): if self.automaticupdatesCheckbox.checkState() == Qt.PartiallyChecked: @@ -127,7 +132,7 @@ def moreToggled(self): self.setFixedWidth(self.minimumSizeHint().width()) def openHelp(self): - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/client/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/client/")) def safenormcaseandpath(self, path): if utils.isURL(path): @@ -298,7 +303,7 @@ def loadLastUpdateCheckDate(self): else: self.config["lastCheckedForUpdates"] = self.lastCheckedForUpdates.toString("yyyy-MM-d HH:mm:ss.z") except: - self.lastCheckedForUpdates = None + self.config["lastCheckedForUpdates"] = None def loadSavedPublicServerList(self): settings = QSettings("Syncplay", "Interface") @@ -421,11 +426,12 @@ def _saveDataAndLeave(self, storeConfiguration=True): self.pressedclosebutton = False self.close() - return + self.closed.emit() def closeEvent(self, event): if self.pressedclosebutton: super(ConfigDialog, self).closeEvent(event) + self.closed.emit() sys.exit() def keyPressEvent(self, event): @@ -590,7 +596,6 @@ def addBasicTab(self): self.defaultroomLabel.setObjectName("room") self.defaultroomTextbox.setObjectName("room") - self.usernameTextbox.setMaxLength(constants.MAX_USERNAME_LENGTH) self.defaultroomTextbox.setMaxLength(constants.MAX_ROOM_NAME_LENGTH) self.connectionSettingsLayout = QtWidgets.QGridLayout() @@ -1189,6 +1194,7 @@ def resetSettings(self): self.config['resetConfig'] = True self.pressedclosebutton = False self.close() + self.closed.emit() def showEvent(self, *args, **kwargs): self.ensureTabListIsVisible() diff --git a/syncplay/ui/consoleUI.py b/syncplay/ui/consoleUI.py index 332a0ca21..3f7433da9 100644 --- a/syncplay/ui/consoleUI.py +++ b/syncplay/ui/consoleUI.py @@ -91,6 +91,10 @@ def setFeatures(self, featureList): def showMessage(self, message, noTimestamp=False): message = message.encode(sys.stdout.encoding, 'replace') + try: + message = message.decode('utf-8') + except UnicodeEncodeError: + pass if noTimestamp: print(message) else: diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index d2fa3810d..770a73246 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -19,6 +19,7 @@ from syncplay.ui.consoleUI import ConsoleUI if isMacOS() and IsPySide: from Foundation import NSURL + from Cocoa import NSString, NSUTF8StringEncoding lastCheckedForUpdates = None class ConsoleInGUI(ConsoleUI): @@ -111,7 +112,7 @@ def __init__(self, parent=None): self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) nameLabel = QtWidgets.QLabel("
Syncplay
") nameLabel.setFont(QtGui.QFont("Helvetica", 20)) - linkLabel = QtWidgets.QLabel("
syncplay.pl
") + linkLabel = QtWidgets.QLabel("
syncplay.pl
") linkLabel.setOpenExternalLinks(True) versionLabel = QtWidgets.QLabel("
" + getMessage("about-dialog-release").format(version, release_number, __binding__) + "
") licenseLabel = QtWidgets.QLabel("

Copyright © 2017 Syncplay

" + getMessage("about-dialog-license-text") + "

") @@ -222,7 +223,9 @@ def dropEvent(self, event): for url in urls[::-1]: if isMacOS() and IsPySide: - dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + macURL = NSString.alloc().initWithString_(unicode(url.toString())) + pathString = macURL.stringByAddingPercentEscapesUsingEncoding_(NSUTF8StringEncoding) + dropfilepath = os.path.abspath(NSURL.URLWithString_(pathString).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if os.path.isfile(dropfilepath): @@ -327,7 +330,9 @@ def dropEvent(self, event): indexRow = window.playlist.count() for url in urls[::-1]: if isMacOS() and IsPySide: - dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + macURL = NSString.alloc().initWithString_(unicode(url.toString())) + pathString = macURL.stringByAddingPercentEscapesUsingEncoding_(NSUTF8StringEncoding) + dropfilepath = os.path.abspath(NSURL.URLWithString_(pathString).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if os.path.isfile(dropfilepath): @@ -597,7 +602,7 @@ def openPlaylistMenu(self, position): menu.addAction(QtGui.QPixmap(resourcespath + u"delete.png"), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) menu.addSeparator() menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) - menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menuu-label"), lambda: self.shuffleEntirePlaylist()) + menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menu-label"), lambda: self.shuffleEntirePlaylist()) menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_undo.png"), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_edit.png"), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_add.png"),getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) @@ -1120,11 +1125,11 @@ def setOffset(self): def openUserGuide(self): if isLinux(): - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/linux/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/linux/")) elif isWindows(): - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/windows/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/windows/")) else: - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/")) def drop(self): self.close() @@ -1609,7 +1614,9 @@ def dropEvent(self, event): if urls and urls[0].scheme() == 'file': url = event.mimeData().urls()[0] if isMacOS() and IsPySide: - dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + macURL = NSString.alloc().initWithString_(unicode(url.toString())) + pathString = macURL.stringByAddingPercentEscapesUsingEncoding_(NSUTF8StringEncoding) + dropfilepath = os.path.abspath(NSURL.URLWithString_(pathString).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if rewindFile == False: