From 0e9126569b8ab4a71a5a7f92a56f207369e20931 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sun, 4 Feb 2018 23:19:38 +0000
Subject: [PATCH 01/80] Add first letter of Cyrillic alphabet to Syncplay mpv
script (#174 raised by Corginyan)
---
resources/syncplayintf.lua | 1 +
1 file changed, 1 insertion(+)
diff --git a/resources/syncplayintf.lua b/resources/syncplayintf.lua
index 3de79f4..9115faf 100644
--- a/resources/syncplayintf.lua
+++ b/resources/syncplayintf.lua
@@ -61,6 +61,7 @@ local cursor = 1
local key_hints_enabled = false
non_us_chars = {
+ 'А','а',
'ą','ć','ę','ł','ń','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ś','Ź','Ż',
'à','è','ì','ò','ù','À','È','Ì','Ò','Ù',
'á', 'é', 'í', 'ó', 'ú', 'ý', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ý',
From 907904f890fabebcb253bfa890c8d4e62555803e Mon Sep 17 00:00:00 2001
From: Nico769
Date: Tue, 6 Feb 2018 22:55:04 +0100
Subject: [PATCH 02/80] Removes hardcoded label in GuiConfiguration and
replaces it with chatoutputheader-label
---
syncplay/messages_de.py | 3 ++-
syncplay/messages_en.py | 7 ++++---
syncplay/messages_ru.py | 3 ++-
syncplay/ui/GuiConfiguration.py | 20 ++++++++++----------
4 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index 768118b..f015834 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -245,6 +245,7 @@ de = {
"chat-top-option": u"Top", # TODO: Translate
"chat-middle-option": u"Middle", # TODO: Translate
"chat-bottom-option": u"Bottom", # TODO: Translate
+ "chatoutputheader-label" : u"Chat message output", # TODO: Translate
"chatoutputfont-label": u"Chat output font", # TODO: Translate
"chatoutputenabled-label": u"Enable chat output in media player (mpv only for now)", # TODO: Translate
"chatoutputposition-label": u"Output mode", # TODO: Translate
@@ -305,7 +306,7 @@ de = {
"help-menu-label" : u"&Hilfe",
"userguide-menu-label" : u"&Benutzerhandbuch öffnen",
"update-menu-label" : u"auf &Aktualisierung prüfen",
-
+
#About dialog - TODO: Translate
"about-menu-label": u"&About Syncplay",
"about-dialog-title": u"About Syncplay",
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index e0f7925..05d4cf6 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -137,7 +137,7 @@ en = {
"feature-chat" : u"chat", # used for not-supported-by-server-error
"feature-readiness" : u"readiness", # used for not-supported-by-server-error
"feature-managedRooms" : u"managed rooms", # used for not-supported-by-server-error
-
+
"not-supported-by-server-error" : u"The {} feature is not supported by this server..", #feature
"shared-playlists-not-supported-by-server-error" : "The shared playlists feature may not be supported by the server. To ensure that it works correctly requires a server running Syncplay {}+, but the server is running Syncplay {}.", #minVersion, serverVersion
"shared-playlists-disabled-by-server-error" : "The shared playlist feature has been disabled in the server configuration. To use this feature you will need to connect to a different server.",
@@ -239,7 +239,7 @@ en = {
"unpause-ifminusersready-option" : u"Unpause if already ready or if all others ready and min users ready",
"unpause-always" : u"Always unpause",
"syncplay-trusteddomains-title": u"Trusted domains (for streaming services and hosted content)",
-
+
"chat-title" : u"Chat message input",
"chatinputenabled-label" : u"Enable chat input via mpv",
"chatdirectinput-label" : u"Allow instant chat input (bypass having to press enter key to chat)",
@@ -250,6 +250,7 @@ en = {
"chat-top-option" : u"Top",
"chat-middle-option" : u"Middle",
"chat-bottom-option" : u"Bottom",
+ "chatoutputheader-label" : u"Chat message output",
"chatoutputfont-label": u"Chat output font",
"chatoutputenabled-label": u"Enable chat output in media player (mpv only for now)",
"chatoutputposition-label": u"Output mode",
@@ -310,7 +311,7 @@ en = {
"help-menu-label" : "&Help",
"userguide-menu-label" : "Open user &guide",
"update-menu-label" : "Check for &update",
-
+
#About dialog
"about-menu-label": u"&About Syncplay",
"about-dialog-title": u"About Syncplay",
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index 9bed670..0b47c07 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -254,6 +254,7 @@ ru = {
"chat-top-option": u"Top", # TODO: Translate
"chat-middle-option": u"Middle", # TODO: Translate
"chat-bottom-option": u"Bottom", # TODO: Translate
+ "chatoutputheader-label" : u"Chat message output", # TODO: Traslate
"chatoutputfont-label": u"Chat output font", # TODO: Translate
"chatoutputenabled-label": u"Enable chat output in media player (mpv only for now)", # TODO: Translate
"chatoutputposition-label": u"Output mode", # TODO: Translate
@@ -313,7 +314,7 @@ ru = {
"help-menu-label" : u"&Помощь",
"userguide-menu-label" : u"&Руководство пользователя",
"update-menu-label" : u"Проверить &обновления",
-
+
#About dialog - TODO: Translate
"about-menu-label": u"&About Syncplay",
"about-dialog-title": u"About Syncplay",
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index b5ef9d7..373715d 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -257,7 +257,7 @@ class ConfigDialog(QtWidgets.QDialog):
# executable. I would have used plistlib here, but since the version of this library in
# py < 3.4 can't read from binary plist files it's pretty much useless. Therefore, let's
# play a game of "Guess my executable!"
-
+
# Step 1: get all the executable files. In a Mac OS X Application bundle, executables are stored
# inside /Contents/MacOS.
execPath = os.path.join(os.path.normpath(fileName), 'Contents', 'MacOS')
@@ -266,7 +266,7 @@ class ConfigDialog(QtWidgets.QDialog):
fn = os.path.join(execPath, fn)
if os.path.isfile(fn) and os.access(fn, os.X_OK):
execFiles.append(fn)
-
+
# Step 2: figure out which file name looks like the application name
baseAppName = os.path.basename(fileName).replace('.app', '').lower()
foundExe = False
@@ -276,14 +276,14 @@ class ConfigDialog(QtWidgets.QDialog):
fileName = fn
foundExe = True
break
-
+
# Step 3: use the first executable in the list if no executable was found
try:
if not foundExe:
fileName = execFiles[0]
except IndexError: # whoops, looks like this .app doesn't contain a executable file at all
pass
-
+
self.executablepathCombobox.setEditText(os.path.normpath(fileName))
def loadLastUpdateCheckDate(self):
@@ -379,7 +379,7 @@ class ConfigDialog(QtWidgets.QDialog):
elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]):
defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]
else:
- defaultdirectory = ""
+ defaultdirectory = ""
browserfilter = "All files (*)"
fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory,
browserfilter, "", options)
@@ -387,10 +387,10 @@ class ConfigDialog(QtWidgets.QDialog):
self.mediapathTextbox.setText(os.path.normpath(fileName))
self.mediadirectory = os.path.dirname(fileName)
self.saveMediaBrowseSettings()
-
+
def _runWithoutStoringConfig(self):
self._saveDataAndLeave(False)
-
+
def _saveDataAndLeave(self, storeConfiguration=True):
self.config['noStore'] = not storeConfiguration
if storeConfiguration:
@@ -946,7 +946,7 @@ class ConfigDialog(QtWidgets.QDialog):
self.chatInputFontButton.objectName(), self.chatFontLabel.objectName(),
self.chatInputColourButton.objectName(), self.chatDirectInputCheckbox.objectName()]
# Output
- self.chatOutputGroup = QtWidgets.QGroupBox(u"Chat message output")
+ self.chatOutputGroup = QtWidgets.QGroupBox(getMessage("chatoutputheader-label"))
self.chatOutputLayout = QtWidgets.QGridLayout()
self.chatLayout.addWidget(self.chatOutputGroup)
self.chatOutputGroup.setLayout(self.chatOutputLayout)
@@ -1213,7 +1213,7 @@ class ConfigDialog(QtWidgets.QDialog):
settings = QSettings("Syncplay", "MoreSettings")
settings.clear()
self.datacleared = True
-
+
def populateEmptyServerList(self):
if self.publicServers is None:
if self.config["checkForUpdatesAutomatically"] == True:
@@ -1241,7 +1241,7 @@ class ConfigDialog(QtWidgets.QDialog):
self.serverpassTextbox.setEnabled(True)
self.serverpassTextbox.setReadOnly(False)
self.serverpassTextbox.setText(self.storedPassword)
-
+
def __init__(self, config, playerpaths, error, defaultConfig):
self.config = config
self.defaultConfig = defaultConfig
From 3f842a2cd0f62a27ccef1d194970f0e82db76d54 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sun, 4 Feb 2018 23:19:38 +0000
Subject: [PATCH 03/80] Add first letter of Cyrillic alphabet to Syncplay mpv
script (#174 raised by Corginyan)
---
resources/syncplayintf.lua | 1 +
1 file changed, 1 insertion(+)
diff --git a/resources/syncplayintf.lua b/resources/syncplayintf.lua
index 3de79f4..9115faf 100644
--- a/resources/syncplayintf.lua
+++ b/resources/syncplayintf.lua
@@ -61,6 +61,7 @@ local cursor = 1
local key_hints_enabled = false
non_us_chars = {
+ 'А','а',
'ą','ć','ę','ł','ń','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ś','Ź','Ż',
'à','è','ì','ò','ù','À','È','Ì','Ò','Ù',
'á', 'é', 'í', 'ó', 'ú', 'ý', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ý',
From 73c14197fc628c86440e4354c511c1cd490c43ee Mon Sep 17 00:00:00 2001
From: alby128
Date: Fri, 9 Feb 2018 12:40:01 +0100
Subject: [PATCH 04/80] Added homebrew self update on Travis
---
.travis.yml | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index ce3f7d3..d4477e0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,21 +6,22 @@ branches:
- master_local
script:
-- python buildPy2app.py py2app fix
+- python2 buildPy2app.py py2app fix
before_install:
+- brew update
- brew install python
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
-- export PATH=/usr/local/bin:$PATH
+#- export PATH=/usr/local/bin:$PATH
- export QT_PREFERRED_BINDING="PySide"
-- pip install twisted appnope pyobjc py2app
+- pip2 install twisted appnope pyobjc py2app
before_deploy:
-- pip install dmgbuild
+- pip2 install dmgbuild
- mkdir dist_dmg
- mv resources/macos_vlc_install.command resources/.macos_vlc_install.command
- mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua
From 139f3f533123c17caf3e93b546052713bd5bc2d2 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sun, 4 Feb 2018 23:19:38 +0000
Subject: [PATCH 05/80] Add first letter of Cyrillic alphabet to Syncplay mpv
script (#174 raised by Corginyan)
---
resources/syncplayintf.lua | 1 +
1 file changed, 1 insertion(+)
diff --git a/resources/syncplayintf.lua b/resources/syncplayintf.lua
index 3de79f4..9115faf 100644
--- a/resources/syncplayintf.lua
+++ b/resources/syncplayintf.lua
@@ -61,6 +61,7 @@ local cursor = 1
local key_hints_enabled = false
non_us_chars = {
+ 'А','а',
'ą','ć','ę','ł','ń','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ś','Ź','Ż',
'à','è','ì','ò','ù','À','È','Ì','Ò','Ù',
'á', 'é', 'í', 'ó', 'ú', 'ý', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ý',
From ad85ce98566321a3bfa32a8e159d36d71e21cbc6 Mon Sep 17 00:00:00 2001
From: alby128
Date: Fri, 9 Feb 2018 12:40:01 +0100
Subject: [PATCH 06/80] Added homebrew self update on Travis
---
.travis.yml | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index ee035e0..accff29 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,21 +6,22 @@ branches:
- master
script:
-- python buildPy2app.py py2app
+- python2 buildPy2app.py py2app fix
before_install:
+- brew update
- brew install python
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
-- export PATH=/usr/local/bin:$PATH
+#- export PATH=/usr/local/bin:$PATH
- export QT_PREFERRED_BINDING="PySide"
-- pip install twisted appnope pyobjc py2app
+- pip2 install twisted appnope pyobjc py2app
before_deploy:
-- pip install dmgbuild
+- pip2 install dmgbuild
- mkdir dist_dmg
- mv resources/macos_vlc_install.command resources/.macos_vlc_install.command
- mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua
From 394fd6ed0932f96b2099f2463f111daa8fa2705d Mon Sep 17 00:00:00 2001
From: alby128
Date: Fri, 9 Feb 2018 12:40:01 +0100
Subject: [PATCH 07/80] Added homebrew self update on Travis
---
.travis.yml | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index ee035e0..accff29 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,21 +6,22 @@ branches:
- master
script:
-- python buildPy2app.py py2app
+- python2 buildPy2app.py py2app fix
before_install:
+- brew update
- brew install python
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
-- export PATH=/usr/local/bin:$PATH
+#- export PATH=/usr/local/bin:$PATH
- export QT_PREFERRED_BINDING="PySide"
-- pip install twisted appnope pyobjc py2app
+- pip2 install twisted appnope pyobjc py2app
before_deploy:
-- pip install dmgbuild
+- pip2 install dmgbuild
- mkdir dist_dmg
- mv resources/macos_vlc_install.command resources/.macos_vlc_install.command
- mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua
From 2c3012722d4fcaf0691a06e339f1863ab81edf84 Mon Sep 17 00:00:00 2001
From: Nico769
Date: Fri, 9 Feb 2018 20:14:37 +0100
Subject: [PATCH 08/80] Adds Italian translation to Syncplay and its installer.
---
buildPy2exe.py | 19 ++
syncplay/messages.py | 4 +-
syncplay/messages_it.py | 479 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 501 insertions(+), 1 deletion(-)
create mode 100644 syncplay/messages_it.py
diff --git a/buildPy2exe.py b/buildPy2exe.py
index 4f8f8d9..7efc506 100755
--- a/buildPy2exe.py
+++ b/buildPy2exe.py
@@ -57,6 +57,7 @@ NSIS_SCRIPT_TEMPLATE = r"""
LoadLanguageFile "$${NSISDIR}\Contrib\Language files\Polish.nlf"
LoadLanguageFile "$${NSISDIR}\Contrib\Language files\Russian.nlf"
LoadLanguageFile "$${NSISDIR}\Contrib\Language files\German.nlf"
+ LoadLanguageFile "$${NSISDIR}\Contrib\Language files\Italian.nlf"
Unicode true
@@ -83,6 +84,11 @@ NSIS_SCRIPT_TEMPLATE = r"""
VIAddVersionKey /LANG=$${LANG_RUSSIAN} "FileVersion" "$version.0"
VIAddVersionKey /LANG=$${LANG_RUSSIAN} "LegalCopyright" "Syncplay"
VIAddVersionKey /LANG=$${LANG_RUSSIAN} "FileDescription" "Syncplay"
+
+ VIAddVersionKey /LANG=$${LANG_ITALIAN} "ProductName" "Syncplay"
+ VIAddVersionKey /LANG=$${LANG_ITALIAN} "FileVersion" "$version.0"
+ VIAddVersionKey /LANG=$${LANG_ITALIAN} "LegalCopyright" "Syncplay"
+ VIAddVersionKey /LANG=$${LANG_ITALIAN} "FileDescription" "Syncplay"
LangString ^SyncplayLanguage $${LANG_ENGLISH} "en"
LangString ^Associate $${LANG_ENGLISH} "Associate Syncplay with multimedia files."
@@ -126,6 +132,17 @@ NSIS_SCRIPT_TEMPLATE = r"""
LangString ^QuickLaunchBar $${LANG_GERMAN} "Schnellstartleiste"
LangString ^AutomaticUpdates $${LANG_GERMAN} "Automatisch nach Updates suchen";
LangString ^UninstConfig $${LANG_GERMAN} "Konfigurationsdatei löschen."
+
+ LangString ^SyncplayLanguage $${LANG_ITALIAN} "it"
+ LangString ^Associate $${LANG_ITALIAN} "Associa Syncplay con i file multimediali."
+ LangString ^VLC $${LANG_ITALIAN} "Installa l'interfaccia di Syncplay per VLC 2+"
+ LangString ^BrowseVLCBtn $${LANG_ITALIAN} "Cartella di VLC"
+ LangString ^Shortcut $${LANG_ITALIAN} "Crea i collegamenti nei percorsi seguenti:"
+ LangString ^StartMenu $${LANG_ITALIAN} "Menu Start"
+ LangString ^Desktop $${LANG_ITALIAN} "Desktop"
+ LangString ^QuickLaunchBar $${LANG_ITALIAN} "Barra di avvio rapido"
+ LangString ^AutomaticUpdates $${LANG_ITALIAN} "Controllo automatico degli aggiornamenti"
+ LangString ^UninstConfig $${LANG_ITALIAN} "Cancella i file di configurazione."
; Remove text to save space
LangString ^ClickInstall $${LANG_GERMAN} " "
@@ -233,6 +250,8 @@ NSIS_SCRIPT_TEMPLATE = r"""
Push Русский
Push $${LANG_GERMAN}
Push Deutsch
+ Push $${LANG_ITALIAN}
+ Push Italiano
Push A ; A means auto count languages
LangDLL::LangDialog "Language Selection" "Please select the language of Syncplay and the installer"
Pop $$LANGUAGE
diff --git a/syncplay/messages.py b/syncplay/messages.py
index 4ef13b2..63c72a0 100755
--- a/syncplay/messages.py
+++ b/syncplay/messages.py
@@ -4,11 +4,13 @@ from syncplay import constants
import messages_en
import messages_ru
import messages_de
+import messages_it
messages = {
"en": messages_en.en,
"ru": messages_ru.ru,
"de": messages_de.de,
+ "it": messages_it.it,
"CURRENT": None
}
@@ -68,4 +70,4 @@ def getMessage(type_, locale=None):
else:
print u"WARNING: Cannot find message '{}'!".format(type_)
return "!{}".format(type_) # TODO: Remove
- #raise KeyError(type_)
\ No newline at end of file
+ #raise KeyError(type_)
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
new file mode 100644
index 0000000..038431c
--- /dev/null
+++ b/syncplay/messages_it.py
@@ -0,0 +1,479 @@
+# coding:utf8
+
+"""Italian dictionary"""
+
+it = {
+ "LANGUAGE" : u"Italiano",
+
+ # Client notifications
+ "config-cleared-notification" : u"Impostazioni resettate. I cambiamenti saranno memorizzati quando salverai una configurazione valida.",
+
+ "relative-config-notification" : u"Caricato i file di configurazione relativi: {}",
+
+ "connection-attempt-notification" : u"Tentativo di connessione a {}:{}", # Port, IP
+ "reconnection-attempt-notification" : u"Connessione col server persa, tentativo di riconnesione in corso",
+ "disconnection-notification" : u"Disconnesso dal server",
+ "connection-failed-notification" : u"Connessione col server fallita",
+ "connected-successful-notification" : u"Connessione al server effettuata con successo",
+ "retrying-notification" : u"%s, Nuovo tentativo in %d secondi...", # Seconds
+
+ "rewind-notification" : u"Riavvolgendo a causa della differenza temporale con {}", # User
+ "fastforward-notification" : u"Avanzamento rapido a causa della differenza temporale con {}", # User
+ "slowdown-notification" : u"Rallentando a causa della differenza temporale con {}", # User
+ "revert-notification" : u"Ritornando alla velocità di riproduzione normale",
+
+ "pause-notification" : u"{} ha messo in pausa", # User
+ "unpause-notification" : u"{} ha ripreso la riproduzione", # User
+ "seek-notification" : u"{} è passato da {} a {}", # User, from time, to time
+
+ "current-offset-notification" : u"Offset corrente: {} secondi", # Offset
+
+ "media-directory-list-updated-notification" : u"Le cartelle multimediali di Syncplay sono state aggiornate.",
+
+ "room-join-notification" : u"{} è entranto nella stanza: '{}'", # User
+ "left-notification" : u"{} ha abbandonato", # User
+ "left-paused-notification" : u"{} ha abbandonato, {} ha messo in pausa", # User who left, User who paused
+ "playing-notification" : u"{} sta riproducendo '{}' ({})", # User, file, duration
+ "playing-notification/room-addendum" : u" nella stanza: '{}'", # Room
+
+ "not-all-ready" : u"Non pronti: {}", # Usernames
+ "all-users-ready" : u"Tutti i partecipanti sono pronti ({} utenti)", #Number of ready users
+ "ready-to-unpause-notification" : u"Ora sei pronto - premi ancora una volta il tasto pausa per riprendere la riproduzione",
+ "set-as-ready-notification" : u"Ora sei pronto",
+ "set-as-not-ready-notification" : u"Non sei pronto",
+ "autoplaying-notification" : u"Riproduzione automatica in {}...", # Number of seconds until playback will start
+
+ "identifying-as-controller-notification" : u"Identificato come gestore della stanza con password '{}'...",
+ "failed-to-identify-as-controller-notification" : u"{} ha fallito l'identificazione come gestore della stanza.",
+ "authenticated-as-controller-notification" : u"{} autenticato come gestore della stanza",
+ "created-controlled-room-notification" : u"Stanza gestita '{}' creata con password '{}'. Per favore salva queste informazioni per una consultazione futura!", # RoomName, operatorPassword
+
+ "file-different-notification" : u"Il file che stai riproducendo sembra essere diverso da quello di {}", # User
+ "file-differences-notification" : u"Il tuo file possiede le seguenti differenze: {}", # Differences
+ "room-file-differences" : u"Differenze nel tuo file: {}", # File differences (filename, size, and/or duration)
+ "file-difference-filename" : u"nome",
+ "file-difference-filesize" : u"dimensione",
+ "file-difference-duration" : u"durata",
+ "alone-in-the-room": u"Non ci sono altri utenti nella stanza",
+
+ "different-filesize-notification" : u" (la dimensione del tuo file è diversa da quella degli altri partecipanti!)",
+ "userlist-playing-notification" : u"{} sta riproducendo:", #Username
+ "file-played-by-notification" : u"File: {} è in riproduzione da:", # File
+ "no-file-played-notification" : u"{} non sta riproducendo alcun file", # Username
+ "notplaying-notification" : u"Partecipanti che non stanno riproducendo alcun file:",
+ "userlist-room-notification" : u"Nella stanza '{}':", # Room
+ "userlist-file-notification" : u"File",
+ "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
+ "syncplay-uptodate-notification" : u"Syncplay è aggiornato",
+ "syncplay-updateavailable-notification" : u"Nuova versione di Syncplay disponibile. Vuoi visitare la pagina delle release?",
+
+ "mplayer-file-required-notification" : u"Utilizzare Syncplay con mplayer richiede la selezione del file all'avvio",
+ "mplayer-file-required-notification/example" : u"Esempio di utilizzo: syncplay [opzioni] [url|percorso/]nomefile",
+ "mplayer2-required" : u"Syncplay non è compatibile con MPlayer 1.x, per favore utilizza mplayer2 or mpv",
+
+ "unrecognized-command-notification" : u"Comando non riconosciuto",
+ "commandlist-notification" : u"Comandi disponibili:",
+ "commandlist-notification/room" : u"\tr [nome] - cambia stanza",
+ "commandlist-notification/list" : u"\tl - mostra la lista di utenti",
+ "commandlist-notification/undo" : u"\tu - annulla l'ultima ricerca",
+ "commandlist-notification/pause" : u"\tp - attiva o disattiva la pausa",
+ "commandlist-notification/seek" : u"\t[s][+-]tempo - salta all'istante di tempo dato, se + o - non è specificato si considera il tempo assoluto in secondi o min:sec",
+ "commandlist-notification/help" : u"\th - questo help",
+ "commandlist-notification/toggle" : u"\tt - attiva o disattiva lo stato 'Pronto'",
+ "commandlist-notification/create" : u"\tc [nome] - crea una stanza gestita usando il nome della stanza attuale",
+ "commandlist-notification/auth" : u"\ta [password] - autentica come gestore della stanza, utilizzando la password del gestore",
+ "commandlist-notification/chat" : u"\tch [message] - invia un messaggio nella chat della stanza",
+ "syncplay-version-notification" : u"Versione di Syncplay: {}", # syncplay.version
+ "more-info-notification" : u"Maggiori informazioni a: {}", # projectURL
+
+ "gui-data-cleared-notification" : u"Syncplay ha resettato i dati, usati dalla GUI, relativi ai percorsi ed allo stato delle finestre.",
+ "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.",
+ "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.",
+ "mpv-unresponsive-error": u"mpv non ha risposto per {} secondi, quindi sembra non funzionare correttamente. Per favore, riavvia Syncplay.", # Seconds to respond
+
+ # Client prompts
+ "enter-to-exit-prompt" : u"Premi Invio per uscire\n",
+
+ # Client errors
+ "missing-arguments-error" : u"Alcuni argomenti obbligatori non sono stati trovati. Fai riferimento a --help",
+ "server-timeout-error" : u"Connessione col server scaduta",
+ "mpc-slave-error" : u"Non è possibile avviare MPC in modalità slave!",
+ "mpc-version-insufficient-error" : u"Versione di MPC non sufficiente, per favore usa `mpc-hc` >= `{}`",
+ "mpc-be-version-insufficient-error" : u"Versione di MPC non sufficiente, per favore usa `mpc-be` >= `{}`",
+ "mpv-version-error" : u"Syncplay non è compatibile con questa versione di mpv. Per favore usa un'altra versione di mpv (es. Git HEAD).",
+ "player-file-open-error" : u"Il player non è riuscito ad aprire il file",
+ "player-path-error" : u"Il path del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2",
+ "hostname-empty-error" : u"Hostname non può essere vuoto",
+ "empty-error" : u"{} non può esssere vuoto", # Configuration
+ "media-player-error": u"Errore media player: \"{}\"", # Error line
+ "unable-import-gui-error": u"Non è possibile importare le librerie GUI. Hai bisogno di PySide per poter utilizzare la GUI.",
+
+ "arguments-missing-error" : u"Alcuni argomenti obbligatori non sono stati trovati. Fai riferimento a --help",
+
+ "unable-to-start-client-error" : u"Impossibile avviare il client",
+
+ "player-path-config-error": u"Il path del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2.",
+ "no-file-path-config-error" :u"Deve essere selezionato un file prima di avviare il player",
+ "no-hostname-config-error": u"Hostname non può essere vuoto",
+ "invalid-port-config-error" : u"La porta deve essere valida",
+ "empty-value-config-error" : u"{} non può essere vuoto", # Config option
+
+ "not-json-error" : u"Non è una stringa con codifica JSON\n",
+ "hello-arguments-error" : u"Argomenti Hello non sufficienti\n",
+ "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-versioncheck": u"Questa versione di VLC non è supportata da Syncplay.",
+
+ "feature-sharedPlaylists" : u"playlist condivise", # used for not-supported-by-server-error
+ "feature-chat" : u"chat", # used for not-supported-by-server-error
+ "feature-readiness" : u"pronto", # used for not-supported-by-server-error
+ "feature-readiness" : u"pronto", # used for not-supported-by-server-error
+ "feature-managedRooms" : u"stanze gestite", # used for not-supported-by-server-error
+
+ "not-supported-by-server-error" : u"La feature {} non è supportata da questo server..", #feature
+ "shared-playlists-not-supported-by-server-error" : u"La feature playlist condivise potrebbe non essere supportata dal server. Si necessita di un server avente Syncplay {}+ per assicurarsi che essa funzioni correttamente, tuttavia il server sta utilizzando Syncplay {}.", #minVersion, serverVersion
+ "shared-playlists-disabled-by-server-error" : u"La feature playlist condivise è stata disabilitata nella configurazione del server. Per utilizzarla, dovrai collegarti ad un altro server.",
+
+ "invalid-seek-value" : u"Valore di ricerca non valido",
+ "invalid-offset-value" : u"Valore di offset non valido",
+
+ "switch-file-not-found-error" : u"Impossibile passare al file '{0}'. Syncplay analizza le cartelle multimediali specificate.", # File not found
+ "folder-search-timeout-error" : u"La ricerca nelle cartelle multimediali è stata interrotta siccome l'analisi di '{}' sta impiegando troppo tempo. Ciò accade se si aggiunge una cartella con troppe sottocartelle nella lista di ricerca. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali nella barra dei menù e rimuovi questa cartella o sostituiscila con una sottocartella appropriata. Se la cartella è idonea, è possibile riabilitarla selezionando File->Imposta cartelle multimediali e premendo 'OK'.", #Folder
+ "folder-search-first-file-timeout-error" : u"La ricerca dei media in '{}' è stata interrotta siccome l'accesso alla cartella sta impiegando troppo tempo. Ciò accade se essa è un disco di rete oppure se hai impostato il blocco della rotazione del disco rigido dopo un certo periodo di inattività. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali, quindi rimuovi la cartella oppure risolvi il problema (es. cambiando le impostazioni del risparmio energetico).", #Folder
+ "added-file-not-in-media-directory-error" : u"Hai selezionato un file in '{}'. Essa non è una cartella multimediale conosciuta. Puoi aggiungerla come cartella multimediale selezionando File->Imposta cartelle multimediali nella barra dei menù.", #Folder
+ "no-media-directories-error" : u"Nessuna cartella multimediale è stata configurata. Per permette il corretto funzionamento delle feature playlist condivise e selezione automatica dei file, naviga in File->Imposta cartelle multimediali e specifica dove Syncplay debba ricercare i file multimediali.",
+ "cannot-find-directory-error" : u"Impossibile trovare la cartella multimediale '{}'. Per aggiornare la lista delle cartelle multimediali seleziona File->Imposta cartelle multimediali dalla barra dei menù e specifica dove Syncplay debba ricercare i file multimediali.",
+
+ "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita http://www.syncplay.pl/ col tuo browser.",
+
+ # Client arguments
+ "argument-description" : u'Soluzione per sincronizzare la riproduzione di istanze di media player multiple attraverso la rete.',
+ "argument-epilog" : u'Se non è specificata alcuna opzione saranno utilizzati i valori _config',
+ "nogui-argument" : u'non mostrare la GUI',
+ "host-argument" : u'indirizzo del server',
+ "name-argument" : u'username desiderato',
+ "debug-argument" : u'modalità debug',
+ "force-gui-prompt-argument" : u'mostra il prompt di configurazione',
+ "no-store-argument" : u'non salva i valori in .syncplay',
+ "room-argument" : u'stanza di default',
+ "password-argument" : u'password del server',
+ "player-path-argument" : u'percorso dell\'eseguibile del tuo player',
+ "file-argument" : u'file da riprodurre',
+ "args-argument" : u'opzioni del player, se hai bisogno di passare opzioni che iniziano con - anteponile con un singolo \'--\'',
+ "clear-gui-data-argument" : u'resetta il percorso e i dati inerenti allo stato della GUI salvati come QSettings',
+ "language-argument" : u'lingua per i messaggi di Syncplay (de/en/ru)',
+
+ "version-argument" : u'mostra la tua versione',
+ "version-message" : u"Stai usando la versione di Syncplay {} ({})",
+
+ # Client labels
+ "config-window-title" : u"Configurazione di Syncplay",
+
+ "connection-group-title" : u"Impostazioni di connessione",
+ "host-label" : u"Indirizzo del server: ",
+ "name-label" : u"Username (opzionale):",
+ "password-label" : u"Password del server (se necessaria):",
+ "room-label" : u"Stanza di default: ",
+
+ "media-setting-title" : u"Impostazioni del media player",
+ "executable-path-label" : u"Percorso del media player:",
+ "media-path-label" : u"Percorso del video (opzionale):",
+ "player-arguments-label" : u"Argomenti del player (se necessari):",
+ "browse-label" : u"Sfoglia",
+ "update-server-list-label" : u"Aggiorna lista",
+
+ "more-title" : u"Mostra altre impostazioni",
+ "never-rewind-value" : u"Mai",
+ "seconds-suffix" : u" secs",
+ "privacy-sendraw-option" : u"Invio semplice",
+ "privacy-sendhashed-option" : u"Invio criptato",
+ "privacy-dontsend-option" : u"Non inviare",
+ "filename-privacy-label" : u"Nome del file:",
+ "filesize-privacy-label" : u"Dimensione del file:",
+ "checkforupdatesautomatically-label" : u"Controlla automaticamente gli aggiornamenti di Syncplay",
+ "slowondesync-label" : u"Rallenta in caso di desync minimo (non supportato su MPC-HC/BE)",
+ "rewindondesync-label" : u"Riavvolgi in caso di desync grave (consigliato)",
+ "fastforwardondesync-label" : u"Avanzamento rapido in caso di ritardo (consigliato)",
+ "fastforwardondesync-label" : u"Avanzamento rapido in caso di lag (consigliato)",
+ "dontslowdownwithme-label" : u"Non rallentare o riavvolgere gli altri utenti (sperimentale)",
+ "pausing-title" : u"Pausa",
+ "pauseonleave-label" : u"In pausa quando gli utenti abbandonano (es. disconnessione)",
+ "readiness-title" : u"Stato iniziale di 'pronto'",
+ "readyatstart-label" : u"Impostami sempre su 'pronto a guardare'",
+ "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay ad ogni apertura", # (Inverted)
+ "showosd-label" : u"Abilita i messaggi OSD",
+
+ "showosdwarnings-label" : u"Includi gli avvisi (es. file differenti, utenti non pronti)",
+ "showsameroomosd-label" : u"Includi gli eventi della tua stanza",
+ "shownoncontrollerosd-label" : u"Includi gli eventi dei non gestori nelle stanze gestite",
+ "showdifferentroomosd-label" : u"Includi gli eventi di altre stanze",
+ "showslowdownosd-label" : u"Includi le notifiche di rallentamento / riavvolgimento",
+ "language-label" : u"Lingua:",
+ "automatic-language" : u"Predefinita ({})", # Default language
+ "showdurationnotification-label" : u"Avvisa in caso di mancata corrispondenza della durata del file",
+ "basics-label" : u"Generali",
+ "readiness-label" : u"Play/Pausa",
+ "misc-label" : u"Miscellanea",
+ "core-behaviour-title" : u"Comportamento principale della stanza",
+ "syncplay-internals-title" : u"Comportamento Syncplay",
+ "syncplay-mediasearchdirectories-title" : u"Cartelle contenenti i file multimediali (un solo percorso per riga)",
+ "sync-label" : u"Sync", # don't have better options as the label won't fit in the panel.
+ "sync-otherslagging-title" : u"Se gli altri partecipanti laggano...",
+ "sync-youlaggging-title" : u"Se stai laggando...",
+ "messages-label" : u"Messaggi",
+ "messages-osd-title" : u"Impostazioni On-screen Display",
+ "messages-other-title" : u"Altre impostazioni dello schermo",
+ "chat-label" : u"Chat",
+ "privacy-label" : u"Privacy", # Currently unused, but will be brought back if more space is needed in Misc tab
+ "privacy-title" : u"Impostazioni privacy",
+ "unpause-title" : u"Premendo play, imposta il tuo stato su pronto e:",
+ "unpause-ifalreadyready-option" : u"Riprendi la riproduzione se eri già pronto",
+ "unpause-ifothersready-option" : u"Riprendi la riproduzione se eri già pronto o se gli altri partecipanti sono pronti (default)",
+ "unpause-ifminusersready-option" : u"Riprendi la riproduzione se eri già pronto o se un numero minimo di partecipanti è pronto",
+ "unpause-always" : u"Riprendi sempre la riproduzione",
+ "syncplay-trusteddomains-title": u"Domini Trusted (per servizi di streaming e contenuti in rete)",
+
+ "chat-title" : u"Inserimento messaggi di chat",
+ "chatinputenabled-label" : u"Abilita la chat tramite mpv",
+ "chatdirectinput-label" : u"Abilita la chat istantanea (evita di dover premere Invio per chattare)",
+ "chatinputfont-label" : u"Font dell'input della chat",
+ "chatfont-label" : u"Imposta font",
+ "chatcolour-label" : u"Imposta colore",
+ "chatinputposition-label" : u"Posizione dell'area di inserimento testo in mpv",
+ "chat-top-option" : u"In alto",
+ "chat-middle-option" : u"Al centro",
+ "chat-bottom-option" : u"In basso",
+ "chatoutputheader-label" : u"Output messaggi di chat",
+ "chatoutputfont-label": u"Font dell'output della chat",
+ "chatoutputenabled-label": u"Abilita l'output della chat nel media player (al momento supporta solo mpv)",
+ "chatoutputposition-label": u"Modalità output",
+ "chat-chatroom-option": u"Stile chatroom",
+ "chat-scrolling-option": u"A scorrimento",
+
+ "mpv-key-tab-hint": u"[TAB] to toggle access to alphabet row key shortcuts.", # TODO needs to clarify this
+ "mpv-key-hint": u"[Invio] per inviare un messaggio. [Esc] per uscire dalla modalità chat.",
+ "alphakey-mode-warning-first-line": u"Puoi utilizzare temporaneamente i vecchi bindings di mpv con i tasti a-z.",
+ "alphakey-mode-warning-second-line": u"Premi [TAB] per ritornare alla modalità chat di Syncplay.",
+
+ "help-label" : u"Aiuto",
+ "reset-label" : u"Impostazioni iniziali",
+ "run-label" : u"Avvia Syncplay",
+ "storeandrun-label" : u"Salva la configurazione e avvia Syncplay",
+
+ "contact-label" : u"Sentiti libero di inviare una 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 criptati, quindi non usare Syncplay per inviare dati sensibili.",
+
+ "joinroom-label" : u"Entra nella stanza",
+ "joinroom-menu-label" : u"Entra nella stanza {}",
+ "seektime-menu-label" : u"Vai a..",
+ "undoseek-menu-label" : u"Annulla vai a..",
+ "play-menu-label" : u"Play",
+ "pause-menu-label" : u"Pausa",
+ "playbackbuttons-menu-label" : u"Mostra i controlli della riproduzione",
+ "autoplay-menu-label" : u"Mostra il tasto di riproduzione automatica",
+ "autoplay-guipushbuttonlabel" : u"Riproduci quando tutti sono pronti",
+ "autoplay-minimum-label" : u"Minimo utenti pronti:",
+
+ "sendmessage-label" : u"Invia",
+
+ "ready-guipushbuttonlabel" : u"Sono pronto a guardare!",
+
+ "roomuser-heading-label" : u"Stanza / Utente",
+ "size-heading-label" : u"Dimensione",
+ "duration-heading-label" : u"Durata",
+ "filename-heading-label" : u"Nome del file",
+ "notifications-heading-label" : u"Notifiche",
+ "userlist-heading-label" : u"Lista di chi sta riproducendo cosa",
+
+ "browseformedia-label" : u"Seleziona i file multimediali",
+
+ "file-menu-label" : u"&File", # & precedes shortcut key
+ "openmedia-menu-label" : u"&Apri file multimediali",
+ "openstreamurl-menu-label" : u"Apri &media stream URL",
+ "setmediadirectories-menu-label" : u"Imposta &cartelle multimediali",
+ "exit-menu-label" : u"&Esci",
+ "advanced-menu-label" : u"&Avanzate",
+ "window-menu-label" : u"&Finestra",
+ "setoffset-menu-label" : u"Imposta &offset",
+ "createcontrolledroom-menu-label" : u"&Crea stanza gestita",
+ "identifyascontroller-menu-label" : u"&Identificati come operatore della stanza",
+ "settrusteddomains-menu-label" : u"Imposta &domini Trusted",
+ "addtrusteddomain-menu-label" : u"Aggiungi {} come dominio Trusted", # Domain
+
+ "playback-menu-label" : u"&Riproduzione",
+
+ "help-menu-label" : u"&Aiuto",
+ "userguide-menu-label" : u"Apri guida &utente",
+ "update-menu-label" : u"Controlla nuovi &aggiornamenti",
+
+ #About dialog
+ "about-menu-label": u"&Informazioni su Syncplay",
+ "about-dialog-title": u"Informazioni su Syncplay",
+ "about-dialog-release": u"Versione {} release {} su {}",
+ "about-dialog-license-text" : u"Licenza Apache License, Version 2.0",
+ "about-dialog-license-button": u"Licenza",
+ "about-dialog-dependencies": u"Dipendenze",
+
+ "setoffset-msgbox-label" : u"Imposta offset",
+ "offsetinfo-msgbox-label" : u"Offset (vedi http://syncplay.pl/guide/ per istruzioni):",
+
+ "promptforstreamurl-msgbox-label" : u"Apri media stream URL",
+ "promptforstreamurlinfo-msgbox-label" : u"Stream URL",
+
+ "addfolder-label" : u"Aggiungi cartella",
+
+ "adduris-msgbox-label" : u"Aggiungi gli URL alla playlist (uno per riga)",
+ "editplaylist-msgbox-label" : u"Imposta playlist (una per riga)",
+ "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):",
+
+ "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):",
+
+ "public-server-msgbox-label" : u"Seleziona il server pubblico per questa sessione",
+
+ "megabyte-suffix" : u" MB",
+
+ # Tooltips
+
+ "host-tooltip" : u"Hostname o indirizzo IP a cui collegarsi e, se necessaria, includere la porta (es. syncplay.pl:8999). La sincronizzazione avviene solo con gli utenti sullo stesso server/porta.",
+ "name-tooltip" : u"Il nickname con cui sarai riconosciuto. Nessuna registrazione necessaria, cosi potrai sempre cambiarlo. Se lasciato vuoto, viene scelto un nome casuale.",
+ "password-tooltip" : u"La password è necessaria solo in caso di connessione a server privati.",
+ "room-tooltip" : u"La stanza in cui entrare dopo la connessione. Può assumere qualsiasi nome, ma ricorda che sarai sincronizzato solo con gli utenti nella stessa stanza.",
+
+ "executable-path-tooltip" : u"Percorso del media player desiderato (scegliere tra mpv, VLC, MPC-HC/BE or mplayer2).",
+ "media-path-tooltip" : u"Percorso del video o stream da aprire. Necessario per mplayer2.",
+ "player-arguments-tooltip" : u"Argomenti da linea di comando aggiuntivi da passare al media player scelto.",
+ "mediasearcdirectories-arguments-tooltip" : u"Cartelle dove Syncplay ricercherà i file multimediali, es. quando usi la feature click to switch. Syncplay ricercherà ricorsivamente nelle sottocartelle.",
+
+ "more-tooltip" : u"Mostra le impostazioni usate meno frequentemente.",
+ "filename-privacy-tooltip" : u"Modalità privacy per inviare il nome del file attualmente in riproduzione al server.",
+ "filesize-privacy-tooltip" : u"Modalità privacy per inviare la dimensione del file attualmente in riproduzione al server.",
+ "privacy-sendraw-tooltip" : u"Invia questa informazione senza offuscamento. Questa è l'impostazione predefinita per la maggior parte delle funzionalità.",
+ "privacy-sendhashed-tooltip" : u"Invia una versione criptata dell'informazione, rendendola meno visibile agli altri client.",
+ "privacy-dontsend-tooltip" : u"Non inviare questa informazione al server. Ciò garantisce massima privacy.",
+ "checkforupdatesautomatically-tooltip" : u"Controlla regolarmente la presenza di nuove versioni di Syncplay.",
+ "slowondesync-tooltip" : u"Riduce temporaneamente il rateo di riproduzione quando c'è bisogno di sincronizzarti con gli altri spettatori. Non supportato su MPC-HC/BE.",
+ "dontslowdownwithme-tooltip" : u"Gli altri utenti non vengono rallentati o riavvolti se stai laggando. Utile per i gestori della stanza.",
+ "pauseonleave-tooltip" : u"Mette in pausa la riproduzione se vieni disconnesso o se qualcuno lascia la stanza.",
+ "readyatstart-tooltip" : u"Imposta il tuo stato su 'pronto' all'avvio (in caso contrario, sarai su 'non pronto' fintanto che non cambierai il tuo stato)",
+ "forceguiprompt-tooltip" : u"Il dialogo di configurazione non viene mostrato quando apri un file con Syncplay.", # (Inverted)
+ "nostore-tooltip" : u"Avvia Syncplay con la configurazione scelta, ma non salva permanentemente le impostazioni.", # (Inverted)
+ "rewindondesync-tooltip" : u"Torna indietro quando necessario per ristabilire la sincronizzazione. Disabilitare quest'opzione può causare gravi problemi di sincronizzazione!",
+ "fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (o la tua posizione supposta se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).",
+ "showosd-tooltip" : u"Invia i messaggi di Syncplay all'OSD del media player.",
+ "showosdwarnings-tooltip" : u"Mostra gli avvisi in caso di riproduzione di: un file differente, unico utente nella stanza, utenti non pronti, etc.",
+ "showsameroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui si trova l'utente.",
+ "shownoncontrollerosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi ai non operatori presenti nelle stanze gestite.",
+ "showdifferentroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui l'utente non si trova.",
+ "showslowdownosd-tooltip" : u"Mostra le notifiche di rallentamento / inversione in caso di differenza temporale.",
+ "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file multiparte. Può risultare in falsi positivi.",
+ "language-tooltip" : u"Lingua da utilizzare in Syncplay.",
+ "unpause-always-tooltip" : u"Se riprendi la riproduzione il tuo stato cambia in 'pronto' e la pausa viene interrotta, piuttosto che impostarti solo su pronto.",
+ "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', verrai impostato su pronto - riprendi la riproduzione ancora una volta per uscire dalla pausa.",
+ "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto' la pausa verrà interrotta solo se gli altri sono pronti.",
+ "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', la pausa verrà interrotta solo se un numero minimo di utenti è 'pronto'.",
+ "trusteddomains-arguments-tooltip" : u"Domini verso cui è possibile collegarsi automaticamente quando le playlist condivise sono abilitate.",
+
+ "chatinputenabled-tooltip" : u"Abilita l'input della chat in mpv (premi Invio per chattare, per inviare ed escape per cancellare)",
+ "chatdirectinput-tooltip" : u"Evita di dover premere Invio per aprire l'input della chat in mpv. Premi TAB in mpv per disabilitare temporaneamente questa feature.",
+ "font-label-tooltip" : u"Font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.",
+ "set-input-font-tooltip" : u"Font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.",
+ "set-input-colour-tooltip" : u"Colore del font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.",
+ "chatinputposition-tooltip" : u"Posizione dell'input della chat in mpv quando premi Invio.",
+ "chatinputposition-top-tooltip" : u"Posiziona l'input della chat in cima alla finestra di mpv.",
+ "chatinputposition-middle-tooltip" : u"Posizione l'input della chat al centro della finestra di mpv.",
+ "chatinputposition-bottom-tooltip" : u"Posiziona l'input della chat in basso alla finestra di mpv.",
+ "chatoutputenabled-tooltip": u"Mostra i messaggi di chat nell'OSD (se supportato dal media player).",
+ "font-output-label-tooltip": u"Font dell'output della chat.",
+ "set-output-font-tooltip": u"Font usato per mostrare i messaggi di chat.",
+ "chatoutputmode-tooltip": u"Come sono mostrati i messaggi di chat.",
+ "chatoutputmode-chatroom-tooltip": u"Mostra i nuovi messaggi di chat al di sotto di quelli precedenti.",
+ "chatoutputmode-scrolling-tooltip": u"Scrolla il testo della chat da destra a sinistra.",
+
+ "help-tooltip" : u"Apri la guida utente su Syncplay.pl.",
+ "reset-tooltip" : u"Resetta tutte le impostazioni.",
+ "update-server-list-tooltip" : u"Si collega a syncplay.pl per aggiornare la lista dei server pubblici.",
+
+ "joinroom-tooltip" : u"Abbandona la stanza attuale e entra in quella specificata.",
+ "seektime-msgbox-label" : u"Salta all'istante di tempo specificato (in secondi / min:sec). Usa +/- per una ricerca relativa.",
+ "ready-tooltip" : u"Indica quando sei pronto a guardare.",
+ "autoplay-tooltip" : u"Riproduzione automatica quado il numero minimo di utenti è su 'pronto'.",
+ "switch-to-file-tooltip" : u"Doppio click per passare a {}", # Filename
+ "sendmessage-tooltip" : u"Invia il messaggio alla stanza",
+
+ # In-userlist notes (GUI)
+ "differentsize-note" : u"Dimensione diversa!",
+ "differentsizeandduration-note" : u"Durata e dimensione diversi!",
+ "differentduration-note" : u"Durata diversa!",
+ "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
+
+ # Server notifications
+ "welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version
+ "client-connected-room-server-notification" : u"{0}({2}) connesso alla stanza '{1}'", # username, host, room
+ "client-left-server-notification" : u"{0} ha abbandonato il server", # name
+ "no-salt-notification" : u"NOTA BENE: In futuro, per consentire il corretto funzionamento delle password generate da questo server (per le stanze gestite) quando viene riavviato, aggiungere da linea di comando il seguente argomento prima di eseguire Syncplay server: --salt {}", #Salt
+
+
+ # Server arguments
+ "server-argument-description" : u'Soluzione per sincronizzare la riproduzione di istanze multiple di MPlayer e MPC-HC/BE attraverso la rete. Istanza del server',
+ "server-argument-epilog" : u'Se non è specificata alcuna opzione saranno utilizzati i valori _config',
+ "server-port-argument" : u'Porta TCP del server',
+ "server-password-argument" : u'password del server',
+ "server-isolate-room-argument" : u'le stanze devono essere isolate?',
+ "server-salt-argument" : u"usare stringhe randomizzate per generare le password delle stanze gestite",
+ "server-disable-ready-argument" : u"disabilita la funzionalità 'pronto'",
+ "server-motd-argument": u"percorso del file da cui verrà letto il motd",
+ "server-chat-argument" : u"disabiliare la chat?",
+ "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters
+ "server-messed-up-motd-unescaped-placeholders": u"Il Message of the Day ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).",
+ "server-messed-up-motd-too-long": u"Il Message of the Day è troppo lungo - numero massimo di caratteri è {}, {} trovati.",
+
+ # Server errors
+ "unknown-command-server-error" : u"Comando non riconosciuto {}", # message
+ "not-json-server-error" : u"Non è una stringa in codifica json {}", # message
+ "not-known-server-error" : u"Devi essere riconosciuto dal server prima di poter inviare questo comando",
+ "client-drop-server-error" : u"Il client è caduto: {} -- {}", # host, error
+ "password-required-server-error" : u"La password è necessaria",
+ "wrong-password-server-error" : u"La password inserita è errata",
+ "hello-server-error" : u"Non ci sono abbastanza argomenti Hello",
+
+ # Playlists
+ "playlist-selection-changed-notification" : u"{} ha cambiato la selezione della playlist", # Username
+ "playlist-contents-changed-notification" : u"{} ha aggiornato la playlist", # Username
+ "cannot-find-file-for-playlist-switch-error" : u"Impossibile trovare il file {} nelle cartelle multimediali per permettere il cambio di playlist!", # Filename
+ "cannot-add-duplicate-error" : u"Impossibile aggiungere una seconda voce per '{}' alla playlist. Duplicati non ammessi.", #Filename
+ "cannot-add-unsafe-path-error" : u"Impossibile caricare automaticamente {} perchè non è presente nei domini Trusted. Puoi passare all'inserimento manuale facendo doppio click sull'URL nella playlist, e aggiungerlo ai domini Trusted tramite File->Avanzate->Imposta domini Trusted. Cliccando col tasto destro del mouse su un URL puoi aggiungere il suo dominio come dominio Trusted tramite il menù contestuale.", # Filename
+ "sharedplaylistenabled-label" : u"Abilita le playlist condivise",
+ "removefromplaylist-menu-label" : u"Rimuovi dalla playlist",
+ "shuffleremainingplaylist-menu-label" : u"Shuffle le playlist rimanenti",
+ "shuffleentireplaylist-menuu-label" : u"Shuffle l'intera playlist",
+ "undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist",
+ "addfilestoplaylist-menu-label" : u"Aggiungi i file alla fine della playlist",
+ "addurlstoplaylist-menu-label" : u"Aggiungi gli URL alla fine della playlist",
+ "editplaylist-menu-label": u"Modifica playlist",
+
+ "open-containing-folder": u"Apri la cartella contenente questo file",
+ "addusersfiletoplaylist-menu-label" : u"Aggiungi il file {} alla playlist", # item owner indicator # TODO needs testing
+ "addusersstreamstoplaylist-menu-label" : u"Aggiungi lo stream {} alla playlist", # item owner indicator # TODO needs testing
+ "openusersstream-menu-label" : u"Apri lo stream di {}", # [username]'s
+ "openusersfile-menu-label" : u"Apri il file di {}", # [username]'s
+ "item-is-yours-indicator" : u"tuo", # Goes with addusersfiletoplaylist/addusersstreamstoplaylist # TODO needs testing
+ "item-is-others-indicator" : u"di {}", # username - goes with addusersfiletoplaylist/addusersstreamstoplaylist # TODO needs testing
+
+ "playlist-instruction-item-message" : u"Trascina qui i file per aggiungerli alla playlist condivisa.",
+ "sharedplaylistenabled-tooltip" : u"Gli operatori della stanza possono aggiunge i file ad una playlist sincronizzata per garantire che tutti i partecipanti stiano guardando la stessa cosa. Configura le cartelle multimediali alla voce 'Miscellanea'.",
+}
From 6692243e1efb3b77568b597f1bfdc4bf21eaf332 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 17:54:01 +0000
Subject: [PATCH 09/80] Fix error when server run without
--max-chat-message-length being set (#177)
---
syncplay/client.py | 12 ++++++++----
syncplay/server.py | 4 ++--
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/syncplay/client.py b/syncplay/client.py
index 8a1b3cd..e330843 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -560,10 +560,14 @@ class SyncplayClient(object):
elif not self.serverFeatures["sharedPlaylists"]:
self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error"))
# TODO: Have messages for all unsupported & disabled features
- constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
- constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
- constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
- constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
+ if self.serverFeatures["maxChatMessageLength"] is not None:
+ constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
+ if self.serverFeatures["maxUsernameLength"] is not None:
+ constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
+ if self.serverFeatures["maxRoomNameLength"] is not None:
+ constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
+ if self.serverFeatures["maxFilenameLength"] is not None:
+ constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH),
u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER),
u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER),
diff --git a/syncplay/server.py b/syncplay/server.py
index 96904ee..3e3967a 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength
+ self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
@@ -548,4 +548,4 @@ class ConfigurationGetter(object):
self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument"))
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-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH))
From 6f12315c8ee9cf5648716ab290727c6b2b3fb022 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 17:54:01 +0000
Subject: [PATCH 10/80] Fix error when server run without
--max-chat-message-length being set (#177)
---
syncplay/client.py | 12 ++++++++----
syncplay/server.py | 4 ++--
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/syncplay/client.py b/syncplay/client.py
index 8a1b3cd..e330843 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -560,10 +560,14 @@ class SyncplayClient(object):
elif not self.serverFeatures["sharedPlaylists"]:
self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error"))
# TODO: Have messages for all unsupported & disabled features
- constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
- constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
- constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
- constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
+ if self.serverFeatures["maxChatMessageLength"] is not None:
+ constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
+ if self.serverFeatures["maxUsernameLength"] is not None:
+ constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
+ if self.serverFeatures["maxRoomNameLength"] is not None:
+ constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
+ if self.serverFeatures["maxFilenameLength"] is not None:
+ constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH),
u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER),
u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER),
diff --git a/syncplay/server.py b/syncplay/server.py
index 96904ee..21a09ad 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength
+ self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
@@ -548,4 +548,4 @@ class ConfigurationGetter(object):
self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument"))
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-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH))
From 480aa6ba1ec0dd8ad6f53a2b8e9f82e9dbcecdc6 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 18:06:08 +0000
Subject: [PATCH 11/80] Fix error when server run without
--max-chat-message-length (#177) Part 2
---
syncplay/server.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/server.py b/syncplay/server.py
index 3e3967a..21a09ad 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
+ self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
From 693a3d9ff88cdefa58a5333d8af03e047620d134 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 17:54:01 +0000
Subject: [PATCH 12/80] Fix error when server run without
--max-chat-message-length being set (#177)
---
syncplay/client.py | 12 ++++++++----
syncplay/server.py | 4 ++--
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/syncplay/client.py b/syncplay/client.py
index 8a1b3cd..e330843 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -560,10 +560,14 @@ class SyncplayClient(object):
elif not self.serverFeatures["sharedPlaylists"]:
self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error"))
# TODO: Have messages for all unsupported & disabled features
- constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
- constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
- constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
- constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
+ if self.serverFeatures["maxChatMessageLength"] is not None:
+ constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
+ if self.serverFeatures["maxUsernameLength"] is not None:
+ constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
+ if self.serverFeatures["maxRoomNameLength"] is not None:
+ constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
+ if self.serverFeatures["maxFilenameLength"] is not None:
+ constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH),
u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER),
u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER),
diff --git a/syncplay/server.py b/syncplay/server.py
index 96904ee..3e3967a 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength
+ self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
@@ -548,4 +548,4 @@ class ConfigurationGetter(object):
self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument"))
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-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH))
From 83055ce4843e7fddb1f239ae658f846dc2ca99f5 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 18:06:08 +0000
Subject: [PATCH 13/80] Fix error when server run without
--max-chat-message-length (#177) Part 2
---
syncplay/server.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/server.py b/syncplay/server.py
index 3e3967a..21a09ad 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
+ self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
From 14955c397d1a487f3f362b13608b1432319552ac Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 17:54:01 +0000
Subject: [PATCH 14/80] Fix error when server run without
--max-chat-message-length being set (#177)
---
syncplay/client.py | 12 ++++++++----
syncplay/server.py | 4 ++--
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/syncplay/client.py b/syncplay/client.py
index 8a1b3cd..e330843 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -560,10 +560,14 @@ class SyncplayClient(object):
elif not self.serverFeatures["sharedPlaylists"]:
self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error"))
# TODO: Have messages for all unsupported & disabled features
- constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
- constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
- constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
- constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
+ if self.serverFeatures["maxChatMessageLength"] is not None:
+ constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"]
+ if self.serverFeatures["maxUsernameLength"] is not None:
+ constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"]
+ if self.serverFeatures["maxRoomNameLength"] is not None:
+ constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"]
+ if self.serverFeatures["maxFilenameLength"] is not None:
+ constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"]
constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH),
u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER),
u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER),
diff --git a/syncplay/server.py b/syncplay/server.py
index 96904ee..3e3967a 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength
+ self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
@@ -548,4 +548,4 @@ class ConfigurationGetter(object):
self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument"))
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-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH))
From 9c5308869f29c0c65771cbad05d9033290cca82e Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 10 Feb 2018 18:06:08 +0000
Subject: [PATCH 15/80] Fix error when server run without
--max-chat-message-length (#177) Part 2
---
syncplay/server.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/server.py b/syncplay/server.py
index 3e3967a..21a09ad 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -27,7 +27,7 @@ class SyncFactory(Factory):
self._motdFilePath = motdFilePath
self.disableReady = disableReady
self.disableChat = disableChat
- self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
+ self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH
if not isolateRooms:
self._roomManager = RoomManager()
else:
From a88f5d6228cb513448c0c8f8077b95187c69d3f9 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Tue, 13 Feb 2018 13:31:17 +0100
Subject: [PATCH 16/80] Italian translation reviewed and added
syncplay-mediasearchdirectories-label
---
syncplay/messages_it.py | 240 ++++++++++++++++++++--------------------
syncplay/ui/gui.py | 2 +-
2 files changed, 121 insertions(+), 121 deletions(-)
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 038431c..226d75d 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -17,10 +17,10 @@ it = {
"connected-successful-notification" : u"Connessione al server effettuata con successo",
"retrying-notification" : u"%s, Nuovo tentativo in %d secondi...", # Seconds
- "rewind-notification" : u"Riavvolgendo a causa della differenza temporale con {}", # User
+ "rewind-notification" : u"Riavvolgo a causa della differenza temporale con {}", # User
"fastforward-notification" : u"Avanzamento rapido a causa della differenza temporale con {}", # User
- "slowdown-notification" : u"Rallentando a causa della differenza temporale con {}", # User
- "revert-notification" : u"Ritornando alla velocità di riproduzione normale",
+ "slowdown-notification" : u"Rallento a causa della differenza temporale con {}", # User
+ "revert-notification" : u"Velocità di riproduzione normale ripristinata",
"pause-notification" : u"{} ha messo in pausa", # User
"unpause-notification" : u"{} ha ripreso la riproduzione", # User
@@ -49,7 +49,7 @@ it = {
"created-controlled-room-notification" : u"Stanza gestita '{}' creata con password '{}'. Per favore salva queste informazioni per una consultazione futura!", # RoomName, operatorPassword
"file-different-notification" : u"Il file che stai riproducendo sembra essere diverso da quello di {}", # User
- "file-differences-notification" : u"Il tuo file possiede le seguenti differenze: {}", # Differences
+ "file-differences-notification" : u"Il tuo file mostra le seguenti differenze: {}", # Differences
"room-file-differences" : u"Differenze nel tuo file: {}", # File differences (filename, size, and/or duration)
"file-difference-filename" : u"nome",
"file-difference-filesize" : u"dimensione",
@@ -68,9 +68,9 @@ it = {
"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
"syncplay-uptodate-notification" : u"Syncplay è aggiornato",
- "syncplay-updateavailable-notification" : u"Nuova versione di Syncplay disponibile. Vuoi visitare la pagina delle release?",
+ "syncplay-updateavailable-notification" : u"Una nuova versione di Syncplay è disponibile. Vuoi visitare la pagina delle release?",
- "mplayer-file-required-notification" : u"Utilizzare Syncplay con mplayer richiede la selezione del file all'avvio",
+ "mplayer-file-required-notification" : u"Utilizzare Syncplay con mplayer di selezionare il file all'avvio",
"mplayer-file-required-notification/example" : u"Esempio di utilizzo: syncplay [opzioni] [url|percorso/]nomefile",
"mplayer2-required" : u"Syncplay non è compatibile con MPlayer 1.x, per favore utilizza mplayer2 or mpv",
@@ -81,7 +81,7 @@ it = {
"commandlist-notification/undo" : u"\tu - annulla l'ultima ricerca",
"commandlist-notification/pause" : u"\tp - attiva o disattiva la pausa",
"commandlist-notification/seek" : u"\t[s][+-]tempo - salta all'istante di tempo dato, se + o - non è specificato si considera il tempo assoluto in secondi o min:sec",
- "commandlist-notification/help" : u"\th - questo help",
+ "commandlist-notification/help" : u"\th - mostra questo help",
"commandlist-notification/toggle" : u"\tt - attiva o disattiva lo stato 'Pronto'",
"commandlist-notification/create" : u"\tc [nome] - crea una stanza gestita usando il nome della stanza attuale",
"commandlist-notification/auth" : u"\ta [password] - autentica come gestore della stanza, utilizzando la password del gestore",
@@ -89,7 +89,7 @@ it = {
"syncplay-version-notification" : u"Versione di Syncplay: {}", # syncplay.version
"more-info-notification" : u"Maggiori informazioni a: {}", # projectURL
- "gui-data-cleared-notification" : u"Syncplay ha resettato i dati, usati dalla GUI, relativi ai percorsi ed allo stato delle finestre.",
+ "gui-data-cleared-notification" : u"Syncplay ha resettato i dati dell'interfaccia relativi ai percorsi e allo stato delle finestre.",
"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?",
@@ -106,25 +106,25 @@ it = {
"missing-arguments-error" : u"Alcuni argomenti obbligatori non sono stati trovati. Fai riferimento a --help",
"server-timeout-error" : u"Connessione col server scaduta",
"mpc-slave-error" : u"Non è possibile avviare MPC in modalità slave!",
- "mpc-version-insufficient-error" : u"Versione di MPC non sufficiente, per favore usa `mpc-hc` >= `{}`",
- "mpc-be-version-insufficient-error" : u"Versione di MPC non sufficiente, per favore usa `mpc-be` >= `{}`",
+ "mpc-version-insufficient-error" : u"La tua versione di MPC è troppo vecchia, per favore usa `mpc-hc` >= `{}`",
+ "mpc-be-version-insufficient-error" : u"La tua versione di MPC è troppo vecchia, per favore usa `mpc-be` >= `{}`",
"mpv-version-error" : u"Syncplay non è compatibile con questa versione di mpv. Per favore usa un'altra versione di mpv (es. Git HEAD).",
"player-file-open-error" : u"Il player non è riuscito ad aprire il file",
"player-path-error" : u"Il path del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2",
- "hostname-empty-error" : u"Hostname non può essere vuoto",
- "empty-error" : u"{} non può esssere vuoto", # Configuration
+ "hostname-empty-error" : u"Il campo hostname non può essere vuoto",
+ "empty-error" : u"Il campo {} non può esssere vuoto", # Configuration
"media-player-error": u"Errore media player: \"{}\"", # Error line
- "unable-import-gui-error": u"Non è possibile importare le librerie GUI. Hai bisogno di PySide per poter utilizzare la GUI.",
+ "unable-import-gui-error": u"Non è possibile importare le librerie di interfaccia grafica. Hai bisogno di PySide per poter utilizzare l'interfaccia grafica.",
"arguments-missing-error" : u"Alcuni argomenti obbligatori non sono stati trovati. Fai riferimento a --help",
"unable-to-start-client-error" : u"Impossibile avviare il client",
- "player-path-config-error": u"Il path del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2.",
+ "player-path-config-error": u"Il percorso del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2.",
"no-file-path-config-error" :u"Deve essere selezionato un file prima di avviare il player",
- "no-hostname-config-error": u"Hostname non può essere vuoto",
+ "no-hostname-config-error": u"Il campo hostname non può essere vuoto",
"invalid-port-config-error" : u"La porta deve essere valida",
- "empty-value-config-error" : u"{} non può essere vuoto", # Config option
+ "empty-value-config-error" : u"Il campo {} non può essere vuoto", # Config option
"not-json-error" : u"Non è una stringa con codifica JSON\n",
"hello-arguments-error" : u"Argomenti Hello non sufficienti\n",
@@ -140,37 +140,37 @@ it = {
"feature-managedRooms" : u"stanze gestite", # used for not-supported-by-server-error
"not-supported-by-server-error" : u"La feature {} non è supportata da questo server..", #feature
- "shared-playlists-not-supported-by-server-error" : u"La feature playlist condivise potrebbe non essere supportata dal server. Si necessita di un server avente Syncplay {}+ per assicurarsi che essa funzioni correttamente, tuttavia il server sta utilizzando Syncplay {}.", #minVersion, serverVersion
- "shared-playlists-disabled-by-server-error" : u"La feature playlist condivise è stata disabilitata nella configurazione del server. Per utilizzarla, dovrai collegarti ad un altro server.",
+ "shared-playlists-not-supported-by-server-error" : u"Le playlist condivise potrebbero non essere supportata dal server. È necessario un server con Syncplay {}+ per assicurarsi che funzionino correttamente, tuttavia il server sta utilizzando Syncplay {}.", #minVersion, serverVersion
+ "shared-playlists-disabled-by-server-error" : u"Le playlist condivise sono state disabilitate nella configurazione del server. Per utilizzarle, dovrai collegarti a un altro server.",
"invalid-seek-value" : u"Valore di ricerca non valido",
"invalid-offset-value" : u"Valore di offset non valido",
- "switch-file-not-found-error" : u"Impossibile passare al file '{0}'. Syncplay analizza le cartelle multimediali specificate.", # File not found
- "folder-search-timeout-error" : u"La ricerca nelle cartelle multimediali è stata interrotta siccome l'analisi di '{}' sta impiegando troppo tempo. Ciò accade se si aggiunge una cartella con troppe sottocartelle nella lista di ricerca. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali nella barra dei menù e rimuovi questa cartella o sostituiscila con una sottocartella appropriata. Se la cartella è idonea, è possibile riabilitarla selezionando File->Imposta cartelle multimediali e premendo 'OK'.", #Folder
- "folder-search-first-file-timeout-error" : u"La ricerca dei media in '{}' è stata interrotta siccome l'accesso alla cartella sta impiegando troppo tempo. Ciò accade se essa è un disco di rete oppure se hai impostato il blocco della rotazione del disco rigido dopo un certo periodo di inattività. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali, quindi rimuovi la cartella oppure risolvi il problema (es. cambiando le impostazioni del risparmio energetico).", #Folder
- "added-file-not-in-media-directory-error" : u"Hai selezionato un file in '{}'. Essa non è una cartella multimediale conosciuta. Puoi aggiungerla come cartella multimediale selezionando File->Imposta cartelle multimediali nella barra dei menù.", #Folder
- "no-media-directories-error" : u"Nessuna cartella multimediale è stata configurata. Per permette il corretto funzionamento delle feature playlist condivise e selezione automatica dei file, naviga in File->Imposta cartelle multimediali e specifica dove Syncplay debba ricercare i file multimediali.",
- "cannot-find-directory-error" : u"Impossibile trovare la cartella multimediale '{}'. Per aggiornare la lista delle cartelle multimediali seleziona File->Imposta cartelle multimediali dalla barra dei menù e specifica dove Syncplay debba ricercare i file multimediali.",
+ "switch-file-not-found-error" : u"Impossibile selezionare il file '{0}'. Syncplay osserva solo le cartelle multimediali specificate.", # File not found
+ "folder-search-timeout-error" : u"La ricerca nelle cartelle multimediali è stata interrotta perché l'analisi di '{}' sta impiegando troppo tempo. Ciò accade se si aggiunge nella lista di ricerca una cartella con troppe sottocartelle. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali nella barra dei menù e rimuovi questa cartella, o sostituiscila con una sottocartella appropriata. Se la cartella è idonea, è possibile riabilitarla selezionando File->Imposta cartelle multimediali e premendo 'OK'.", #Folder
+ "folder-search-first-file-timeout-error" : u"La ricerca dei media in '{}' è stata interrotta perché l'accesso alla cartella sta impiegando troppo tempo. Ciò accade se questa si trova in un disco di rete oppure se hai impostato il blocco della rotazione del disco rigido dopo un certo periodo di inattività. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali, quindi rimuovi la cartella oppure risolvi il problema (es. cambiando le impostazioni di risparmio energetico).", #Folder
+ "added-file-not-in-media-directory-error" : u"Hai selezionato un file in '{}', che non è impostata come cartella multimediale. Puoi aggiungerla come cartella multimediale selezionando File->Imposta cartelle multimediali nella barra dei menù.", #Folder
+ "no-media-directories-error" : u"Nessuna cartella multimediale è stata configurata. Per permettere il corretto funzionamento delle playlist condivise e la selezione automatica dei file, naviga in File->Imposta cartelle multimediali e specifica dove Syncplay deve ricercare i file multimediali.",
+ "cannot-find-directory-error" : u"Impossibile trovare la cartella multimediale '{}'. Per aggiornare la lista delle cartelle multimediali seleziona File->Imposta cartelle multimediali dalla barra dei menù e specifica dove Syncplay deve ricercare i file multimediali.",
- "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita http://www.syncplay.pl/ col tuo browser.",
+ "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita http://www.syncplay.pl/ con il tuo browser.",
# Client arguments
- "argument-description" : u'Soluzione per sincronizzare la riproduzione di istanze di media player multiple attraverso la rete.',
+ "argument-description" : u'Programma per sincronizzare la riproduzione di media player multipli attraverso la rete.',
"argument-epilog" : u'Se non è specificata alcuna opzione saranno utilizzati i valori _config',
- "nogui-argument" : u'non mostrare la GUI',
+ "nogui-argument" : u'non mostrare l\'interfaccia grafica',
"host-argument" : u'indirizzo del server',
"name-argument" : u'username desiderato',
"debug-argument" : u'modalità debug',
- "force-gui-prompt-argument" : u'mostra il prompt di configurazione',
- "no-store-argument" : u'non salva i valori in .syncplay',
+ "force-gui-prompt-argument" : u'mostra la finestra di configurazione',
+ "no-store-argument" : u'non salvare i valori in .syncplay',
"room-argument" : u'stanza di default',
"password-argument" : u'password del server',
"player-path-argument" : u'percorso dell\'eseguibile del tuo player',
"file-argument" : u'file da riprodurre',
- "args-argument" : u'opzioni del player, se hai bisogno di passare opzioni che iniziano con - anteponile con un singolo \'--\'',
- "clear-gui-data-argument" : u'resetta il percorso e i dati inerenti allo stato della GUI salvati come QSettings',
- "language-argument" : u'lingua per i messaggi di Syncplay (de/en/ru)',
+ "args-argument" : u'opzioni del player, se hai bisogno di utilizzare opzioni che iniziano con - anteponi un singolo \'--\'',
+ "clear-gui-data-argument" : u'resetta il percorso e i dati impostati tramite interfaccia grafica e salvati come QSettings',
+ "language-argument" : u'lingua per i messaggi di Syncplay (de/en/ru/it)',
"version-argument" : u'mostra la tua versione',
"version-message" : u"Stai usando la versione di Syncplay {} ({})",
@@ -187,48 +187,48 @@ it = {
"media-setting-title" : u"Impostazioni del media player",
"executable-path-label" : u"Percorso del media player:",
"media-path-label" : u"Percorso del video (opzionale):",
- "player-arguments-label" : u"Argomenti del player (se necessari):",
+ "player-arguments-label" : u"Opzioni del player (se necessarie):",
"browse-label" : u"Sfoglia",
"update-server-list-label" : u"Aggiorna lista",
"more-title" : u"Mostra altre impostazioni",
"never-rewind-value" : u"Mai",
- "seconds-suffix" : u" secs",
+ "seconds-suffix" : u" sec",
"privacy-sendraw-option" : u"Invio semplice",
- "privacy-sendhashed-option" : u"Invio criptato",
+ "privacy-sendhashed-option" : u"Invio cifrato",
"privacy-dontsend-option" : u"Non inviare",
"filename-privacy-label" : u"Nome del file:",
"filesize-privacy-label" : u"Dimensione del file:",
"checkforupdatesautomatically-label" : u"Controlla automaticamente gli aggiornamenti di Syncplay",
- "slowondesync-label" : u"Rallenta in caso di desync minimo (non supportato su MPC-HC/BE)",
- "rewindondesync-label" : u"Riavvolgi in caso di desync grave (consigliato)",
+ "slowondesync-label" : u"Rallenta in caso di sfasamento minimo (non supportato su MPC-HC/BE)",
+ "rewindondesync-label" : u"Riavvolgi in caso di grande sfasamento (consigliato)",
"fastforwardondesync-label" : u"Avanzamento rapido in caso di ritardo (consigliato)",
- "fastforwardondesync-label" : u"Avanzamento rapido in caso di lag (consigliato)",
"dontslowdownwithme-label" : u"Non rallentare o riavvolgere gli altri utenti (sperimentale)",
"pausing-title" : u"Pausa",
- "pauseonleave-label" : u"In pausa quando gli utenti abbandonano (es. disconnessione)",
+ "pauseonleave-label" : u"Metti in pausa quando gli altri utenti abbandonano (es. disconnessione)",
"readiness-title" : u"Stato iniziale di 'pronto'",
"readyatstart-label" : u"Impostami sempre su 'pronto a guardare'",
- "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay ad ogni apertura", # (Inverted)
+ "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay a ogni apertura", # (Inverted)
"showosd-label" : u"Abilita i messaggi OSD",
- "showosdwarnings-label" : u"Includi gli avvisi (es. file differenti, utenti non pronti)",
- "showsameroomosd-label" : u"Includi gli eventi della tua stanza",
- "shownoncontrollerosd-label" : u"Includi gli eventi dei non gestori nelle stanze gestite",
- "showdifferentroomosd-label" : u"Includi gli eventi di altre stanze",
- "showslowdownosd-label" : u"Includi le notifiche di rallentamento / riavvolgimento",
+ "showosdwarnings-label" : u"Mostra gli avvisi (es. file differenti, utenti non pronti)",
+ "showsameroomosd-label" : u"Mostra gli eventi della tua stanza",
+ "shownoncontrollerosd-label" : u"Mostra gli eventi dei non gestori nelle stanze gestite",
+ "showdifferentroomosd-label" : u"Mostra gli eventi di altre stanze",
+ "showslowdownosd-label" : u"Mostra le notifiche di rallentamento / riavvolgimento",
"language-label" : u"Lingua:",
"automatic-language" : u"Predefinita ({})", # Default language
"showdurationnotification-label" : u"Avvisa in caso di mancata corrispondenza della durata del file",
"basics-label" : u"Generali",
"readiness-label" : u"Play/Pausa",
- "misc-label" : u"Miscellanea",
+ "misc-label" : u"Varie",
"core-behaviour-title" : u"Comportamento principale della stanza",
- "syncplay-internals-title" : u"Comportamento Syncplay",
- "syncplay-mediasearchdirectories-title" : u"Cartelle contenenti i file multimediali (un solo percorso per riga)",
- "sync-label" : u"Sync", # don't have better options as the label won't fit in the panel.
- "sync-otherslagging-title" : u"Se gli altri partecipanti laggano...",
- "sync-youlaggging-title" : u"Se stai laggando...",
+ "syncplay-internals-title" : u"Funzionamento di Syncplay",
+ "syncplay-mediasearchdirectories-title" : u"Cartelle contenenti i file multimediali",
+ "syncplay-mediasearchdirectories-label" : u"Cartelle contenenti i file multimediali (un solo percorso per riga)",
+ "sync-label" : u"Sincronia", # don't have better options as the label won't fit in the panel.
+ "sync-otherslagging-title" : u"Se gli altri partecipanti non sono sincronizzati...",
+ "sync-youlaggging-title" : u"Se tu sei non sei sincronizzato...",
"messages-label" : u"Messaggi",
"messages-osd-title" : u"Impostazioni On-screen Display",
"messages-other-title" : u"Altre impostazioni dello schermo",
@@ -240,10 +240,10 @@ it = {
"unpause-ifothersready-option" : u"Riprendi la riproduzione se eri già pronto o se gli altri partecipanti sono pronti (default)",
"unpause-ifminusersready-option" : u"Riprendi la riproduzione se eri già pronto o se un numero minimo di partecipanti è pronto",
"unpause-always" : u"Riprendi sempre la riproduzione",
- "syncplay-trusteddomains-title": u"Domini Trusted (per servizi di streaming e contenuti in rete)",
+ "syncplay-trusteddomains-title": u"Domini fidati (per streaming e i contenuti in rete)",
"chat-title" : u"Inserimento messaggi di chat",
- "chatinputenabled-label" : u"Abilita la chat tramite mpv",
+ "chatinputenabled-label" : u"Abilita la chat su mpv",
"chatdirectinput-label" : u"Abilita la chat istantanea (evita di dover premere Invio per chattare)",
"chatinputfont-label" : u"Font dell'input della chat",
"chatfont-label" : u"Imposta font",
@@ -254,14 +254,14 @@ it = {
"chat-bottom-option" : u"In basso",
"chatoutputheader-label" : u"Output messaggi di chat",
"chatoutputfont-label": u"Font dell'output della chat",
- "chatoutputenabled-label": u"Abilita l'output della chat nel media player (al momento supporta solo mpv)",
- "chatoutputposition-label": u"Modalità output",
+ "chatoutputenabled-label": u"Abilita l'output della chat nel media player (al momento solo mpv è supportato)",
+ "chatoutputposition-label": u"Modalità di output",
"chat-chatroom-option": u"Stile chatroom",
"chat-scrolling-option": u"A scorrimento",
"mpv-key-tab-hint": u"[TAB] to toggle access to alphabet row key shortcuts.", # TODO needs to clarify this
"mpv-key-hint": u"[Invio] per inviare un messaggio. [Esc] per uscire dalla modalità chat.",
- "alphakey-mode-warning-first-line": u"Puoi utilizzare temporaneamente i vecchi bindings di mpv con i tasti a-z.",
+ "alphakey-mode-warning-first-line": u"Puoi utilizzare temporaneamente i vecchi comandi di mpv con i tasti a-z.",
"alphakey-mode-warning-second-line": u"Premi [TAB] per ritornare alla modalità chat di Syncplay.",
"help-label" : u"Aiuto",
@@ -269,12 +269,12 @@ it = {
"run-label" : u"Avvia Syncplay",
"storeandrun-label" : u"Salva la configurazione e avvia Syncplay",
- "contact-label" : u"Sentiti libero di inviare una 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 criptati, 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 http://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 {}",
- "seektime-menu-label" : u"Vai a..",
- "undoseek-menu-label" : u"Annulla vai a..",
+ "seektime-menu-label" : u"Vai a...",
+ "undoseek-menu-label" : u"Annulla vai a...",
"play-menu-label" : u"Play",
"pause-menu-label" : u"Pausa",
"playbackbuttons-menu-label" : u"Mostra i controlli della riproduzione",
@@ -291,13 +291,13 @@ it = {
"duration-heading-label" : u"Durata",
"filename-heading-label" : u"Nome del file",
"notifications-heading-label" : u"Notifiche",
- "userlist-heading-label" : u"Lista di chi sta riproducendo cosa",
+ "userlist-heading-label" : u"Lista degli utenti nella stanza",
"browseformedia-label" : u"Seleziona i file multimediali",
"file-menu-label" : u"&File", # & precedes shortcut key
"openmedia-menu-label" : u"&Apri file multimediali",
- "openstreamurl-menu-label" : u"Apri &media stream URL",
+ "openstreamurl-menu-label" : u"Apri indirizzo di &rete",
"setmediadirectories-menu-label" : u"Imposta &cartelle multimediali",
"exit-menu-label" : u"&Esci",
"advanced-menu-label" : u"&Avanzate",
@@ -305,32 +305,32 @@ it = {
"setoffset-menu-label" : u"Imposta &offset",
"createcontrolledroom-menu-label" : u"&Crea stanza gestita",
"identifyascontroller-menu-label" : u"&Identificati come operatore della stanza",
- "settrusteddomains-menu-label" : u"Imposta &domini Trusted",
- "addtrusteddomain-menu-label" : u"Aggiungi {} come dominio Trusted", # Domain
+ "settrusteddomains-menu-label" : u"Imposta &domini fidati",
+ "addtrusteddomain-menu-label" : u"Aggiungi {} come dominio fidato", # Domain
"playback-menu-label" : u"&Riproduzione",
"help-menu-label" : u"&Aiuto",
"userguide-menu-label" : u"Apri guida &utente",
- "update-menu-label" : u"Controlla nuovi &aggiornamenti",
+ "update-menu-label" : u"Controlla la presenza di &aggiornamenti",
#About dialog
"about-menu-label": u"&Informazioni su Syncplay",
"about-dialog-title": u"Informazioni su Syncplay",
- "about-dialog-release": u"Versione {} release {} su {}",
- "about-dialog-license-text" : u"Licenza Apache License, Version 2.0",
+ "about-dialog-release": u"Versione {} release {} con {}",
+ "about-dialog-license-text" : u"Rilasciato sotto Apache License, Version 2.0",
"about-dialog-license-button": u"Licenza",
"about-dialog-dependencies": u"Dipendenze",
"setoffset-msgbox-label" : u"Imposta offset",
"offsetinfo-msgbox-label" : u"Offset (vedi http://syncplay.pl/guide/ per istruzioni):",
- "promptforstreamurl-msgbox-label" : u"Apri media stream URL",
- "promptforstreamurlinfo-msgbox-label" : u"Stream URL",
+ "promptforstreamurl-msgbox-label" : u"Apri URL",
+ "promptforstreamurlinfo-msgbox-label" : u"Indirizzo di rete",
"addfolder-label" : u"Aggiungi cartella",
- "adduris-msgbox-label" : u"Aggiungi gli URL alla playlist (uno per riga)",
+ "adduris-msgbox-label" : u"Aggiungi gli indirizzi alla playlist (uno per riga)",
"editplaylist-msgbox-label" : u"Imposta playlist (una per riga)",
"trusteddomains-msgbox-label" : u"Domini a cui è lecito passare automaticamente (uno per riga)",
@@ -346,47 +346,47 @@ it = {
# Tooltips
- "host-tooltip" : u"Hostname o indirizzo IP a cui collegarsi e, se necessaria, includere la porta (es. syncplay.pl:8999). La sincronizzazione avviene solo con gli utenti sullo stesso server/porta.",
- "name-tooltip" : u"Il nickname con cui sarai riconosciuto. Nessuna registrazione necessaria, cosi potrai sempre cambiarlo. Se lasciato vuoto, viene scelto un nome casuale.",
+ "host-tooltip" : u"Hostname o indirizzo IP a cui collegarsi e, se necessario, includere la porta (es. syncplay.pl:8999). La sincronizzazione avviene solo con gli utenti collegati allo stesso server/porta.",
+ "name-tooltip" : u"Il nome utente con cui sarai riconosciuto. Nessuna registrazione necessaria, cosi potrai sempre cambiarlo. Se lasciato vuoto, viene scelto un nome casuale.",
"password-tooltip" : u"La password è necessaria solo in caso di connessione a server privati.",
"room-tooltip" : u"La stanza in cui entrare dopo la connessione. Può assumere qualsiasi nome, ma ricorda che sarai sincronizzato solo con gli utenti nella stessa stanza.",
"executable-path-tooltip" : u"Percorso del media player desiderato (scegliere tra mpv, VLC, MPC-HC/BE or mplayer2).",
"media-path-tooltip" : u"Percorso del video o stream da aprire. Necessario per mplayer2.",
"player-arguments-tooltip" : u"Argomenti da linea di comando aggiuntivi da passare al media player scelto.",
- "mediasearcdirectories-arguments-tooltip" : u"Cartelle dove Syncplay ricercherà i file multimediali, es. quando usi la feature click to switch. Syncplay ricercherà ricorsivamente nelle sottocartelle.",
+ "mediasearcdirectories-arguments-tooltip" : u"Cartelle dove Syncplay cercherà i file multimediali, es. quando usi la funzione click to switch. Syncplay cercherà anche nelle sottocartelle.",
"more-tooltip" : u"Mostra le impostazioni usate meno frequentemente.",
- "filename-privacy-tooltip" : u"Modalità privacy per inviare il nome del file attualmente in riproduzione al server.",
- "filesize-privacy-tooltip" : u"Modalità privacy per inviare la dimensione del file attualmente in riproduzione al server.",
- "privacy-sendraw-tooltip" : u"Invia questa informazione senza offuscamento. Questa è l'impostazione predefinita per la maggior parte delle funzionalità.",
- "privacy-sendhashed-tooltip" : u"Invia una versione criptata dell'informazione, rendendola meno visibile agli altri client.",
- "privacy-dontsend-tooltip" : u"Non inviare questa informazione al server. Ciò garantisce massima privacy.",
+ "filename-privacy-tooltip" : u"Modalità di invio al server del nome del file attualmente in riproduzione.",
+ "filesize-privacy-tooltip" : u"Modalità di invio al server della dimensione del file attualmente in riproduzione.",
+ "privacy-sendraw-tooltip" : u"Invia questa informazione in chiaro. Questa è l'impostazione predefinita per la maggior parte delle funzionalità.",
+ "privacy-sendhashed-tooltip" : u"Invia una versione cifrata dell'informazione, rendendola meno visibile agli altri client.",
+ "privacy-dontsend-tooltip" : u"Non inviare questa informazione al server. Questo garantisce massima privacy.",
"checkforupdatesautomatically-tooltip" : u"Controlla regolarmente la presenza di nuove versioni di Syncplay.",
- "slowondesync-tooltip" : u"Riduce temporaneamente il rateo di riproduzione quando c'è bisogno di sincronizzarti con gli altri spettatori. Non supportato su MPC-HC/BE.",
- "dontslowdownwithme-tooltip" : u"Gli altri utenti non vengono rallentati o riavvolti se stai laggando. Utile per i gestori della stanza.",
+ "slowondesync-tooltip" : u"Riduce temporaneamente la velocità di riproduzione quando c'è bisogno di sincronizzarti con gli altri utenti. Non supportato su MPC-HC/BE.",
+ "dontslowdownwithme-tooltip" : u"Gli altri utenti non vengono rallentati se non sei sincronizzato. Utile per i gestori della stanza.",
"pauseonleave-tooltip" : u"Mette in pausa la riproduzione se vieni disconnesso o se qualcuno lascia la stanza.",
- "readyatstart-tooltip" : u"Imposta il tuo stato su 'pronto' all'avvio (in caso contrario, sarai su 'non pronto' fintanto che non cambierai il tuo stato)",
- "forceguiprompt-tooltip" : u"Il dialogo di configurazione non viene mostrato quando apri un file con Syncplay.", # (Inverted)
- "nostore-tooltip" : u"Avvia Syncplay con la configurazione scelta, ma non salva permanentemente le impostazioni.", # (Inverted)
+ "readyatstart-tooltip" : u"Imposta il tuo stato su 'pronto' all'avvio (in caso contrario, sarai su 'non pronto' finché non cambierai il tuo stato)",
+ "forceguiprompt-tooltip" : u"La finestra di configurazione non viene mostrata quando apri Syncplay.",
+ "nostore-tooltip" : u"Avvia Syncplay con la configurazione scelta, ma non salva le impostazioni.",
"rewindondesync-tooltip" : u"Torna indietro quando necessario per ristabilire la sincronizzazione. Disabilitare quest'opzione può causare gravi problemi di sincronizzazione!",
"fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (o la tua posizione supposta se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).",
"showosd-tooltip" : u"Invia i messaggi di Syncplay all'OSD del media player.",
- "showosdwarnings-tooltip" : u"Mostra gli avvisi in caso di riproduzione di: un file differente, unico utente nella stanza, utenti non pronti, etc.",
+ "showosdwarnings-tooltip" : u"Mostra gli avvisi in caso di riproduzione di un file differente, se sei l'unico utente nella stanza, se ci sono utenti non pronti, ecc.",
"showsameroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui si trova l'utente.",
"shownoncontrollerosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi ai non operatori presenti nelle stanze gestite.",
- "showdifferentroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui l'utente non si trova.",
- "showslowdownosd-tooltip" : u"Mostra le notifiche di rallentamento / inversione in caso di differenza temporale.",
- "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file multiparte. Può risultare in falsi positivi.",
+ "showdifferentroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alle stanze in cui l'utente non si trova.",
+ "showslowdownosd-tooltip" : u"Mostra le notifiche di rallentamento / riavvolgimento in caso di differenza temporale.",
+ "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file multiparte. Può causare dei falsi positivi.",
"language-tooltip" : u"Lingua da utilizzare in Syncplay.",
- "unpause-always-tooltip" : u"Se riprendi la riproduzione il tuo stato cambia in 'pronto' e la pausa viene interrotta, piuttosto che impostarti solo su pronto.",
- "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', verrai impostato su pronto - riprendi la riproduzione ancora una volta per uscire dalla pausa.",
- "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto' la pausa verrà interrotta solo se gli altri sono pronti.",
- "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', la pausa verrà interrotta solo se un numero minimo di utenti è 'pronto'.",
+ "unpause-always-tooltip" : u"Se riprendi la riproduzione, il tuo stato cambia in 'pronto' e la riproduzione viene avviata, piuttosto che impostarti solo su pronto.",
+ "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', verrai impostato su pronto - ripeti il comando ancora una volta per avviare la riproduzione.",
+ "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto' la riproduzione verrà avviata solo se gli altri sono pronti.",
+ "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', la riproduzione verrà avviata solo se un numero minimo di utenti è 'pronto'.",
"trusteddomains-arguments-tooltip" : u"Domini verso cui è possibile collegarsi automaticamente quando le playlist condivise sono abilitate.",
- "chatinputenabled-tooltip" : u"Abilita l'input della chat in mpv (premi Invio per chattare, per inviare ed escape per cancellare)",
- "chatdirectinput-tooltip" : u"Evita di dover premere Invio per aprire l'input della chat in mpv. Premi TAB in mpv per disabilitare temporaneamente questa feature.",
+ "chatinputenabled-tooltip" : u"Abilita l'input della chat in mpv (premi Invio per chattare, per inviare ed Esc per cancellare)",
+ "chatdirectinput-tooltip" : u"Evita di dover premere Invio per aprire l'input della chat in mpv. Premi TAB in mpv per disabilitare temporaneamente questa funzione.",
"font-label-tooltip" : u"Font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.",
"set-input-font-tooltip" : u"Font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.",
"set-input-colour-tooltip" : u"Colore del font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.",
@@ -399,22 +399,22 @@ it = {
"set-output-font-tooltip": u"Font usato per mostrare i messaggi di chat.",
"chatoutputmode-tooltip": u"Come sono mostrati i messaggi di chat.",
"chatoutputmode-chatroom-tooltip": u"Mostra i nuovi messaggi di chat al di sotto di quelli precedenti.",
- "chatoutputmode-scrolling-tooltip": u"Scrolla il testo della chat da destra a sinistra.",
+ "chatoutputmode-scrolling-tooltip": u"Scorri il testo della chat da destra a sinistra.",
"help-tooltip" : u"Apri la guida utente su Syncplay.pl.",
- "reset-tooltip" : u"Resetta tutte le impostazioni.",
- "update-server-list-tooltip" : u"Si collega a syncplay.pl per aggiornare la lista dei server pubblici.",
+ "reset-tooltip" : u"Ripristina tutte le impostazioni.",
+ "update-server-list-tooltip" : u"Scarica la lista dei server pubblici da syncplay.pl.",
"joinroom-tooltip" : u"Abbandona la stanza attuale e entra in quella specificata.",
"seektime-msgbox-label" : u"Salta all'istante di tempo specificato (in secondi / min:sec). Usa +/- per una ricerca relativa.",
"ready-tooltip" : u"Indica quando sei pronto a guardare.",
- "autoplay-tooltip" : u"Riproduzione automatica quado il numero minimo di utenti è su 'pronto'.",
+ "autoplay-tooltip" : u"Riproduzione automatica quando il numero minimo di utenti è 'pronto'.",
"switch-to-file-tooltip" : u"Doppio click per passare a {}", # Filename
"sendmessage-tooltip" : u"Invia il messaggio alla stanza",
# In-userlist notes (GUI)
- "differentsize-note" : u"Dimensione diversa!",
- "differentsizeandduration-note" : u"Durata e dimensione diversi!",
+ "differentsize-note" : u"Dimensione file diversa!",
+ "differentsizeandduration-note" : u"Durata e dimensione file diversi!",
"differentduration-note" : u"Durata diversa!",
"nofile-note" : u"(Nessun file in riproduzione)",
@@ -425,55 +425,55 @@ it = {
"welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version
"client-connected-room-server-notification" : u"{0}({2}) connesso alla stanza '{1}'", # username, host, room
"client-left-server-notification" : u"{0} ha abbandonato il server", # name
- "no-salt-notification" : u"NOTA BENE: In futuro, per consentire il corretto funzionamento delle password generate da questo server (per le stanze gestite) quando viene riavviato, aggiungere da linea di comando il seguente argomento prima di eseguire Syncplay server: --salt {}", #Salt
+ "no-salt-notification" : u"NOTA BENE: In futuro, per consentire il corretto funzionamento delle password generate da questo server (per le stanze gestite), aggiungi da linea di comando il seguente argomento prima di avviare il server Syncplay: --salt {}", #Salt
# Server arguments
- "server-argument-description" : u'Soluzione per sincronizzare la riproduzione di istanze multiple di MPlayer e MPC-HC/BE attraverso la rete. Istanza del server',
+ "server-argument-description" : u'Programma per sincronizzare la riproduzione di media player multipli attraverso la rete. Modulo server.',
"server-argument-epilog" : u'Se non è specificata alcuna opzione saranno utilizzati i valori _config',
"server-port-argument" : u'Porta TCP del server',
"server-password-argument" : u'password del server',
- "server-isolate-room-argument" : u'le stanze devono essere isolate?',
- "server-salt-argument" : u"usare stringhe randomizzate per generare le password delle stanze gestite",
+ "server-isolate-room-argument" : u'Mantiene le stanze isolate',
+ "server-salt-argument" : u"usare stringhe casuali per generare le password delle stanze gestite",
"server-disable-ready-argument" : u"disabilita la funzionalità 'pronto'",
- "server-motd-argument": u"percorso del file da cui verrà letto il motd",
- "server-chat-argument" : u"disabiliare la chat?",
+ "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-messed-up-motd-unescaped-placeholders": u"Il Message of the Day ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).",
- "server-messed-up-motd-too-long": u"Il Message of the Day è troppo lungo - numero massimo di caratteri è {}, {} trovati.",
+ "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.",
# Server errors
"unknown-command-server-error" : u"Comando non riconosciuto {}", # message
- "not-json-server-error" : u"Non è una stringa in codifica json {}", # message
+ "not-json-server-error" : u"Non è una stringa in codifica JSON {}", # message
"not-known-server-error" : u"Devi essere riconosciuto dal server prima di poter inviare questo comando",
"client-drop-server-error" : u"Il client è caduto: {} -- {}", # host, error
- "password-required-server-error" : u"La password è necessaria",
+ "password-required-server-error" : u"È richiesta una password",
"wrong-password-server-error" : u"La password inserita è errata",
"hello-server-error" : u"Non ci sono abbastanza argomenti Hello",
# Playlists
- "playlist-selection-changed-notification" : u"{} ha cambiato la selezione della playlist", # Username
+ "playlist-selection-changed-notification" : u"{} ha cambiato il file selezionato nella playlist", # Username
"playlist-contents-changed-notification" : u"{} ha aggiornato la playlist", # Username
- "cannot-find-file-for-playlist-switch-error" : u"Impossibile trovare il file {} nelle cartelle multimediali per permettere il cambio di playlist!", # Filename
- "cannot-add-duplicate-error" : u"Impossibile aggiungere una seconda voce per '{}' alla playlist. Duplicati non ammessi.", #Filename
- "cannot-add-unsafe-path-error" : u"Impossibile caricare automaticamente {} perchè non è presente nei domini Trusted. Puoi passare all'inserimento manuale facendo doppio click sull'URL nella playlist, e aggiungerlo ai domini Trusted tramite File->Avanzate->Imposta domini Trusted. Cliccando col tasto destro del mouse su un URL puoi aggiungere il suo dominio come dominio Trusted tramite il menù contestuale.", # Filename
+ "cannot-find-file-for-playlist-switch-error" : u"Impossibile trovare il file {} nelle cartelle multimediali per permettere il cambio di file tramite la playlist!", # Filename
+ "cannot-add-duplicate-error" : u"Impossibile aggiungere una seconda voce per '{}' alla playlist. Non è possibile avere file duplicati.", #Filename
+ "cannot-add-unsafe-path-error" : u"Impossibile caricare automaticamente {} perché non è presente nei domini fidati. Puoi passare all'inserimento manuale facendo doppio click sull'indirizzo nella playlist, oppure aggiungerlo ai domini fidati tramite File->Avanzate->Imposta domini fidati. Cliccando col tasto destro del mouse su un indirizzo puoi impostare il suo dominio come fidato tramite il menù contestuale.", # Filename
"sharedplaylistenabled-label" : u"Abilita le playlist condivise",
"removefromplaylist-menu-label" : u"Rimuovi dalla playlist",
- "shuffleremainingplaylist-menu-label" : u"Shuffle le playlist rimanenti",
- "shuffleentireplaylist-menuu-label" : u"Shuffle l'intera playlist",
+ "shuffleremainingplaylist-menu-label" : u"Mescola i file non ancora riprodotti",
+ "shuffleentireplaylist-menuu-label" : u"Mescola l'intera playlist",
"undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist",
- "addfilestoplaylist-menu-label" : u"Aggiungi i file alla fine della playlist",
- "addurlstoplaylist-menu-label" : u"Aggiungi gli URL alla fine della playlist",
- "editplaylist-menu-label": u"Modifica playlist",
+ "addfilestoplaylist-menu-label" : u"Aggiungi un file alla fine della playlist",
+ "addurlstoplaylist-menu-label" : u"Aggiungi un indirizzo alla fine della playlist",
+ "editplaylist-menu-label": u"Modifica la playlist",
"open-containing-folder": u"Apri la cartella contenente questo file",
"addusersfiletoplaylist-menu-label" : u"Aggiungi il file {} alla playlist", # item owner indicator # TODO needs testing
- "addusersstreamstoplaylist-menu-label" : u"Aggiungi lo stream {} alla playlist", # item owner indicator # TODO needs testing
- "openusersstream-menu-label" : u"Apri lo stream di {}", # [username]'s
+ "addusersstreamstoplaylist-menu-label" : u"Aggiungi l'indirizzo {} alla playlist", # item owner indicator # TODO needs testing
+ "openusersstream-menu-label" : u"Apri l'indirizzo di {}", # [username]'s
"openusersfile-menu-label" : u"Apri il file di {}", # [username]'s
"item-is-yours-indicator" : u"tuo", # Goes with addusersfiletoplaylist/addusersstreamstoplaylist # TODO needs testing
"item-is-others-indicator" : u"di {}", # username - goes with addusersfiletoplaylist/addusersstreamstoplaylist # TODO needs testing
"playlist-instruction-item-message" : u"Trascina qui i file per aggiungerli alla playlist condivisa.",
- "sharedplaylistenabled-tooltip" : u"Gli operatori della stanza possono aggiunge i file ad una playlist sincronizzata per garantire che tutti i partecipanti stiano guardando la stessa cosa. Configura le cartelle multimediali alla voce 'Miscellanea'.",
+ "sharedplaylistenabled-tooltip" : u"Gli operatori della stanza possono aggiungere i file a una playlist sincronizzata per garantire che tutti i partecipanti stiano guardando la stessa cosa. Configura le cartelle multimediali alla voce 'Miscellanea'.",
}
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 7bd55e6..d2fa381 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -993,7 +993,7 @@ class MainWindow(QtWidgets.QMainWindow):
MediaDirectoriesDialog = QtWidgets.QDialog()
MediaDirectoriesDialog.setWindowTitle(getMessage("syncplay-mediasearchdirectories-title")) # TODO: Move to messages_*.py
MediaDirectoriesLayout = QtWidgets.QGridLayout()
- MediaDirectoriesLabel = QtWidgets.QLabel(getMessage("syncplay-mediasearchdirectories-title"))
+ MediaDirectoriesLabel = QtWidgets.QLabel(getMessage("syncplay-mediasearchdirectories-label"))
MediaDirectoriesLayout.addWidget(MediaDirectoriesLabel, 0, 0, 1, 2)
MediaDirectoriesTextbox = QtWidgets.QPlainTextEdit()
MediaDirectoriesTextbox.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
From bf31a3402721dfc706a305d62612373dd4b9bb40 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 16 Feb 2018 17:11:23 +0100
Subject: [PATCH 17/80] Excludes strings related to the 'Hello' arguments from
translations
---
syncplay/messages_en.py | 4 +--
syncplay/messages_it.py | 71 ++++++++++++++++++++---------------------
2 files changed, 37 insertions(+), 38 deletions(-)
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index 05d4cf6..4d04b04 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -127,7 +127,7 @@ en = {
"empty-value-config-error" : "{} can't be empty", # Config option
"not-json-error" : "Not a json encoded string\n",
- "hello-arguments-error" : "Not enough Hello arguments\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.",
@@ -447,7 +447,7 @@ en = {
"client-drop-server-error" : u"Client drop: {} -- {}", # host, error
"password-required-server-error" : "Password required",
"wrong-password-server-error" : "Wrong password supplied",
- "hello-server-error" : "Not enough Hello arguments",
+ "hello-server-error" : "Not enough Hello arguments", #DO NOT TRANSLATE
# Playlists
"playlist-selection-changed-notification" : u"{} changed the playlist selection", # Username
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 226d75d..53a5c1e 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -6,7 +6,7 @@ it = {
"LANGUAGE" : u"Italiano",
# Client notifications
- "config-cleared-notification" : u"Impostazioni resettate. I cambiamenti saranno memorizzati quando salverai una configurazione valida.",
+ "config-cleared-notification" : u"Impostazioni iniziali ripristinate. I cambiamenti saranno memorizzati quando salverai una configurazione valida.",
"relative-config-notification" : u"Caricato i file di configurazione relativi: {}",
@@ -20,7 +20,7 @@ it = {
"rewind-notification" : u"Riavvolgo a causa della differenza temporale con {}", # User
"fastforward-notification" : u"Avanzamento rapido a causa della differenza temporale con {}", # User
"slowdown-notification" : u"Rallento a causa della differenza temporale con {}", # User
- "revert-notification" : u"Velocità di riproduzione normale ripristinata",
+ "revert-notification" : u"Ripristino la velocità di riproduzione normale",
"pause-notification" : u"{} ha messo in pausa", # User
"unpause-notification" : u"{} ha ripreso la riproduzione", # User
@@ -31,26 +31,26 @@ it = {
"media-directory-list-updated-notification" : u"Le cartelle multimediali di Syncplay sono state aggiornate.",
"room-join-notification" : u"{} è entranto nella stanza: '{}'", # User
- "left-notification" : u"{} ha abbandonato", # User
- "left-paused-notification" : u"{} ha abbandonato, {} ha messo in pausa", # User who left, User who paused
+ "left-notification" : u"{} ha lasciato la stanza", # User
+ "left-paused-notification" : u"{} ha lasciato la stanza, {} ha messo in pausa", # User who left, User who paused
"playing-notification" : u"{} sta riproducendo '{}' ({})", # User, file, duration
"playing-notification/room-addendum" : u" nella stanza: '{}'", # Room
"not-all-ready" : u"Non pronti: {}", # Usernames
"all-users-ready" : u"Tutti i partecipanti sono pronti ({} utenti)", #Number of ready users
- "ready-to-unpause-notification" : u"Ora sei pronto - premi ancora una volta il tasto pausa per riprendere la riproduzione",
+ "ready-to-unpause-notification" : u"Ora sei pronto - premi ancora una volta per riprendere la riproduzione",
"set-as-ready-notification" : u"Ora sei pronto",
"set-as-not-ready-notification" : u"Non sei pronto",
"autoplaying-notification" : u"Riproduzione automatica in {}...", # Number of seconds until playback will start
- "identifying-as-controller-notification" : u"Identificato come gestore della stanza con password '{}'...",
+ "identifying-as-controller-notification" : u"Ti sei identificato come gestore della stanza con password '{}'...",
"failed-to-identify-as-controller-notification" : u"{} ha fallito l'identificazione come gestore della stanza.",
"authenticated-as-controller-notification" : u"{} autenticato come gestore della stanza",
"created-controlled-room-notification" : u"Stanza gestita '{}' creata con password '{}'. Per favore salva queste informazioni per una consultazione futura!", # RoomName, operatorPassword
"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 nel tuo file: {}", # File differences (filename, size, and/or duration)
+ "room-file-differences" : u"Differenze: {} \n", # File differences (filename, size, and/or duration)
"file-difference-filename" : u"nome",
"file-difference-filesize" : u"dimensione",
"file-difference-duration" : u"durata",
@@ -82,14 +82,14 @@ it = {
"commandlist-notification/pause" : u"\tp - attiva o disattiva la pausa",
"commandlist-notification/seek" : u"\t[s][+-]tempo - salta all'istante di tempo dato, se + o - non è specificato si considera il tempo assoluto in secondi o min:sec",
"commandlist-notification/help" : u"\th - mostra questo help",
- "commandlist-notification/toggle" : u"\tt - attiva o disattiva lo stato 'Pronto'",
+ "commandlist-notification/toggle" : u"\tt - attiva o disattiva la funzionalità \"pronto\"",
"commandlist-notification/create" : u"\tc [nome] - crea una stanza gestita usando il nome della stanza attuale",
"commandlist-notification/auth" : u"\ta [password] - autentica come gestore della stanza, utilizzando la password del gestore",
"commandlist-notification/chat" : u"\tch [message] - invia un messaggio nella chat della stanza",
"syncplay-version-notification" : u"Versione di Syncplay: {}", # syncplay.version
"more-info-notification" : u"Maggiori informazioni a: {}", # projectURL
- "gui-data-cleared-notification" : u"Syncplay ha resettato i dati dell'interfaccia relativi ai percorsi e allo stato delle finestre.",
+ "gui-data-cleared-notification" : u"Syncplay ha ripristinato i dati dell'interfaccia relativi ai percorsi e allo stato delle finestre.",
"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?",
@@ -127,7 +127,7 @@ it = {
"empty-value-config-error" : u"Il campo {} non può essere vuoto", # Config option
"not-json-error" : u"Non è una stringa con codifica JSON\n",
- "hello-arguments-error" : u"Argomenti Hello non sufficienti\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.",
@@ -136,7 +136,6 @@ it = {
"feature-sharedPlaylists" : u"playlist condivise", # used for not-supported-by-server-error
"feature-chat" : u"chat", # used for not-supported-by-server-error
"feature-readiness" : u"pronto", # used for not-supported-by-server-error
- "feature-readiness" : u"pronto", # used for not-supported-by-server-error
"feature-managedRooms" : u"stanze gestite", # used for not-supported-by-server-error
"not-supported-by-server-error" : u"La feature {} non è supportata da questo server..", #feature
@@ -169,7 +168,7 @@ it = {
"player-path-argument" : u'percorso dell\'eseguibile del tuo player',
"file-argument" : u'file da riprodurre',
"args-argument" : u'opzioni del player, se hai bisogno di utilizzare opzioni che iniziano con - anteponi un singolo \'--\'',
- "clear-gui-data-argument" : u'resetta il percorso e i dati impostati tramite interfaccia grafica e salvati come QSettings',
+ "clear-gui-data-argument" : u'ripristina il percorso e i dati impostati tramite interfaccia grafica e salvati come QSettings',
"language-argument" : u'lingua per i messaggi di Syncplay (de/en/ru/it)',
"version-argument" : u'mostra la tua versione',
@@ -205,10 +204,10 @@ it = {
"fastforwardondesync-label" : u"Avanzamento rapido in caso di ritardo (consigliato)",
"dontslowdownwithme-label" : u"Non rallentare o riavvolgere gli altri utenti (sperimentale)",
"pausing-title" : u"Pausa",
- "pauseonleave-label" : u"Metti in pausa quando gli altri utenti abbandonano (es. disconnessione)",
+ "pauseonleave-label" : u"Metti in pausa quando gli altri utenti lasciano la stanza (es. disconnessione)",
"readiness-title" : u"Stato iniziale di 'pronto'",
- "readyatstart-label" : u"Impostami sempre su 'pronto a guardare'",
- "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay a ogni apertura", # (Inverted)
+ "readyatstart-label" : u"Imposta sempre il mio stato come \"pronto\" a guardare",
+ "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay a ogni avvio", # (Inverted)
"showosd-label" : u"Abilita i messaggi OSD",
"showosdwarnings-label" : u"Mostra gli avvisi (es. file differenti, utenti non pronti)",
@@ -230,12 +229,12 @@ it = {
"sync-otherslagging-title" : u"Se gli altri partecipanti non sono sincronizzati...",
"sync-youlaggging-title" : u"Se tu sei non sei sincronizzato...",
"messages-label" : u"Messaggi",
- "messages-osd-title" : u"Impostazioni On-screen Display",
+ "messages-osd-title" : u"Impostazioni On-Screen Display",
"messages-other-title" : u"Altre impostazioni dello schermo",
"chat-label" : u"Chat",
"privacy-label" : u"Privacy", # Currently unused, but will be brought back if more space is needed in Misc tab
"privacy-title" : u"Impostazioni privacy",
- "unpause-title" : u"Premendo play, imposta il tuo stato su pronto e:",
+ "unpause-title" : u"Premendo play, imposta il tuo stato su \"pronto\" e:",
"unpause-ifalreadyready-option" : u"Riprendi la riproduzione se eri già pronto",
"unpause-ifothersready-option" : u"Riprendi la riproduzione se eri già pronto o se gli altri partecipanti sono pronti (default)",
"unpause-ifminusersready-option" : u"Riprendi la riproduzione se eri già pronto o se un numero minimo di partecipanti è pronto",
@@ -259,13 +258,13 @@ it = {
"chat-chatroom-option": u"Stile chatroom",
"chat-scrolling-option": u"A scorrimento",
- "mpv-key-tab-hint": u"[TAB] to toggle access to alphabet row key shortcuts.", # TODO needs to clarify this
+ "mpv-key-tab-hint": u"[TAB] per attivare le scorciatoie da tastiera e disattivare la chat.",
"mpv-key-hint": u"[Invio] per inviare un messaggio. [Esc] per uscire dalla modalità chat.",
"alphakey-mode-warning-first-line": u"Puoi utilizzare temporaneamente i vecchi comandi di mpv con i tasti a-z.",
"alphakey-mode-warning-second-line": u"Premi [TAB] per ritornare alla modalità chat di Syncplay.",
"help-label" : u"Aiuto",
- "reset-label" : u"Impostazioni iniziali",
+ "reset-label" : u"Elimina configurazione",
"run-label" : u"Avvia Syncplay",
"storeandrun-label" : u"Salva la configurazione e avvia Syncplay",
@@ -366,23 +365,23 @@ it = {
"slowondesync-tooltip" : u"Riduce temporaneamente la velocità di riproduzione quando c'è bisogno di sincronizzarti con gli altri utenti. Non supportato su MPC-HC/BE.",
"dontslowdownwithme-tooltip" : u"Gli altri utenti non vengono rallentati se non sei sincronizzato. Utile per i gestori della stanza.",
"pauseonleave-tooltip" : u"Mette in pausa la riproduzione se vieni disconnesso o se qualcuno lascia la stanza.",
- "readyatstart-tooltip" : u"Imposta il tuo stato su 'pronto' all'avvio (in caso contrario, sarai su 'non pronto' finché non cambierai il tuo stato)",
+ "readyatstart-tooltip" : u"Imposta il tuo stato su \"pronto\" all'avvio (in caso contrario, sarai su \"non pronto\" finché non cambierai il tuo stato)",
"forceguiprompt-tooltip" : u"La finestra di configurazione non viene mostrata quando apri Syncplay.",
"nostore-tooltip" : u"Avvia Syncplay con la configurazione scelta, ma non salva le impostazioni.",
"rewindondesync-tooltip" : u"Torna indietro quando necessario per ristabilire la sincronizzazione. Disabilitare quest'opzione può causare gravi problemi di sincronizzazione!",
- "fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (o la tua posizione supposta se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).",
- "showosd-tooltip" : u"Invia i messaggi di Syncplay all'OSD del media player.",
+ "fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (usa una posizione fittizia se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).",
+ "showosd-tooltip" : u"Invia i messaggi di Syncplay al media player tramite OSD.",
"showosdwarnings-tooltip" : u"Mostra gli avvisi in caso di riproduzione di un file differente, se sei l'unico utente nella stanza, se ci sono utenti non pronti, ecc.",
"showsameroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui si trova l'utente.",
"shownoncontrollerosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi ai non operatori presenti nelle stanze gestite.",
"showdifferentroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alle stanze in cui l'utente non si trova.",
"showslowdownosd-tooltip" : u"Mostra le notifiche di rallentamento / riavvolgimento in caso di differenza temporale.",
- "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file multiparte. Può causare dei falsi positivi.",
+ "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file con più parti. Può causare dei falsi positivi.",
"language-tooltip" : u"Lingua da utilizzare in Syncplay.",
- "unpause-always-tooltip" : u"Se riprendi la riproduzione, il tuo stato cambia in 'pronto' e la riproduzione viene avviata, piuttosto che impostarti solo su pronto.",
- "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', verrai impostato su pronto - ripeti il comando ancora una volta per avviare la riproduzione.",
- "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto' la riproduzione verrà avviata solo se gli altri sono pronti.",
- "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', la riproduzione verrà avviata solo se un numero minimo di utenti è 'pronto'.",
+ "unpause-always-tooltip" : u"Se riprendi la riproduzione, il tuo stato cambia in \"pronto\" e la riproduzione viene avviata, piuttosto che impostarti solo su pronto.",
+ "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei \"pronto\", verrai impostato su pronto - ripeti il comando ancora una volta per avviare la riproduzione.",
+ "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei \"pronto\" la riproduzione verrà avviata solo se gli altri sono pronti.",
+ "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei \"pronto\", la riproduzione verrà avviata solo se un numero minimo di utenti è \"pronto\".",
"trusteddomains-arguments-tooltip" : u"Domini verso cui è possibile collegarsi automaticamente quando le playlist condivise sono abilitate.",
"chatinputenabled-tooltip" : u"Abilita l'input della chat in mpv (premi Invio per chattare, per inviare ed Esc per cancellare)",
@@ -401,14 +400,14 @@ it = {
"chatoutputmode-chatroom-tooltip": u"Mostra i nuovi messaggi di chat al di sotto di quelli precedenti.",
"chatoutputmode-scrolling-tooltip": u"Scorri il testo della chat da destra a sinistra.",
- "help-tooltip" : u"Apri la guida utente su Syncplay.pl.",
- "reset-tooltip" : u"Ripristina tutte le impostazioni.",
+ "help-tooltip" : u"Apri la guida utente su syncplay.pl.",
+ "reset-tooltip" : u"Ripristina le impostazioni iniziali di Syncplay.",
"update-server-list-tooltip" : u"Scarica la lista dei server pubblici da syncplay.pl.",
- "joinroom-tooltip" : u"Abbandona la stanza attuale e entra in quella specificata.",
+ "joinroom-tooltip" : u"Lascia la stanza attuale e entra in quella specificata.",
"seektime-msgbox-label" : u"Salta all'istante di tempo specificato (in secondi / min:sec). Usa +/- per una ricerca relativa.",
"ready-tooltip" : u"Indica quando sei pronto a guardare.",
- "autoplay-tooltip" : u"Riproduzione automatica quando il numero minimo di utenti è 'pronto'.",
+ "autoplay-tooltip" : u"Avvia la riproduzione automatica quando il numero minimo di utenti è pronto.",
"switch-to-file-tooltip" : u"Doppio click per passare a {}", # Filename
"sendmessage-tooltip" : u"Invia il messaggio alla stanza",
@@ -424,7 +423,7 @@ it = {
# Server notifications
"welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version
"client-connected-room-server-notification" : u"{0}({2}) connesso alla stanza '{1}'", # username, host, room
- "client-left-server-notification" : u"{0} ha abbandonato il server", # name
+ "client-left-server-notification" : u"{0} ha lasciato il server", # name
"no-salt-notification" : u"NOTA BENE: In futuro, per consentire il corretto funzionamento delle password generate da questo server (per le stanze gestite), aggiungi da linea di comando il seguente argomento prima di avviare il server Syncplay: --salt {}", #Salt
@@ -435,7 +434,7 @@ it = {
"server-password-argument" : u'password del server',
"server-isolate-room-argument" : u'Mantiene le stanze isolate',
"server-salt-argument" : u"usare stringhe casuali per generare le password delle stanze gestite",
- "server-disable-ready-argument" : u"disabilita la funzionalità 'pronto'",
+ "server-disable-ready-argument" : u"disabilita la funzionalità \"pronto\"",
"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
@@ -445,12 +444,12 @@ it = {
# Server errors
"unknown-command-server-error" : u"Comando non riconosciuto {}", # message
"not-json-server-error" : u"Non è una stringa in codifica JSON {}", # message
- "not-known-server-error" : u"Devi essere riconosciuto dal server prima di poter inviare questo comando",
+ "not-known-server-error" : u"Devi essere autenticato dal server prima di poter inviare questo comando",
"client-drop-server-error" : u"Il client è caduto: {} -- {}", # host, error
"password-required-server-error" : u"È richiesta una password",
"wrong-password-server-error" : u"La password inserita è errata",
- "hello-server-error" : u"Non ci sono abbastanza argomenti Hello",
-
+ "hello-server-error" : "Not enough Hello arguments", #DO NOT TRANSLATE
+
# Playlists
"playlist-selection-changed-notification" : u"{} ha cambiato il file selezionato nella playlist", # Username
"playlist-contents-changed-notification" : u"{} ha aggiornato la playlist", # Username
From 7fe1e942f4e77e0b8fdc2c22e254fc934aef111d Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 23 Feb 2018 11:45:44 +0100
Subject: [PATCH 18/80] Change ConfigDialog to modeless
---
syncplay/ui/GuiConfiguration.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index 373715d..605007c 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 @@ class GuiConfiguration:
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:
@@ -421,11 +426,12 @@ class ConfigDialog(QtWidgets.QDialog):
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):
@@ -1189,6 +1195,7 @@ class ConfigDialog(QtWidgets.QDialog):
self.config['resetConfig'] = True
self.pressedclosebutton = False
self.close()
+ self.closed.emit()
def showEvent(self, *args, **kwargs):
self.ensureTabListIsVisible()
From 03ab3fe7205bb2f12b504026440f4bd8c7284533 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 23 Feb 2018 11:45:44 +0100
Subject: [PATCH 19/80] Change ConfigDialog to modeless
---
syncplay/ui/GuiConfiguration.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index 373715d..605007c 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 @@ class GuiConfiguration:
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:
@@ -421,11 +426,12 @@ class ConfigDialog(QtWidgets.QDialog):
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):
@@ -1189,6 +1195,7 @@ class ConfigDialog(QtWidgets.QDialog):
self.config['resetConfig'] = True
self.pressedclosebutton = False
self.close()
+ self.closed.emit()
def showEvent(self, *args, **kwargs):
self.ensureTabListIsVisible()
From ff972dfda03cb0092f7b4dfdbf965d816520aa1d Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 23 Feb 2018 11:45:44 +0100
Subject: [PATCH 20/80] Change ConfigDialog to modeless
---
syncplay/ui/GuiConfiguration.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index 373715d..605007c 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 @@ class GuiConfiguration:
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:
@@ -421,11 +426,12 @@ class ConfigDialog(QtWidgets.QDialog):
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):
@@ -1189,6 +1195,7 @@ class ConfigDialog(QtWidgets.QDialog):
self.config['resetConfig'] = True
self.pressedclosebutton = False
self.close()
+ self.closed.emit()
def showEvent(self, *args, **kwargs):
self.ensureTabListIsVisible()
From 398641c5f7d30beff32064ebf5b504a633c1c227 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sun, 25 Feb 2018 14:44:56 +0000
Subject: [PATCH 21/80] Add --max-username-length option & increased default
username and chat lengths to 150 characters
---
syncplay/constants.py | 4 ++--
syncplay/messages_de.py | 1 +
syncplay/messages_en.py | 1 +
syncplay/messages_it.py | 1 +
syncplay/messages_ru.py | 1 +
syncplay/server.py | 6 ++++--
syncplay/ui/GuiConfiguration.py | 1 -
7 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/syncplay/constants.py b/syncplay/constants.py
index f5f0f41..5ea98c8 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -66,8 +66,8 @@ DEFAULT_CHAT_OUTPUT_FONT_COLOR = "#FFFF00"
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
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index f015834..7caed97 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -433,6 +433,7 @@ de = {
"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 {}.",
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index 4d04b04..5548f00 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -437,6 +437,7 @@ en = {
"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.",
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 53a5c1e..bda5522 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -438,6 +438,7 @@ it = {
"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.",
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index 0b47c07..7a1fafe 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -439,6 +439,7 @@ ru = {
"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-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).",
diff --git a/syncplay/server.py b/syncplay/server.py
index 21a09ad..8e1c625 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -14,7 +14,7 @@ import argparse
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 @@ class SyncFactory(Factory):
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 @@ class SyncFactory(Factory):
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 @@ class ConfigurationGetter(object):
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 605007c..fd6bcd3 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -596,7 +596,6 @@ class ConfigDialog(QtWidgets.QDialog):
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()
From 27675bf8e7feba0012fdf914c4b9f85452fa0422 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Thu, 1 Mar 2018 19:26:07 +0000
Subject: [PATCH 22/80] Set recent client as 1.5.2
---
syncplay/__init__.py | 2 +-
syncplay/constants.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index e039478..c66c5cc 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
version = '1.5.2'
milestone = 'Yoitsu'
-release_number = '56'
+release_number = '57'
projectURL = 'http://syncplay.pl/'
diff --git a/syncplay/constants.py b/syncplay/constants.py
index 5ea98c8..d6a2d73 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -10,7 +10,7 @@ UI_TIME_FORMAT = "[%X] "
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.2" #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
From 300d4097b4943a21319a128d6c5b2cf543377aab Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 3 Mar 2018 12:18:30 +0000
Subject: [PATCH 23/80] Fix typo
---
syncplay/messages_de.py | 2 +-
syncplay/messages_en.py | 2 +-
syncplay/messages_it.py | 2 +-
syncplay/messages_ru.py | 2 +-
syncplay/ui/gui.py | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index 7caed97..b389a97 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -455,7 +455,7 @@ de = {
"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 5548f00..ce216ed 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -459,7 +459,7 @@ en = {
"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 bda5522..22f6381 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -460,7 +460,7 @@ it = {
"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 7a1fafe..f32e73f 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -460,7 +460,7 @@ ru = {
"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/ui/gui.py b/syncplay/ui/gui.py
index d2fa381..e989756 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -597,7 +597,7 @@ class MainWindow(QtWidgets.QMainWindow):
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())
From 1db116d69d004133cceded2ecd640730d205b640 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 3 Mar 2018 15:08:49 +0100
Subject: [PATCH 24/80] Correct Travis script to explicitely install python2
---
.travis.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index accff29..84377f7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,13 +10,14 @@ script:
before_install:
- brew update
-- brew install python
+- brew install python@2
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
#- export PATH=/usr/local/bin:$PATH
+- export PATH="/usr/local/opt/python@2/bin:$PATH"
- export QT_PREFERRED_BINDING="PySide"
- pip2 install twisted appnope pyobjc py2app
From adcd34e1855aa6d34e16bbf1eb794f8b5740b0c5 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sun, 25 Feb 2018 14:44:56 +0000
Subject: [PATCH 25/80] Add --max-username-length option & increased default
username and chat lengths to 150 characters
---
syncplay/constants.py | 4 ++--
syncplay/messages_de.py | 1 +
syncplay/messages_en.py | 1 +
syncplay/messages_it.py | 1 +
syncplay/messages_ru.py | 1 +
syncplay/server.py | 6 ++++--
syncplay/ui/GuiConfiguration.py | 1 -
7 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/syncplay/constants.py b/syncplay/constants.py
index f5f0f41..5ea98c8 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -66,8 +66,8 @@ DEFAULT_CHAT_OUTPUT_FONT_COLOR = "#FFFF00"
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
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index f015834..7caed97 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -433,6 +433,7 @@ de = {
"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 {}.",
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index 4d04b04..5548f00 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -437,6 +437,7 @@ en = {
"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.",
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 53a5c1e..bda5522 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -438,6 +438,7 @@ it = {
"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.",
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index 0b47c07..7a1fafe 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -439,6 +439,7 @@ ru = {
"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-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).",
diff --git a/syncplay/server.py b/syncplay/server.py
index 21a09ad..8e1c625 100644
--- a/syncplay/server.py
+++ b/syncplay/server.py
@@ -14,7 +14,7 @@ import argparse
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 @@ class SyncFactory(Factory):
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 @@ class SyncFactory(Factory):
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 @@ class ConfigurationGetter(object):
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 605007c..fd6bcd3 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -596,7 +596,6 @@ class ConfigDialog(QtWidgets.QDialog):
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()
From 8762b25bcbe0279c724688206b939a28659d2a31 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Thu, 1 Mar 2018 19:26:07 +0000
Subject: [PATCH 26/80] Set recent client as 1.5.2
---
syncplay/__init__.py | 2 +-
syncplay/constants.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index e039478..c66c5cc 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
version = '1.5.2'
milestone = 'Yoitsu'
-release_number = '56'
+release_number = '57'
projectURL = 'http://syncplay.pl/'
diff --git a/syncplay/constants.py b/syncplay/constants.py
index 5ea98c8..d6a2d73 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -10,7 +10,7 @@ UI_TIME_FORMAT = "[%X] "
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.2" #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
From 38c1de56b99e1f72c2c4539c4260057e3eb779ca Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 3 Mar 2018 12:18:30 +0000
Subject: [PATCH 27/80] Fix typo
---
syncplay/messages_de.py | 2 +-
syncplay/messages_en.py | 2 +-
syncplay/messages_it.py | 2 +-
syncplay/messages_ru.py | 2 +-
syncplay/ui/gui.py | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index 7caed97..b389a97 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -455,7 +455,7 @@ de = {
"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 5548f00..ce216ed 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -459,7 +459,7 @@ en = {
"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 bda5522..22f6381 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -460,7 +460,7 @@ it = {
"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 7a1fafe..f32e73f 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -460,7 +460,7 @@ ru = {
"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/ui/gui.py b/syncplay/ui/gui.py
index d2fa381..e989756 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -597,7 +597,7 @@ class MainWindow(QtWidgets.QMainWindow):
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())
From dcd82d9db438ff545751a347e032550bc2c9537d Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 3 Mar 2018 15:08:49 +0100
Subject: [PATCH 28/80] Correct Travis script to explicitely install python2
---
.travis.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index d4477e0..0d78a87 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,13 +10,14 @@ script:
before_install:
- brew update
-- brew install python
+- brew install python@2
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
#- export PATH=/usr/local/bin:$PATH
+- export PATH="/usr/local/opt/python@2/bin:$PATH"
- export QT_PREFERRED_BINDING="PySide"
- pip2 install twisted appnope pyobjc py2app
From 383e16d97404ea73019ff822424c64eecd7ca7a2 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sun, 4 Mar 2018 20:29:11 +0100
Subject: [PATCH 29/80] Retrieve python@2 cache from external build
---
.travis.yml | 7 ++++---
travis/cache-homebrew | 6 ++++++
travis/cache-python | 5 +++++
travis/download-homebrew | 13 +++++++++++++
travis/download-python | 10 ++++++++++
5 files changed, 38 insertions(+), 3 deletions(-)
create mode 100755 travis/cache-homebrew
create mode 100755 travis/cache-python
create mode 100755 travis/download-homebrew
create mode 100755 travis/download-python
diff --git a/.travis.yml b/.travis.yml
index 0d78a87..9ac8ac4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,18 +10,19 @@ script:
before_install:
- brew update
-- brew install python@2
+- travis/download-homebrew
+- export PATH="/usr/local/opt/python@2/bin:$PATH"
+- travis/download-python
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
-#- export PATH=/usr/local/bin:$PATH
-- export PATH="/usr/local/opt/python@2/bin:$PATH"
- export QT_PREFERRED_BINDING="PySide"
- pip2 install twisted appnope pyobjc py2app
before_deploy:
+#- travis/cache-homebrew
- pip2 install dmgbuild
- mkdir dist_dmg
- mv resources/macos_vlc_install.command resources/.macos_vlc_install.command
diff --git a/travis/cache-homebrew b/travis/cache-homebrew
new file mode 100755
index 0000000..d9dcc38
--- /dev/null
+++ b/travis/cache-homebrew
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+mkdir travis-cache
+if [ ! -f homebrew-cache.tar.gz ]; then
+ tar czf travis-cache/homebrew-cache.tar.gz --directory /usr/local/Cellar pkg-config readline sqlite gdbm makedepend openssl python@2
+fi
diff --git a/travis/cache-python b/travis/cache-python
new file mode 100755
index 0000000..f7d1e65
--- /dev/null
+++ b/travis/cache-python
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ ! -f python-cache.tar.gz ]; then
+ tar czf travis-cache/python-cache.tar.gz --directory /usr/local/lib/python2.7 site-packages
+fi
diff --git a/travis/download-homebrew b/travis/download-homebrew
new file mode 100755
index 0000000..dd23237
--- /dev/null
+++ b/travis/download-homebrew
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+curl -L "https://dl.bintray.com/alby128/Syncplay/homebrew-cache.tar.gz" -o homebrew-cache.tar.gz
+if [ -f homebrew-cache.tar.gz ]; then
+ if ! tar tf homebrew-cache.tar.gz &>/dev/null; then
+ rm homebrew-cache.tar.gz
+ exit 0
+ fi
+ tar zxf homebrew-cache.tar.gz --directory /usr/local/Cellar
+ brew unlink pkg-config
+ brew link pkg-config
+ brew link --force readline sqlite gdbm makedepend python@2
+fi
diff --git a/travis/download-python b/travis/download-python
new file mode 100755
index 0000000..870f07e
--- /dev/null
+++ b/travis/download-python
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+curl -L "https://dl.bintray.com/alby128/Syncplay/python-cache.tar.gz" -o python-cache.tar.gz
+if [ -f python-cache.tar.gz ]; then
+ if ! tar tf python-cache.tar.gz &>/dev/null; then
+ rm python-cache.tar.gz
+ exit 0
+ fi
+ tar zxf python-cache.tar.gz --directory /usr/local/lib/python2.7
+fi
From 440357063874c02691b9d97b1916cea9cb9adac2 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sun, 4 Mar 2018 20:29:11 +0100
Subject: [PATCH 30/80] Retrieve python@2 cache from external build
---
.travis.yml | 7 ++++---
travis/cache-homebrew | 6 ++++++
travis/cache-python | 5 +++++
travis/download-homebrew | 13 +++++++++++++
travis/download-python | 10 ++++++++++
5 files changed, 38 insertions(+), 3 deletions(-)
create mode 100755 travis/cache-homebrew
create mode 100755 travis/cache-python
create mode 100755 travis/download-homebrew
create mode 100755 travis/download-python
diff --git a/.travis.yml b/.travis.yml
index 84377f7..87cf3be 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,18 +10,19 @@ script:
before_install:
- brew update
-- brew install python@2
+- travis/download-homebrew
+- export PATH="/usr/local/opt/python@2/bin:$PATH"
+- travis/download-python
- brew tap cartr/qt4
- brew tap-pin cartr/qt4
- brew install pyside
install:
-#- export PATH=/usr/local/bin:$PATH
-- export PATH="/usr/local/opt/python@2/bin:$PATH"
- export QT_PREFERRED_BINDING="PySide"
- pip2 install twisted appnope pyobjc py2app
before_deploy:
+#- travis/cache-homebrew
- pip2 install dmgbuild
- mkdir dist_dmg
- mv resources/macos_vlc_install.command resources/.macos_vlc_install.command
diff --git a/travis/cache-homebrew b/travis/cache-homebrew
new file mode 100755
index 0000000..d9dcc38
--- /dev/null
+++ b/travis/cache-homebrew
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+mkdir travis-cache
+if [ ! -f homebrew-cache.tar.gz ]; then
+ tar czf travis-cache/homebrew-cache.tar.gz --directory /usr/local/Cellar pkg-config readline sqlite gdbm makedepend openssl python@2
+fi
diff --git a/travis/cache-python b/travis/cache-python
new file mode 100755
index 0000000..f7d1e65
--- /dev/null
+++ b/travis/cache-python
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ ! -f python-cache.tar.gz ]; then
+ tar czf travis-cache/python-cache.tar.gz --directory /usr/local/lib/python2.7 site-packages
+fi
diff --git a/travis/download-homebrew b/travis/download-homebrew
new file mode 100755
index 0000000..dd23237
--- /dev/null
+++ b/travis/download-homebrew
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+curl -L "https://dl.bintray.com/alby128/Syncplay/homebrew-cache.tar.gz" -o homebrew-cache.tar.gz
+if [ -f homebrew-cache.tar.gz ]; then
+ if ! tar tf homebrew-cache.tar.gz &>/dev/null; then
+ rm homebrew-cache.tar.gz
+ exit 0
+ fi
+ tar zxf homebrew-cache.tar.gz --directory /usr/local/Cellar
+ brew unlink pkg-config
+ brew link pkg-config
+ brew link --force readline sqlite gdbm makedepend python@2
+fi
diff --git a/travis/download-python b/travis/download-python
new file mode 100755
index 0000000..870f07e
--- /dev/null
+++ b/travis/download-python
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+curl -L "https://dl.bintray.com/alby128/Syncplay/python-cache.tar.gz" -o python-cache.tar.gz
+if [ -f python-cache.tar.gz ]; then
+ if ! tar tf python-cache.tar.gz &>/dev/null; then
+ rm python-cache.tar.gz
+ exit 0
+ fi
+ tar zxf python-cache.tar.gz --directory /usr/local/lib/python2.7
+fi
From 7c8b3d93fac9cc0bcb9caab884ce1536e37ed3b4 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Thu, 8 Mar 2018 22:39:03 +0100
Subject: [PATCH 31/80] Italian translation: readiness was not shown in OSD if
there were any file differences
---
syncplay/messages_it.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 22f6381..499fbb5 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -50,7 +50,7 @@ it = {
"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",
From 6c53e6c58f20deeb7c883feded0fcc35fb848f7a Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Fri, 9 Mar 2018 00:43:32 +0100
Subject: [PATCH 32/80] Fixes a bug in which paths with non-ASCII characters
prevented loading of the file properties
---
syncplay/client.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/syncplay/client.py b/syncplay/client.py
index e330843..99045db 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -1929,6 +1929,7 @@ class FileSwitchManager(object):
return False
def notifyUserIfFileNotInMediaDirectory(self, filenameToFind, path):
+ path = path.decode('utf-8')
directoryToFind = os.path.dirname(path)
if directoryToFind in self.mediaDirectoriesNotFound:
return
From f929b2291f3c5e42a7b906dd2393f41128ef5466 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Fri, 9 Mar 2018 01:25:53 +0100
Subject: [PATCH 33/80] Fixes drag-and-drop of files with non-ASCII characters
in the name on macOS
---
syncplay/ui/gui.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index e989756..be3646e 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -19,6 +19,7 @@ from twisted.internet import task
from syncplay.ui.consoleUI import ConsoleUI
if isMacOS() and IsPySide:
from Foundation import NSURL
+ from Cocoa import NSString, NSUTF8StringEncoding
lastCheckedForUpdates = None
class ConsoleInGUI(ConsoleUI):
@@ -1609,7 +1610,9 @@ class MainWindow(QtWidgets.QMainWindow):
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:
From 42433e0262dc96570a750a7b30390782c3b4d5b2 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Fri, 9 Mar 2018 01:32:46 +0100
Subject: [PATCH 34/80] Fixes drag-and-drop in shared playlist of filenames
with non-ASCII characters on macOS
---
syncplay/ui/gui.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index be3646e..1e65d30 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -223,7 +223,9 @@ class MainWindow(QtWidgets.QMainWindow):
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):
@@ -328,7 +330,9 @@ class MainWindow(QtWidgets.QMainWindow):
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):
From bfafe1780ea787e18dfdfe4d95a1e96a419b137b Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 9 Mar 2018 09:50:43 +0100
Subject: [PATCH 35/80] Fixes string decode with drag-and-drop and non-ASCII
chars
---
syncplay/client.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/syncplay/client.py b/syncplay/client.py
index 99045db..e8cb8b5 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -1929,7 +1929,10 @@ class FileSwitchManager(object):
return False
def notifyUserIfFileNotInMediaDirectory(self, filenameToFind, path):
- path = path.decode('utf-8')
+ try:
+ path = path.decode('utf-8')
+ except UnicodeEncodeError:
+ pass
directoryToFind = os.path.dirname(path)
if directoryToFind in self.mediaDirectoriesNotFound:
return
From e63e74976ccd2133bebcecb8041e54ad84831d78 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Sun, 11 Mar 2018 18:40:35 +0100
Subject: [PATCH 36/80] Fixes a crash in consoleUI when filename contains
non-ASCII characters
---
syncplay/ui/consoleUI.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/syncplay/ui/consoleUI.py b/syncplay/ui/consoleUI.py
index 332a0ca..3f7433d 100644
--- a/syncplay/ui/consoleUI.py
+++ b/syncplay/ui/consoleUI.py
@@ -91,6 +91,10 @@ class ConsoleUI(threading.Thread):
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:
From 2382cf111bea086f91a2cf8c7de6657eed69fd12 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Thu, 22 Mar 2018 18:05:32 +0000
Subject: [PATCH 37/80] Move Syncplay.pl web links to HTTPS
---
README.md | 4 ++--
buildPy2exe.py | 4 ++--
resources/lua/intf/syncplay.lua | 4 ++--
syncplay/__init__.py | 4 ++--
syncplay/constants.py | 6 +++---
syncplay/messages_de.py | 22 +++++++++++-----------
syncplay/messages_en.py | 22 +++++++++++-----------
syncplay/messages_it.py | 22 +++++++++++-----------
syncplay/messages_ru.py | 16 ++++++++--------
syncplay/ui/GuiConfiguration.py | 2 +-
syncplay/ui/gui.py | 8 ++++----
11 files changed, 57 insertions(+), 57 deletions(-)
diff --git a/README.md b/README.md
index 173b7e2..a873676 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/buildPy2exe.py b/buildPy2exe.py
index 7efc506..e78831f 100755
--- a/buildPy2exe.py
+++ b/buildPy2exe.py
@@ -439,7 +439,7 @@ NSIS_SCRIPT_TEMPLATE = r"""
CreateShortCut "$$SMPROGRAMS\Syncplay\Syncplay.lnk" "$$INSTDIR\Syncplay.exe" ""
CreateShortCut "$$SMPROGRAMS\Syncplay\Syncplay Server.lnk" "$$INSTDIR\syncplayServer.exe" ""
CreateShortCut "$$SMPROGRAMS\Syncplay\Uninstall.lnk" "$$INSTDIR\Uninstall.exe" ""
- WriteINIStr "$$SMPROGRAMS\Syncplay\SyncplayWebsite.url" "InternetShortcut" "URL" "http://syncplay.pl"
+ WriteINIStr "$$SMPROGRAMS\Syncplay\SyncplayWebsite.url" "InternetShortcut" "URL" "https://syncplay.pl"
$${EndIf}
$${If} $$CheckBox_DesktopShortcut_State == $${BST_CHECKED}
@@ -496,7 +496,7 @@ NSIS_SCRIPT_TEMPLATE = r"""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "DisplayIcon" "$$INSTDIR\resources\icon.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "Publisher" "Syncplay"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "DisplayVersion" "$version"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "URLInfoAbout" "http://syncplay.pl/"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "URLInfoAbout" "https://syncplay.pl/"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "NoRepair" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Syncplay" "EstimatedSize" "$$SizeHex"
diff --git a/resources/lua/intf/syncplay.lua b/resources/lua/intf/syncplay.lua
index 4f3d07d..44e8828 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 c66c5cc..304abd9 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
version = '1.5.2'
milestone = 'Yoitsu'
-release_number = '57'
-projectURL = 'http://syncplay.pl/'
+release_number = '58'
+projectURL = 'https://syncplay.pl/'
diff --git a/syncplay/constants.py b/syncplay/constants.py
index d6a2d73..d9ee018 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -256,9 +256,9 @@ OSD_CHAT = "chat"
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 b389a97..eac5b70 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -66,7 +66,7 @@ de = {
"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 @@ de = {
"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 @@ de = {
"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 @@ de = {
"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 @@ de = {
"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 @@ de = {
"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 @@ de = {
"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
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index ce216ed..2dc14a5 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -66,7 +66,7 @@ en = {
"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 @@ en = {
"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 @@ en = {
"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 @@ en = {
"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 @@ en = {
"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 @@ en = {
"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 @@ en = {
"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
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 22f6381..1ec49b7 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -66,7 +66,7 @@ it = {
"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 @@ it = {
"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 @@ it = {
"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 @@ it = {
"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 @@ it = {
"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 @@ it = {
"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 @@ it = {
"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
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index f32e73f..c235946 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -66,7 +66,7 @@ ru = {
"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 @@ ru = {
"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 @@ ru = {
"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 @@ ru = {
"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 @@ ru = {
"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
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index fd6bcd3..7a94147 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -132,7 +132,7 @@ class ConfigDialog(QtWidgets.QDialog):
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):
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index e989756..52b965f 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -111,7 +111,7 @@ class AboutDialog(QtWidgets.QDialog):
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") + "
")
@@ -1120,11 +1120,11 @@ class MainWindow(QtWidgets.QMainWindow):
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()
From 548189b58457cc6c3b745da54e5970dc096ceb24 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Thu, 5 Apr 2018 19:22:56 +0100
Subject: [PATCH 38/80] Include SSL in .exe for HTTPS
---
buildPy2exe.py | 2 +-
syncplay/__init__.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/buildPy2exe.py b/buildPy2exe.py
index e78831f..310f765 100755
--- a/buildPy2exe.py
+++ b/buildPy2exe.py
@@ -722,7 +722,7 @@ info = dict(
'dist_dir': OUT_DIR,
'packages': 'PySide.QtUiTools',
'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide, liburl, ast, unicodedata',
- 'excludes': 'venv, _ssl, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter',
+ 'excludes': 'venv, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter',
'dll_excludes': 'msvcr71.dll, MSVCP90.dll, POWRPROF.dll',
'optimize': 2,
'compressed': 1
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index 304abd9..d727352 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
version = '1.5.2'
milestone = 'Yoitsu'
-release_number = '58'
+release_number = '59'
projectURL = 'https://syncplay.pl/'
From 40be7d51919f6908b3a3c096b9048e2f96481705 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Sat, 7 Apr 2018 21:20:31 +0100
Subject: [PATCH 39/80] Upver to 1.5.3/60
---
syncplay/__init__.py | 4 ++--
syncplay/constants.py | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index d727352..53e985a 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 = '59'
+release_number = '60'
projectURL = 'https://syncplay.pl/'
diff --git a/syncplay/constants.py b/syncplay/constants.py
index d9ee018..122b491 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -10,7 +10,7 @@ UI_TIME_FORMAT = "[%X] "
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.2" #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
From 130b348d6a3da630c8e54278159b221cb8f7663f Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 7 Apr 2018 23:02:55 +0200
Subject: [PATCH 40/80] Fixes deploy phase on Travis
---
.travis.yml | 1 +
bintray.json | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 87cf3be..631d11f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,6 +32,7 @@ before_deploy:
- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}_macOS.dmg
deploy:
+ skip_cleanup: true
on: master
provider: bintray
file: "bintray.json"
diff --git a/bintray.json b/bintray.json
index 6ecef62..0583eee 100644
--- a/bintray.json
+++ b/bintray.json
@@ -6,7 +6,7 @@
},
"version": {
- "name": "v1.5.1"
+ "name": "v1.5.3"
},
"files":
From c7402856c7e88a1fefd51eab88a691cc6fdee034 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sun, 8 Apr 2018 16:08:12 +0100
Subject: [PATCH 41/80] Hopefully fix update check bug when changing Python
versions (#170)
---
syncplay/ui/GuiConfiguration.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index 7a94147..5a092f0 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -303,7 +303,7 @@ class ConfigDialog(QtWidgets.QDialog):
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")
From b7e73c5c1e25523b28c8e39a73ed6dfe6b52839e Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Tue, 10 Apr 2018 21:31:51 +0200
Subject: [PATCH 42/80] Fixes issue #181
---
buildPy2app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/buildPy2app.py b/buildPy2app.py
index a68338b..f923626 100644
--- a/buildPy2app.py
+++ b/buildPy2app.py
@@ -14,7 +14,7 @@ cmdlist = {}
APP = ['syncplayClient.py']
DATA_FILES = [
- ('resources', glob('resources/*.png') + glob('resources/*.rtf')),
+ ('resources', glob('resources/*.png') + glob('resources/*.rtf') + glob('resources/*.lua')),
]
OPTIONS = {
'iconfile':'resources/icon.icns',
From 2ea0a2663b287f92f58cec12f04f08ce02e3fbd6 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Thu, 12 Apr 2018 10:24:27 +0100
Subject: [PATCH 43/80] Upver to release 61
---
syncplay/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index 53e985a..d601a37 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
version = '1.5.3'
milestone = 'Yoitsu'
-release_number = '60'
+release_number = '61'
projectURL = 'https://syncplay.pl/'
From 95b5aaeeadff070fe572fd540c1bbf88514a1ed2 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 7 May 2018 16:18:46 +0200
Subject: [PATCH 44/80] Add extra files to Windows portable release
---
.appveyor.yml | 11 +++++++----
resources/win_lua_note.txt | 6 ++++++
2 files changed, 13 insertions(+), 4 deletions(-)
create mode 100755 resources/win_lua_note.txt
diff --git a/.appveyor.yml b/.appveyor.yml
index bbce8d2..23b3db7 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -27,7 +27,9 @@ install:
- del syncplay_v%ver%\lib\MPR.dll
- mkdir syncplay_v%ver%\platforms
- copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\
- - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup-PySide2.exe
+ - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup.exe
+ - type nul > syncplay_v%ver%\syncplay.ini
+ - copy resources\win_lua_note.txt syncplay_v%ver%\"VLC LUA Script installation.txt"
# Not a project with an msbuild file, build done at install.
build: off
@@ -35,14 +37,15 @@ build: off
artifacts:
- path: 'syncplay_v$(ver)'
type: zip
- name: Syncplay-$(ver)-win-pyside2
+ name: Syncplay_v$(ver)_Portable
- - path: Syncplay-$(ver)-Setup-PySide2.exe
- name: Syncplay-$(ver)-win-setup-pyside2
+ - path: Syncplay-$(ver)-Setup.exe
+ name: Syncplay-$(ver)-win-setup
# Push artefact to S3 bucket and list all
before_deploy:
- dir
+ - dir syncplay_v%ver%
#- python -c "from PySide2 import QtCore; print QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PluginsPath)"
diff --git a/resources/win_lua_note.txt b/resources/win_lua_note.txt
new file mode 100755
index 0000000..66835d8
--- /dev/null
+++ b/resources/win_lua_note.txt
@@ -0,0 +1,6 @@
+You must follow the following instructions to use Syncplay with VLC:
+
+Place the syncplay.lua file from /resources/lua/intf/ into the main (all user) VLC /lua/intf/ sub-directory:
+* Window: %ProgramFiles%\VideoLAN\VLC\lua\intf\
+
+Note: A version of these instructions is also available from http://syncplay.pl/LUA
\ No newline at end of file
From aa96e6d2e3d3f7756291607cdb9748f13e1c23e0 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 7 May 2018 16:25:42 +0200
Subject: [PATCH 45/80] Upver to 1.5.4 release 62
---
.appveyor.yml | 1 -
syncplay/__init__.py | 4 ++--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/.appveyor.yml b/.appveyor.yml
index 23b3db7..6c9fcf3 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -27,7 +27,6 @@ install:
- del syncplay_v%ver%\lib\MPR.dll
- mkdir syncplay_v%ver%\platforms
- copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\
- - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup.exe
- type nul > syncplay_v%ver%\syncplay.ini
- copy resources\win_lua_note.txt syncplay_v%ver%\"VLC LUA Script installation.txt"
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index d601a37..874d028 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
-version = '1.5.3'
+version = '1.5.4'
milestone = 'Yoitsu'
-release_number = '61'
+release_number = '62'
projectURL = 'https://syncplay.pl/'
From c0d74a199588e7eb9458e7dc8d82fc5a9ae964da Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 7 May 2018 16:58:41 +0200
Subject: [PATCH 46/80] Remove dependency from pyobjc on Travis
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index f7f88e3..7170bd7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,7 +28,7 @@ before_install:
- python -c "from py2app.recipes import pyside2"
install:
-- pip install twisted appnope pyobjc
+- pip install twisted appnope
#- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2
#- cd syncplay-qtpy-PySide2
#- git checkout qtpy-pyside2
From 2d244917d989baf770ceecf02f78a0eee99c0e6a Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 7 May 2018 17:35:46 +0200
Subject: [PATCH 47/80] Change .dmg name on Travis
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 7170bd7..af45728 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -40,7 +40,7 @@ before_deploy:
- mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua
- mv resources/macOS_readme.pdf resources/.macOS_readme.pdf
- export VER="$(cat syncplay/__init__.py | awk '/version/ {gsub("\047", "", $3); print $NF}')"
-- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}_macOS_pyside2.dmg
+- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}.dmg
deploy:
skip_cleanup: true
From baf2d3831da67f3282ef96c25bdfdfaf76ea7912 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 7 May 2018 18:31:06 +0200
Subject: [PATCH 48/80] Update third-party-notices for PySide2
---
resources/third-party-notices.rtf | 61 +++++++------------------------
1 file changed, 14 insertions(+), 47 deletions(-)
diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf
index 492a24a..90bddfc 100644
--- a/resources/third-party-notices.rtf
+++ b/resources/third-party-notices.rtf
@@ -24,26 +24,25 @@ The above copyright notice and this permission notice shall be included in all\
copies or substantial portions of the Software.\
\
-\b PySide\
+\b Qt for Python\
\b0 \
-Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\
-Contact: PySide team \
+Copyright (C) 2018 The Qt Company Ltd.\
+Contact: https://www.qt.io/licensing/\
\
-This library is free software; you can redistribute it and/or\
-modify it under the terms of the GNU Lesser General Public\
-License as published by the Free Software Foundation; either\
-version 2.1 of the License, or (at your option) any later version.\
-This library is distributed in the hope that it will be useful,\
+This program is free software: you can redistribute it and/or modify\
+it under the terms of the GNU Lesser General Public License as published\
+by the Free Software Foundation, either version 3 of the License, or\
+(at your option) any later version.\
+\
+This program is distributed in the hope that it will be useful,\
but WITHOUT ANY WARRANTY; without even the implied warranty of\
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
-Lesser General Public License for more details.\
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\
+GNU Lesser General Public License for more details.\
+\
+You should have received a copy of the GNU Lesser General Public License\
+along with this program. If not, see .\
\
-\pard\pardeftab720\partightenfactor0
-\cf0 You should have received a copy of the GNU Lesser General Public License\
-along with this program. If not, see \
-\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
-\cf0 \
\b Twisted\
\
@@ -113,27 +112,6 @@ The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\b \
-Qt 4\
-\
-
-\b0 Copyright (C) 2015 The Qt Company Ltd.\
-Contact: http://www.qt.io/licensing/\
-\
-This library is free software; you can redistribute it and/or\
-modify it under the terms of the GNU Lesser General Public\
-License as published by the Free Software Foundation; either\
-version 2.1 of the License, or (at your option) any later version.\
-This library is distributed in the hope that it will be useful,\
-but WITHOUT ANY WARRANTY; without even the implied warranty of\
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
-Lesser General Public License for more details.\
-\
-\pard\pardeftab720\partightenfactor0
-\cf0 You should have received a copy of the GNU Lesser General Public License\
-along with this program. If not, see \
-\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
-
-\b \cf0 \
appnope\
\b0 \
@@ -157,17 +135,6 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\
-
-\b \
-PyObjC\
-
-\b0 \
-Copyright 2002, 2003 - Bill Bumgarner, Ronald Oussoren, Steve Majewski, Lele Gaifax, et.al.\
-Copyright 2003-2016 - Ronald Oussoren\
-\
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\
-\
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\
\
\b py2exe\
From 9e524704bd7f8b8478d4e8801c54f45fbca91c4a Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Tue, 8 May 2018 11:35:03 +0200
Subject: [PATCH 49/80] Fixes part of issue #184
---
syncplay/ui/GuiConfiguration.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index 5a092f0..f46af65 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -342,7 +342,7 @@ class ConfigDialog(QtWidgets.QDialog):
try:
servers = utils.getListOfPublicServers()
except IOError as e:
- self.showErrorMessage(unicode(e))
+ self.showErrorMessage(e.args[0])
return
currentServer = self.hostCombobox.currentText()
self.hostCombobox.clear()
From 481f27569aeee6a00603a23b9f7ae6536606e18a Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Tue, 8 May 2018 17:58:11 +0200
Subject: [PATCH 50/80] Add Qt 5 license notice in the dependencies text file
---
resources/third-party-notices.rtf | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf
index 90bddfc..5ef095d 100644
--- a/resources/third-party-notices.rtf
+++ b/resources/third-party-notices.rtf
@@ -44,6 +44,32 @@ You should have received a copy of the GNU Lesser General Public License\
along with this program. If not, see .\
\
+\b Qt
+\b0 \
+\
+This program uses Qt versions 5.6 and 5.9 under the GNU LGPL version 3.\
+\
+Qt is a C++ toolkit for cross-platform application development.\
+\
+Qt provides single-source portability across all major desktop operating systems. It is also available for embedded Linux and other embedded and mobile operating systems.\
+\
+Qt is available under three different licensing options designed to accommodate the needs of our various users.\
+\
+Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 3 or GNU LGPL version 2.1.\
+\
+Qt licensed under the GNU LGPL version 3 is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the GNU LGPL version 3.\
+\
+Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the GNU LGPL version 2.1.\
+\
+Please see qt.io/licensing for an overview of Qt licensing.\
+\
+Copyright (C) 2017 The Qt Company Ltd and other contributors.\
+\
+Qt and the Qt logo are trademarks of The Qt Company Ltd.\
+\
+Qt is The Qt Company Ltd product developed as an open source project. See qt.io for more information.\
+\
+
\b Twisted\
\
From 09629f91969e71a3c8b08fa7bf974ed0a9cf867a Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Tue, 8 May 2018 21:44:40 +0200
Subject: [PATCH 51/80] Add https url in 'failed-to-load-server-list-error'
message
---
syncplay/messages_de.py | 2 +-
syncplay/messages_en.py | 2 +-
syncplay/messages_it.py | 2 +-
syncplay/messages_ru.py | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index eac5b70..3f4905e 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -149,7 +149,7 @@ de = {
"no-media-directories-error" : u"No media directories have been set. For shared playlist and file switching features to work properly please select File->Set Media Directories and specify where Syncplay should look to find media files.", # TODO: Translate
"cannot-find-directory-error" : u"Could not find media directory '{}'. To update your list of media directories please select File->Set Media Directories from the menu bar and specify where Syncplay should look to find media files.", # 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.",
+ "failed-to-load-server-list-error" : u"Konnte die Liste der öffentlichen Server nicht laden. Bitte besuche https://www.syncplay.pl/ [Englisch] mit deinem Browser.",
# Client arguments
"argument-description" : u'Syncplay ist eine Anwendung um mehrere MPlayer, MPC-HC, MPC-BE und VLC-Instanzen über das Internet zu synchronisieren.',
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index 2dc14a5..94f858e 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -152,7 +152,7 @@ en = {
"no-media-directories-error" : u"No media directories have been set. For shared playlist and file switching features to work properly please select File->Set Media Directories and specify where Syncplay should look to find media files.",
"cannot-find-directory-error" : u"Could not find media directory '{}'. To update your list of media directories please select File->Set Media Directories from the menu bar and specify where Syncplay should look to find media files.",
- "failed-to-load-server-list-error" : u"Failed to load public server list. Please visit http://www.syncplay.pl/ in your browser.",
+ "failed-to-load-server-list-error" : u"Failed to load public server list. Please visit https://www.syncplay.pl/ in your browser.",
# Client arguments
"argument-description" : 'Solution to synchronize playback of multiple media player instances over the network.',
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index 2de7b79..f73e6d0 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -152,7 +152,7 @@ it = {
"no-media-directories-error" : u"Nessuna cartella multimediale è stata configurata. Per permettere il corretto funzionamento delle playlist condivise e la selezione automatica dei file, naviga in File->Imposta cartelle multimediali e specifica dove Syncplay deve ricercare i file multimediali.",
"cannot-find-directory-error" : u"Impossibile trovare la cartella multimediale '{}'. Per aggiornare la lista delle cartelle multimediali seleziona File->Imposta cartelle multimediali dalla barra dei menù e specifica dove Syncplay deve ricercare i file multimediali.",
- "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita http://www.syncplay.pl/ con il tuo browser.",
+ "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita https://www.syncplay.pl/ con il tuo browser.",
# Client arguments
"argument-description" : u'Programma per sincronizzare la riproduzione di media player multipli attraverso la rete.',
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index c235946..4070105 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -155,7 +155,7 @@ ru = {
"no-media-directories-error" : u"Вы не указали папки воспроизведения. Для корректной работы зайдите через выпадающее меню в Файл->Папки воспроизведения и укажите нужные каталоги.",
"cannot-find-directory-error" : u"Не удалось найти папку воспроизведения '{}'. Для обновления списка папок, через выпадающее меню, перейдите в Файл->Папки воспроизведения и укажите нужные каталоги.",
- "failed-to-load-server-list-error" : u"Не удалось загрузить список публичных серверов. Откройте http://www.syncplay.pl/ через браузер.",
+ "failed-to-load-server-list-error" : u"Не удалось загрузить список публичных серверов. Откройте https://www.syncplay.pl/ через браузер.",
# Client arguments
"argument-description" : u'Решение для синхронного воспроизведения в VLC, MPlayer или MPC-HC/BE через Интернет.',
From 44967b120305e3f85e59234f7bd4c9db9abaf6e3 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Fri, 11 May 2018 22:56:30 +0200
Subject: [PATCH 52/80] Shows server list update error when in debug mode
---
syncplay/ui/GuiConfiguration.py | 1 +
syncplay/utils.py | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index f46af65..fdf8724 100755
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -20,6 +20,7 @@ class GuiConfiguration:
self.config = config
self._availablePlayerPaths = []
self.error = error
+ constants.DEBUG_MODE = config['debug']
def run(self):
if QCoreApplication.instance() is None:
diff --git a/syncplay/utils.py b/syncplay/utils.py
index 72fa947..17d7fcc 100644
--- a/syncplay/utils.py
+++ b/syncplay/utils.py
@@ -14,6 +14,7 @@ import ast
import unicodedata
import platform
import subprocess
+import traceback
folderSearchEnabled = True
@@ -386,7 +387,11 @@ def getListOfPublicServers():
else:
raise IOError
except:
- raise IOError(getMessage("failed-to-load-server-list-error"))
+ if constants.DEBUG_MODE == True:
+ traceback.print_exc()
+ raise
+ else:
+ raise IOError(getMessage("failed-to-load-server-list-error"))
class RoomPasswordProvider(object):
CONTROLLED_ROOM_REGEX = re.compile("^\+(.*):(\w{12})$")
From e712f39f3fdd4457001e525ddae9dcd36096142f Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 28 May 2018 15:00:17 +0200
Subject: [PATCH 53/80] Use requests instead of urllib in
getListOfPublicServers and checkForUpdate
---
.travis.yml | 1 +
buildPy2app.py | 2 +-
buildPy2exe.py | 4 ++--
resources/third-party-notices.rtf | 16 +++++++++++++++-
syncplay/client.py | 20 ++++++++++++--------
syncplay/utils.py | 14 +++++++++-----
6 files changed, 40 insertions(+), 17 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index fc84525..018a443 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -29,6 +29,7 @@ before_install:
install:
- pip install twisted appnope
+- pip install -U https://github.com/requests/requests/zipball/master
#- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2
#- cd syncplay-qtpy-PySide2
#- git checkout qtpy-pyside2
diff --git a/buildPy2app.py b/buildPy2app.py
index f889c3d..74cb424 100644
--- a/buildPy2app.py
+++ b/buildPy2app.py
@@ -15,7 +15,7 @@ DATA_FILES = [
]
OPTIONS = {
'iconfile':'resources/icon.icns',
- 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets'},
+ 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets', 'certifi'},
'excludes': {'PySide', 'PySide.QtCore', 'PySide.QtUiTools', 'PySide.QtGui'},
'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib'],
'plist': {
diff --git a/buildPy2exe.py b/buildPy2exe.py
index bff96a4..881667c 100755
--- a/buildPy2exe.py
+++ b/buildPy2exe.py
@@ -721,8 +721,8 @@ info = dict(
options={'py2exe': {
'dist_dir': OUT_DIR,
'packages': 'PySide2.QtUiTools',
- 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide2, liburl, ast, unicodedata',
- 'excludes': 'venv, _ssl, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter',
+ 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide2, liburl, ast, unicodedata, _ssl',
+ 'excludes': 'venv, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter',
'dll_excludes': 'msvcr71.dll, MSVCP90.dll, POWRPROF.dll',
'optimize': 2,
'compressed': 1
diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf
index 5ef095d..e67066e 100644
--- a/resources/third-party-notices.rtf
+++ b/resources/third-party-notices.rtf
@@ -208,4 +208,18 @@ furnished to do so, subject to the following conditions:\
The above copyright notice and this permission notice shall be included in\
all copies or substantial portions of the Software.\
\
-}
\ No newline at end of file
+
+\b Requests\
+\
+
+\b0 Copyright 2018 Kenneth Reitz\
+\
+Licensed under the Apache License, Version 2.0 (the \'93License\'94); you may not use this file\
+except in compliance with the License. You may obtain a copy of the License at\
+\
+http://www.apache.org/licenses/LICENSE-2.0\
+\
+Unless required by applicable law or agreed to in writing, software distributed under the \
+License is distributed on an \'93AS IS\'94 BASIS, WITHOUT WARRANTIES OR CONDI-\
+TIONS OF ANY KIND, either express or implied. See the License for the specific lang-\
+uage governing permissions and limitations under the License.}
\ No newline at end of file
diff --git a/syncplay/client.py b/syncplay/client.py
index e8cb8b5..665da98 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -11,7 +11,8 @@ from twisted.internet import reactor, task, defer, threads
from functools import wraps
from copy import deepcopy
from syncplay.protocols import SyncClientProtocol
-from syncplay import utils, constants
+from syncplay import utils, constants, version
+from syncplay.utils import isMacOS
from syncplay.messages import getMissingStrings, getMessage
from syncplay.constants import PRIVACY_SENDHASHED_MODE, PRIVACY_DONTSEND_MODE, \
PRIVACY_HIDDENFILENAME
@@ -910,12 +911,15 @@ class SyncplayClient(object):
def checkForUpdate(self, userInitiated):
try:
- import urllib, syncplay, sys, messages, json
- params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number,
- 'language': messages.messages["CURRENT"], 'platform': sys.platform, 'userInitiated': userInitiated})
-
- f = urllib.urlopen(constants.SYNCPLAY_UPDATE_URL.format(params))
- response = f.read()
+ import syncplay, sys, messages, urllib, json
+ params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, 'language': messages.messages["CURRENT"], 'platform': sys.platform, 'userInitiated': userInitiated})
+ if isMacOS():
+ import requests
+ response = requests.get(constants.SYNCPLAY_UPDATE_URL.format(params))
+ response = response.text
+ else:
+ f = urllib.urlopen(constants.SYNCPLAY_UPDATE_URL.format(params))
+ response = f.read()
response = response.replace("","").replace("
","").replace("
","").replace("“","\"").replace("”","\"") # Fix Wordpress
response = json.loads(response)
publicServers = None
@@ -926,7 +930,7 @@ class SyncplayClient(object):
return response["version-status"], response["version-message"] if response.has_key("version-message")\
else None, response["version-url"] if response.has_key("version-url") else None, publicServers
except:
- return "failed", getMessage("update-check-failed-notification").format(syncplay.version), constants.SYNCPLAY_DOWNLOAD_URL, None
+ return "failed", getMessage("update-check-failed-notification").format(version), constants.SYNCPLAY_DOWNLOAD_URL, None
class _WarningManager(object):
def __init__(self, player, userlist, ui, client):
diff --git a/syncplay/utils.py b/syncplay/utils.py
index 17d7fcc..5ad8b6c 100644
--- a/syncplay/utils.py
+++ b/syncplay/utils.py
@@ -374,11 +374,15 @@ def open_system_file_browser(path):
def getListOfPublicServers():
try:
- import urllib, syncplay, sys, messages, json
- params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number,
- 'language': messages.messages["CURRENT"]})
- f = urllib.urlopen(constants.SYNCPLAY_PUBLIC_SERVER_LIST_URL.format(params))
- response = f.read()
+ import syncplay, sys, messages, urllib
+ params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, 'language': messages.messages["CURRENT"]})
+ if isMacOS():
+ import requests
+ response = requests.get(constants.SYNCPLAY_PUBLIC_SERVER_LIST_URL.format(params))
+ response = response.text
+ else:
+ f = urllib.urlopen(constants.SYNCPLAY_PUBLIC_SERVER_LIST_URL.format(params))
+ response = f.read()
response = response.replace("","").replace("
","").replace("
","").replace("“","'").replace("”","'").replace(":’","'").replace("’","'").replace("′","'").replace("\n","").replace("\r","") # Fix Wordpress
response = ast.literal_eval(response)
From ce8684bbd8a140e21de4d3896e7e1c49500ede5b Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 2 Jun 2018 15:08:08 +0200
Subject: [PATCH 54/80] Patch QSocketNotifier call syntax
---
syncplay/vendor/qt5reactor.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/syncplay/vendor/qt5reactor.py b/syncplay/vendor/qt5reactor.py
index cde2b5e..47cd220 100644
--- a/syncplay/vendor/qt5reactor.py
+++ b/syncplay/vendor/qt5reactor.py
@@ -123,8 +123,8 @@ class TwistedSocketNotifier(QObject):
QObject.__init__(self, parent)
self.reactor = reactor
self.watcher = watcher
- fd = self.watcher.fileno()
- self.notifier = QSocketNotifier(watcher, socketType, parent)
+ fd = watcher.fileno()
+ self.notifier = QSocketNotifier(fd, socketType, parent)
self.notifier.setEnabled(True)
if socketType == QSocketNotifier.Read:
self.fn = self.read
From 89c1f2089a83397933a1e0c69b65a1db16a1e58b Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sat, 2 Jun 2018 16:57:09 +0200
Subject: [PATCH 55/80] Revert "Patch QSocketNotifier", keep using former
PySide2 wheels
This reverts commit ce8684bbd8a140e21de4d3896e7e1c49500ede5b.
---
syncplay/vendor/qt5reactor.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/syncplay/vendor/qt5reactor.py b/syncplay/vendor/qt5reactor.py
index 47cd220..cde2b5e 100644
--- a/syncplay/vendor/qt5reactor.py
+++ b/syncplay/vendor/qt5reactor.py
@@ -123,8 +123,8 @@ class TwistedSocketNotifier(QObject):
QObject.__init__(self, parent)
self.reactor = reactor
self.watcher = watcher
- fd = watcher.fileno()
- self.notifier = QSocketNotifier(fd, socketType, parent)
+ fd = self.watcher.fileno()
+ self.notifier = QSocketNotifier(watcher, socketType, parent)
self.notifier.setEnabled(True)
if socketType == QSocketNotifier.Read:
self.fn = self.read
From 62d49f53eb3dccc4cbcd94a17f2ddca8d6f089f5 Mon Sep 17 00:00:00 2001
From: Flisk
Date: Tue, 5 Jun 2018 17:31:39 +0200
Subject: [PATCH 56/80] Refactor config path logic
---
syncplay/ui/ConfigurationGetter.py | 29 +++++++++++++++--------------
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py
index 72cd879..1e06360 100755
--- a/syncplay/ui/ConfigurationGetter.py
+++ b/syncplay/ui/ConfigurationGetter.py
@@ -322,21 +322,22 @@ class ConfigurationGetter(object):
def _getConfigurationFilePath(self):
configFile = self._checkForPortableFile()
- if not configFile:
- for name in constants.CONFIG_NAMES:
- if configFile and os.path.isfile(configFile):
- break
- if os.name <> 'nt':
- configFile = os.path.join(os.getenv('HOME', '.'), name)
- else:
- configFile = os.path.join(os.getenv('APPDATA', '.'), name)
- if configFile and not os.path.isfile(configFile):
- if os.name <> 'nt':
- configFile = os.path.join(os.getenv('HOME', '.'), constants.DEFAULT_CONFIG_NAME_LINUX)
- else:
- configFile = os.path.join(os.getenv('APPDATA', '.'), constants.DEFAULT_CONFIG_NAME_WINDOWS)
+ if configFile:
+ return configFile
+ for name in constants.CONFIG_NAMES:
+ configFile = self._expandConfigPath(name)
+ if os.path.isfile(configFile):
+ return configFile
+ return self._expandConfigPath()
- return configFile
+ def _expandConfigPath(self, name = None):
+ if os.name != 'nt':
+ prefix = os.getenv('HOME', '.')
+ default_name = constants.DEFAULT_CONFIG_NAME_LINUX
+ else:
+ prefix = os.getenv('APPDATA', '.')
+ default_name = constants.DEFAULT_CONFIG_NAME_WINDOWS
+ return os.path.join(prefix, name or default_name)
def _parseConfigFile(self, iniPath, createConfig=True):
parser = SafeConfigParserUnicode()
From ff3df0ae05757f26320f155c911d9fbec5208fb7 Mon Sep 17 00:00:00 2001
From: Flisk
Date: Tue, 5 Jun 2018 17:52:27 +0200
Subject: [PATCH 57/80] Default to XDG_CONFIG_HOME on non-'nt' platforms
The default config path on Linux becomes `~/.config/syncplay.ini`,
provided the user hasn't changed her $XDG_CONFIG_HOME. Existing
installations continue to read their config from `~/.syncplay`, should
that file exist.
---
syncplay/constants.py | 3 +--
syncplay/ui/ConfigurationGetter.py | 19 +++++++++++++------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/syncplay/constants.py b/syncplay/constants.py
index 122b491..f999ed0 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -8,8 +8,7 @@ MPC_OSD_POSITION = 1 #Right corner, 1 for left
MPLAYER_OSD_LEVEL = 1
UI_TIME_FORMAT = "[%X] "
CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last
-DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini"
-DEFAULT_CONFIG_NAME_LINUX = ".syncplay"
+DEFAULT_CONFIG_NAME = "syncplay.ini"
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
diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py
index 1e06360..068d321 100755
--- a/syncplay/ui/ConfigurationGetter.py
+++ b/syncplay/ui/ConfigurationGetter.py
@@ -325,19 +325,26 @@ class ConfigurationGetter(object):
if configFile:
return configFile
for name in constants.CONFIG_NAMES:
- configFile = self._expandConfigPath(name)
+ configFile = self._expandConfigPath(name, xdg = False)
if os.path.isfile(configFile):
return configFile
return self._expandConfigPath()
- def _expandConfigPath(self, name = None):
+ def _expandConfigPath(self, name = None, xdg = True):
if os.name != 'nt':
- prefix = os.getenv('HOME', '.')
- default_name = constants.DEFAULT_CONFIG_NAME_LINUX
+ if xdg:
+ prefix = self._getXdgConfigHome()
+ else:
+ prefix = os.getenv('HOME', '.')
else:
prefix = os.getenv('APPDATA', '.')
- default_name = constants.DEFAULT_CONFIG_NAME_WINDOWS
- return os.path.join(prefix, name or default_name)
+ return os.path.join(prefix, name or constants.DEFAULT_CONFIG_NAME)
+
+ def _getXdgConfigHome(self):
+ path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config'))
+ if not os.path.isdir(path):
+ os.mkdir(path, 0o755)
+ return path
def _parseConfigFile(self, iniPath, createConfig=True):
parser = SafeConfigParserUnicode()
From 4bf7db5a5d50327947abad658b1a8b4c5111e2e8 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 9 Jun 2018 15:29:19 +0100
Subject: [PATCH 58/80] Fix VLC error when HTTPS URL contains square brackets
(#187)
---
syncplay/players/vlc.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py
index 316b3a9..f7392ec 100755
--- a/syncplay/players/vlc.py
+++ b/syncplay/players/vlc.py
@@ -145,7 +145,7 @@ class VlcPlayer(BasePlayer):
def getMRL(self, fileURL):
if utils.isURL(fileURL):
fileURL = fileURL.encode('utf8')
- fileURL = urllib.quote(fileURL, safe="%/:=&?~#+!$,;'@()*[]")
+ fileURL = urllib.quote(fileURL, safe="%/:=&?~#+!$,;'@()*")
return fileURL
fileURL = fileURL.replace(u'\\', u'/')
From 615283b84da55ee1c7375a7e23e61df3be338830 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Wed, 13 Jun 2018 14:25:45 +0200
Subject: [PATCH 59/80] Travis: use PySide2 TP with Qt 5.11.0
---
.travis.yml | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 018a443..a726f16 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,15 +10,13 @@ script:
before_install:
- brew update
-- curl -O http://syncplay.s3.amazonaws.com/qt595.rb
-- mv qt595.rb qt.rb
-- brew install ./qt.rb
+- brew install qt
- which python
- which pip
-- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl
-- pip install PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl
-- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.9.dylib /usr/local/lib/
-- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.9.dylib /usr/local/lib/
+- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.11.0-5.11.0-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.11.0-5.11.0-cp27-cp27m-macosx_10_11_x86_64.whl
+- pip install PySide2-5.11.0-5.11.0-cp27-cp27m-macosx_10_11_x86_64.whl
+- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.11.dylib /usr/local/lib/
+- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.11.dylib /usr/local/lib/
#- python -c "from PySide2 import QtCore"
- python -c "from PySide2.QtCore import __version__; print __version__"
- hg clone https://alby128@bitbucket.org/alby128/py2app
From 4c85d49c9c498376fa8370e47c202b210dde475a Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Wed, 13 Jun 2018 15:10:35 +0200
Subject: [PATCH 60/80] Fix syncplay-mediasearchdirectories-label in all
languages
---
syncplay/messages_de.py | 3 ++-
syncplay/messages_en.py | 3 ++-
syncplay/messages_ru.py | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index 3f4905e..ea987db 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -218,7 +218,8 @@ de = {
"misc-label" : u"Diverse",
"core-behaviour-title" : u"Verhalten des Raumes",
"syncplay-internals-title" : u"Syncplay intern",
- "syncplay-mediasearchdirectories-title" : u"In diesen Verzeichnissen nach Medien suchen (ein Pfad pro Zeile)",
+ "syncplay-mediasearchdirectories-title" : u"In diesen Verzeichnissen nach Medien suchen", #needs to be checked
+ "syncplay-mediasearchdirectories-label" : u"In diesen Verzeichnissen nach Medien suchen (ein Pfad pro Zeile)",
"sync-label" : u"Synchronisation",
"sync-otherslagging-title" : u"Wenn andere laggen...",
"sync-youlaggging-title" : u"Wenn du laggst...",
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index 94f858e..6f5d085 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -223,7 +223,8 @@ en = {
"misc-label" : u"Misc",
"core-behaviour-title" : "Core room behaviour",
"syncplay-internals-title" : u"Syncplay internals",
- "syncplay-mediasearchdirectories-title" : u"Directories to search for media (one path per line)",
+ "syncplay-mediasearchdirectories-title" : u"Directories to search for media",
+ "syncplay-mediasearchdirectories-label" : u"Directories to search for media (one path per line)",
"sync-label" : "Sync",
"sync-otherslagging-title" : "If others are lagging behind...",
"sync-youlaggging-title" : "If you are lagging behind...",
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index 4070105..ca790d6 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -226,7 +226,8 @@ ru = {
"misc-label" : u"Прочее",
"core-behaviour-title" : u"Информация о файлах",
"syncplay-internals-title" : u"Системные настройки",
- "syncplay-mediasearchdirectories-title" : u"Папки воспроизведения (один путь на строку)",
+ "syncplay-mediasearchdirectories-title" : u"Папки воспроизведения", #needs to be checked
+ "syncplay-mediasearchdirectories-label" : u"Папки воспроизведения (один путь на строку)",
"sync-label" : u"Синхронизация",
"sync-otherslagging-title" : u"Опережение",
"sync-youlaggging-title" : u"Отставание",
From 23f59f95ea3e7d6504e03949a1400be452166d17 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Wed, 13 Jun 2018 16:14:08 +0200
Subject: [PATCH 61/80] Update py2app script for Qt 5.11
---
buildPy2app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/buildPy2app.py b/buildPy2app.py
index 74cb424..0821adf 100644
--- a/buildPy2app.py
+++ b/buildPy2app.py
@@ -17,7 +17,7 @@ OPTIONS = {
'iconfile':'resources/icon.icns',
'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets', 'certifi'},
'excludes': {'PySide', 'PySide.QtCore', 'PySide.QtUiTools', 'PySide.QtGui'},
- 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib'],
+ 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib', 'styles/libqmacstyle.dylib'],
'plist': {
'CFBundleName':'Syncplay',
'CFBundleShortVersionString':syncplay.version,
From 6c306137587ebb3729ad56f589db64ce78249b1c Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Wed, 13 Jun 2018 17:01:38 +0200
Subject: [PATCH 62/80] Edit third-party-notices to include Qt 5.11
---
resources/third-party-notices.rtf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf
index e67066e..436ba5f 100644
--- a/resources/third-party-notices.rtf
+++ b/resources/third-party-notices.rtf
@@ -47,7 +47,7 @@ along with this program. If not, see .\
\b Qt
\b0 \
\
-This program uses Qt versions 5.6 and 5.9 under the GNU LGPL version 3.\
+This program uses Qt versions 5.6 and 5.11 under the GNU LGPL version 3.\
\
Qt is a C++ toolkit for cross-platform application development.\
\
From fc809574f456193cb9cd5d7bbcba8118bd9248d5 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Thu, 14 Jun 2018 17:08:34 +0200
Subject: [PATCH 63/80] Patch QSocketNotifier syntax excluding macOS and
Windows on PySide2
---
syncplay/vendor/qt5reactor.py | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/syncplay/vendor/qt5reactor.py b/syncplay/vendor/qt5reactor.py
index cde2b5e..f70d16b 100644
--- a/syncplay/vendor/qt5reactor.py
+++ b/syncplay/vendor/qt5reactor.py
@@ -106,6 +106,8 @@ Subsequent port by therve
import sys
+from syncplay.utils import isMacOS, isWindows
+from syncplay.vendor.Qt import IsPySide2
from syncplay.vendor.Qt.QtCore import (
QCoreApplication, QEventLoop, QObject, QSocketNotifier, QTimer, Signal)
from twisted.internet import posixbase
@@ -124,7 +126,12 @@ class TwistedSocketNotifier(QObject):
self.reactor = reactor
self.watcher = watcher
fd = self.watcher.fileno()
- self.notifier = QSocketNotifier(watcher, socketType, parent)
+ if (isMacOS() and IsPySide2):
+ self.notifier = QSocketNotifier(watcher, socketType, parent)
+ elif (isWindows() and IsPySide2):
+ self.notifier = QSocketNotifier(watcher, socketType, parent)
+ else:
+ self.notifier = QSocketNotifier(fd, socketType, parent)
self.notifier.setEnabled(True)
if socketType == QSocketNotifier.Read:
self.fn = self.read
From ad699ac1c5cc72f517c372d6ba9c07e25e4a3e3f Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Thu, 14 Jun 2018 18:14:29 +0200
Subject: [PATCH 64/80] Manually check for updates if automaticUpdateCheck
fails
---
syncplay/ui/gui.py | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 770a732..5d2c5e4 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -1559,16 +1559,20 @@ class MainWindow(QtWidgets.QMainWindow):
currentDateTimeValue = QDateTime.currentDateTime()
if not self.config['checkForUpdatesAutomatically']:
return
- if self.config['lastCheckedForUpdates']:
- configLastChecked = datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f")
- if self.lastCheckedForUpdates is None or configLastChecked > self.lastCheckedForUpdates.toPython():
- self.lastCheckedForUpdates = QDateTime.fromString(self.config["lastCheckedForUpdates"],'yyyy-MM-dd HH-mm-ss')
- if self.lastCheckedForUpdates is None:
- self.checkForUpdates()
- else:
- timeDelta = currentDateTimeValue.toPython() - self.lastCheckedForUpdates.toPython()
- if timeDelta.total_seconds() > constants.AUTOMATIC_UPDATE_CHECK_FREQUENCY:
+ try:
+ if self.config['lastCheckedForUpdates']:
+ configLastChecked = datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f")
+ if self.lastCheckedForUpdates is None or configLastChecked > self.lastCheckedForUpdates.toPython():
+ self.lastCheckedForUpdates = QDateTime.fromString(self.config["lastCheckedForUpdates"],'yyyy-MM-dd HH-mm-ss')
+ if self.lastCheckedForUpdates is None:
self.checkForUpdates()
+ else:
+ timeDelta = currentDateTimeValue.toPython() - self.lastCheckedForUpdates.toPython()
+ if timeDelta.total_seconds() > constants.AUTOMATIC_UPDATE_CHECK_FREQUENCY:
+ self.checkForUpdates()
+ except:
+ self.showDebugMessage(u"Automatic check for updates failed. An update check was manually trigggered.")
+ self.checkForUpdates()
def userCheckForUpdates(self):
self.checkForUpdates(userInitiated=True)
From d510bf080e163b4095f06fbb60ab3b89dd57abde Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Thu, 14 Jun 2018 23:57:36 +0200
Subject: [PATCH 65/80] AppVeyor: revert to PySide 1.x
---
.appveyor.yml | 9 +--------
buildPy2exe.py | 6 +++---
2 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/.appveyor.yml b/.appveyor.yml
index 6c9fcf3..dd7ea18 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -9,9 +9,7 @@ init:
- set PATH=C:\Miniconda;C:\Miniconda\Scripts;C:\Program Files (x86)\NSIS;%PATH%
- conda create -n syncplay -y
- activate syncplay
- - conda install python=2.7.13 -y
- - conda install pywin32 -y
- - conda install -c conda-forge pyside2 -y
+ - conda install python pywin32 pyside -y
- pip install twisted py2exe_py2 zope.interface
- type nul > C:\Miniconda\envs\syncplay\lib\site-packages\zope\__init__.py
- pip freeze
@@ -21,12 +19,7 @@ install:
- cd %APPVEYOR_BUILD_FOLDER%
- for /F "tokens=2 delims='" %%a in ('findstr version syncplay\__init__.py') do @set ver=%%a
- python buildPy2exe.py
- - del syncplay_v%ver%\lib\api-*
- - del syncplay_v%ver%\lib\DNSAPI.dll
- - del syncplay_v%ver%\lib\IPHLPAPI.dll
- del syncplay_v%ver%\lib\MPR.dll
- - mkdir syncplay_v%ver%\platforms
- - copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\
- type nul > syncplay_v%ver%\syncplay.ini
- copy resources\win_lua_note.txt syncplay_v%ver%\"VLC LUA Script installation.txt"
diff --git a/buildPy2exe.py b/buildPy2exe.py
index 881667c..310f765 100755
--- a/buildPy2exe.py
+++ b/buildPy2exe.py
@@ -720,8 +720,8 @@ info = dict(
# console=['syncplayServer.py', {"script":"syncplayClient.py", "icon_resources":[(1, "resources\\icon.ico")], 'dest_base': "Syncplay"}],
options={'py2exe': {
'dist_dir': OUT_DIR,
- 'packages': 'PySide2.QtUiTools',
- 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide2, liburl, ast, unicodedata, _ssl',
+ 'packages': 'PySide.QtUiTools',
+ 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide, liburl, ast, unicodedata',
'excludes': 'venv, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter',
'dll_excludes': 'msvcr71.dll, MSVCP90.dll, POWRPROF.dll',
'optimize': 2,
@@ -733,5 +733,5 @@ info = dict(
cmdclass = {"py2exe": build_installer},
)
-sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-i PySide2.QtCore', '-p PySide2.QtGui', '-i PySide2.QtWidgets'])
+sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-p PySide.QtGui'])
setup(**info)
From a4503329b6bcf5a348066b657aa98af245c6cc2e Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 15 Jun 2018 00:13:18 +0200
Subject: [PATCH 66/80] Restore PySide 1.x third party notice for Windows
---
resources/third-party-notices.rtf | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf
index 436ba5f..12e2102 100644
--- a/resources/third-party-notices.rtf
+++ b/resources/third-party-notices.rtf
@@ -24,6 +24,27 @@ The above copyright notice and this permission notice shall be included in all\
copies or substantial portions of the Software.\
\
+\b PySide 1.2.1\
+
+\b0 \
+Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\
+Contact: PySide team \
+\
+This library is free software; you can redistribute it and/or\
+modify it under the terms of the GNU Lesser General Public\
+License as published by the Free Software Foundation; either\
+version 2.1 of the License, or (at your option) any later version.\
+This library is distributed in the hope that it will be useful,\
+but WITHOUT ANY WARRANTY; without even the implied warranty of\
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+Lesser General Public License for more details.\
+\
+\pard\pardeftab720\partightenfactor0
+\cf0 You should have received a copy of the GNU Lesser General Public License\
+along with this program. If not, see \
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
+\cf0 \
+
\b Qt for Python\
\b0 \
@@ -47,7 +68,7 @@ along with this program. If not, see .\
\b Qt
\b0 \
\
-This program uses Qt versions 5.6 and 5.11 under the GNU LGPL version 3.\
+This program uses Qt versions 4.8.7 and 5.11 under the GNU LGPL version 3.\
\
Qt is a C++ toolkit for cross-platform application development.\
\
From 245b9973939da33e9ddc8fade7c2e0b41dab5b3d Mon Sep 17 00:00:00 2001
From: Etoh
Date: Thu, 14 Jun 2018 22:04:52 +0100
Subject: [PATCH 67/80] Detect portable versions of MPC-HC, MPC-BE and VLC
---
syncplay/players/mpc.py | 8 +++++++-
syncplay/players/mpcbe.py | 8 +++++++-
syncplay/players/vlc.py | 5 +++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/syncplay/players/mpc.py b/syncplay/players/mpc.py
index 3d40308..313fbf4 100644
--- a/syncplay/players/mpc.py
+++ b/syncplay/players/mpc.py
@@ -496,7 +496,7 @@ class MPCHCAPIPlayer(BasePlayer):
@staticmethod
def getExpandedPath(path):
if os.path.isfile(path):
- if path.lower().endswith(u'mpc-hc.exe'.lower()) or path.lower().endswith(u'mpc-hc64.exe'.lower()) or path.lower().endswith(u'mpc-hc64_nvo.exe'.lower()) or path.lower().endswith(u'mpc-hc_nvo.exe'.lower()):
+ if path.lower().endswith(u'mpc-hc.exe'.lower()) or path.lower().endswith(u'mpc-hcportable.exe'.lower()) or path.lower().endswith(u'mpc-hc64.exe'.lower()) or path.lower().endswith(u'mpc-hc64_nvo.exe'.lower()) or path.lower().endswith(u'mpc-hc_nvo.exe'.lower()):
return path
if os.path.isfile(path + u"mpc-hc.exe"):
path += u"mpc-hc.exe"
@@ -504,6 +504,12 @@ class MPCHCAPIPlayer(BasePlayer):
if os.path.isfile(path + u"\\mpc-hc.exe"):
path += u"\\mpc-hc.exe"
return path
+ if os.path.isfile(path + u"mpc-hcportable.exe"):
+ path += u"mpc-hcportable.exe"
+ return path
+ if os.path.isfile(path + u"\\mpc-hcportable.exe"):
+ path += u"\\mpc-hcportable.exe"
+ return path
if os.path.isfile(path + u"mpc-hc_nvo.exe"):
path += u"mpc-hc_nvo.exe"
return path
diff --git a/syncplay/players/mpcbe.py b/syncplay/players/mpcbe.py
index 68b2074..900ace4 100644
--- a/syncplay/players/mpcbe.py
+++ b/syncplay/players/mpcbe.py
@@ -30,7 +30,7 @@ class MpcBePlayer(MPCHCAPIPlayer):
@staticmethod
def getExpandedPath(path):
if os.path.isfile(path):
- if path.lower().endswith(u'mpc-be.exe'.lower()) or path.lower().endswith(u'mpc-be64.exe'.lower()):
+ if path.lower().endswith(u'mpc-be.exe'.lower()) or path.lower().endswith(u'mpc-be64.exe'.lower() or path.lower().endswith(u'mpc-beportable.exe'.lower())):
return path
if os.path.isfile(path + u"mpc-be.exe"):
path += u"mpc-be.exe"
@@ -38,6 +38,12 @@ class MpcBePlayer(MPCHCAPIPlayer):
if os.path.isfile(path + u"\\mpc-be.exe"):
path += u"\\mpc-be.exe"
return path
+ if os.path.isfile(path + u"mpc-beportable.exe"):
+ path += u"mpc-beportable.exe"
+ return path
+ if os.path.isfile(path + u"\\mpc-beportable.exe"):
+ path += u"\\mpc-beportable.exe"
+ return path
if os.path.isfile(path + u"mpc-be64.exe"):
path += u"mpc-be64.exe"
return path
diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py
index f7392ec..9a0ebbb 100755
--- a/syncplay/players/vlc.py
+++ b/syncplay/players/vlc.py
@@ -285,6 +285,11 @@ class VlcPlayer(BasePlayer):
elif os.path.isfile(playerPath + u"\\vlc.exe"):
playerPath += u"\\vlc.exe"
return playerPath
+ elif os.path.isfile(playerPath + u"VLCPortable.exe"):
+ playerPath += u"VLCPortable.exe"
+ elif os.path.isfile(playerPath + u"\\VLCPortable.exe"):
+ playerPath += u"\\VLCPortable.exe"
+ return playerPath
if os.access(playerPath, os.X_OK):
return playerPath
for path in os.environ['PATH'].split(':'):
From 6eec4883162669567417e6e645e3f18a7172d0b7 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Fri, 15 Jun 2018 09:33:42 +0100
Subject: [PATCH 68/80] Fixed missing VLC playerPath return
---
syncplay/players/vlc.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py
index 9a0ebbb..1cc8943 100755
--- a/syncplay/players/vlc.py
+++ b/syncplay/players/vlc.py
@@ -287,6 +287,7 @@ class VlcPlayer(BasePlayer):
return playerPath
elif os.path.isfile(playerPath + u"VLCPortable.exe"):
playerPath += u"VLCPortable.exe"
+ return playerPath
elif os.path.isfile(playerPath + u"\\VLCPortable.exe"):
playerPath += u"\\VLCPortable.exe"
return playerPath
From e30eb7d6faef1209f1e550b4964bdc4c67f29735 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Fri, 15 Jun 2018 18:42:29 +0200
Subject: [PATCH 69/80] Remove unused Travis cache scripts
---
travis/cache-homebrew | 6 ------
travis/cache-python | 5 -----
travis/download-homebrew | 13 -------------
travis/download-python | 10 ----------
4 files changed, 34 deletions(-)
delete mode 100755 travis/cache-homebrew
delete mode 100755 travis/cache-python
delete mode 100755 travis/download-homebrew
delete mode 100755 travis/download-python
diff --git a/travis/cache-homebrew b/travis/cache-homebrew
deleted file mode 100755
index d9dcc38..0000000
--- a/travis/cache-homebrew
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-mkdir travis-cache
-if [ ! -f homebrew-cache.tar.gz ]; then
- tar czf travis-cache/homebrew-cache.tar.gz --directory /usr/local/Cellar pkg-config readline sqlite gdbm makedepend openssl python@2
-fi
diff --git a/travis/cache-python b/travis/cache-python
deleted file mode 100755
index f7d1e65..0000000
--- a/travis/cache-python
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-if [ ! -f python-cache.tar.gz ]; then
- tar czf travis-cache/python-cache.tar.gz --directory /usr/local/lib/python2.7 site-packages
-fi
diff --git a/travis/download-homebrew b/travis/download-homebrew
deleted file mode 100755
index dd23237..0000000
--- a/travis/download-homebrew
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-curl -L "https://dl.bintray.com/alby128/Syncplay/homebrew-cache.tar.gz" -o homebrew-cache.tar.gz
-if [ -f homebrew-cache.tar.gz ]; then
- if ! tar tf homebrew-cache.tar.gz &>/dev/null; then
- rm homebrew-cache.tar.gz
- exit 0
- fi
- tar zxf homebrew-cache.tar.gz --directory /usr/local/Cellar
- brew unlink pkg-config
- brew link pkg-config
- brew link --force readline sqlite gdbm makedepend python@2
-fi
diff --git a/travis/download-python b/travis/download-python
deleted file mode 100755
index 870f07e..0000000
--- a/travis/download-python
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-curl -L "https://dl.bintray.com/alby128/Syncplay/python-cache.tar.gz" -o python-cache.tar.gz
-if [ -f python-cache.tar.gz ]; then
- if ! tar tf python-cache.tar.gz &>/dev/null; then
- rm python-cache.tar.gz
- exit 0
- fi
- tar zxf python-cache.tar.gz --directory /usr/local/lib/python2.7
-fi
From 19ec28a95eda3b410fa81d3bb9c1229bb2935da9 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Sat, 16 Jun 2018 14:16:04 +0200
Subject: [PATCH 70/80] Redesign About dialog to show environment info
---
syncplay/messages_de.py | 2 +-
syncplay/messages_en.py | 2 +-
syncplay/messages_it.py | 2 +-
syncplay/messages_ru.py | 2 +-
syncplay/ui/gui.py | 27 +++++++++++++++------------
5 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py
index ea987db..65b7a51 100644
--- a/syncplay/messages_de.py
+++ b/syncplay/messages_de.py
@@ -311,7 +311,7 @@ de = {
#About dialog - TODO: Translate
"about-menu-label": u"&About Syncplay",
"about-dialog-title": u"About Syncplay",
- "about-dialog-release": u"Version {} release {} on {}",
+ "about-dialog-release": u"Version {} release {}",
"about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0",
"about-dialog-license-button": u"License",
"about-dialog-dependencies": u"Dependencies",
diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py
index 6f5d085..6e0fcbb 100644
--- a/syncplay/messages_en.py
+++ b/syncplay/messages_en.py
@@ -316,7 +316,7 @@ en = {
#About dialog
"about-menu-label": u"&About Syncplay",
"about-dialog-title": u"About Syncplay",
- "about-dialog-release": u"Version {} release {} on {}",
+ "about-dialog-release": u"Version {} release {}",
"about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0",
"about-dialog-license-button": u"License",
"about-dialog-dependencies": u"Dependencies",
diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py
index f73e6d0..d893421 100644
--- a/syncplay/messages_it.py
+++ b/syncplay/messages_it.py
@@ -316,7 +316,7 @@ it = {
#About dialog
"about-menu-label": u"&Informazioni su Syncplay",
"about-dialog-title": u"Informazioni su Syncplay",
- "about-dialog-release": u"Versione {} release {} con {}",
+ "about-dialog-release": u"Versione {} release {}",
"about-dialog-license-text" : u"Rilasciato sotto Apache License, Version 2.0",
"about-dialog-license-button": u"Licenza",
"about-dialog-dependencies": u"Dipendenze",
diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py
index ca790d6..975a397 100644
--- a/syncplay/messages_ru.py
+++ b/syncplay/messages_ru.py
@@ -319,7 +319,7 @@ ru = {
#About dialog - TODO: Translate
"about-menu-label": u"&About Syncplay",
"about-dialog-title": u"About Syncplay",
- "about-dialog-release": u"Version {} release {} on {}",
+ "about-dialog-release": u"Version {} release {}",
"about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0",
"about-dialog-license-button": u"License",
"about-dialog-dependencies": u"Dependencies",
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 5d2c5e4..7e5d1ba 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -1,6 +1,7 @@
from syncplay.vendor import Qt
-from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, __binding_version__, IsPySide, IsPySide2
+from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, __binding_version__, __qt_version__, IsPySide, IsPySide2
from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime
+from platform import python_version
if IsPySide2:
from PySide2.QtCore import QStandardPaths
from syncplay import utils, constants, version, release_number
@@ -106,33 +107,35 @@ class AboutDialog(QtWidgets.QDialog):
super(AboutDialog, self).__init__(parent)
if isMacOS():
self.setWindowTitle("")
+ self.setWindowFlags(Qt.Dialog | Qt.WindowTitleHint | Qt.WindowCloseButtonHint | Qt.CustomizeWindowHint)
else:
self.setWindowTitle(getMessage("about-dialog-title"))
if isWindows():
self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)
nameLabel = QtWidgets.QLabel("Syncplay")
- nameLabel.setFont(QtGui.QFont("Helvetica", 20))
+ nameLabel.setFont(QtGui.QFont("Helvetica", 18))
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") + "
")
+ versionLabel = QtWidgets.QLabel("" + getMessage("about-dialog-release").format(version, release_number) + "
Python " + python_version() + " - " + __binding__ + " " + __binding_version__ + " - Qt " + __qt_version__ + "
")
+ licenseLabel = QtWidgets.QLabel("Copyright © 2012–2018 Syncplay
" + getMessage("about-dialog-license-text") + "
")
aboutIconPixmap = QtGui.QPixmap(resourcespath + u"syncplay.png")
aboutIconLabel = QtWidgets.QLabel()
- aboutIconLabel.setPixmap(aboutIconPixmap.scaled(120, 120, Qt.KeepAspectRatio))
+ aboutIconLabel.setPixmap(aboutIconPixmap.scaled(65, 65, Qt.KeepAspectRatio))
aboutLayout = QtWidgets.QGridLayout()
- aboutLayout.addWidget(aboutIconLabel, 0, 0, 4, 2)
- aboutLayout.addWidget(nameLabel, 0, 2, 1, 2)
- aboutLayout.addWidget(linkLabel, 1, 2, 1, 2)
- aboutLayout.addWidget(versionLabel, 2, 2, 1, 2)
- aboutLayout.addWidget(licenseLabel, 3, 2, 1, 2)
+ aboutLayout.addWidget(aboutIconLabel, 0, 0, 3, 4, Qt.AlignHCenter)
+ aboutLayout.addWidget(nameLabel, 3, 0, 1, 4)
+ aboutLayout.addWidget(linkLabel, 4, 0, 1, 4)
+ aboutLayout.addWidget(versionLabel, 5, 0, 1, 4)
+ aboutLayout.addWidget(licenseLabel, 6, 0, 1, 4)
licenseButton = QtWidgets.QPushButton(getMessage("about-dialog-license-button"))
licenseButton.setAutoDefault(False)
licenseButton.clicked.connect(self.openLicense)
- aboutLayout.addWidget(licenseButton, 4, 2)
+ aboutLayout.addWidget(licenseButton, 7, 0, 1, 2)
dependenciesButton = QtWidgets.QPushButton(getMessage("about-dialog-dependencies"))
dependenciesButton.setAutoDefault(False)
dependenciesButton.clicked.connect(self.openDependencies)
- aboutLayout.addWidget(dependenciesButton, 4, 3)
+ aboutLayout.addWidget(dependenciesButton, 7, 2, 1, 2)
+ aboutLayout.setVerticalSpacing(10)
aboutLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
self.setSizeGripEnabled(False)
self.setLayout(aboutLayout)
From 32f589b9e2c43bccc7620ed3ebbe91b98e88f490 Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Sun, 17 Jun 2018 14:41:09 +0200
Subject: [PATCH 71/80] Fix third-party-notices and add qt5reactor license
---
resources/third-party-notices.rtf | 83 +++++++++++++++++++++++++++++--
1 file changed, 80 insertions(+), 3 deletions(-)
diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf
index 12e2102..216617d 100644
--- a/resources/third-party-notices.rtf
+++ b/resources/third-party-notices.rtf
@@ -1,4 +1,4 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830
+{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
@@ -24,7 +24,7 @@ The above copyright notice and this permission notice shall be included in all\
copies or substantial portions of the Software.\
\
-\b PySide 1.2.1\
+\b PySide\
\b0 \
Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\
@@ -68,7 +68,7 @@ along with this program. If not, see .\
\b Qt
\b0 \
\
-This program uses Qt versions 4.8.7 and 5.11 under the GNU LGPL version 3.\
+This program uses Qt under the GNU LGPL version 3.\
\
Qt is a C++ toolkit for cross-platform application development.\
\
@@ -159,6 +159,83 @@ The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\b \
+qt5reactor\
+\
+
+\b0 Copyright (c) 2001-2018\
+Allen Short\
+Andy Gayton\
+Andrew Bennetts\
+Antoine Pitrou\
+Apple Computer, Inc.\
+Ashwini Oruganti\
+bakbuk\
+Benjamin Bruheim\
+Bob Ippolito\
+Burak Nehbit\
+Canonical Limited\
+Christopher Armstrong\
+Christopher R. Wood\
+David Reid\
+Donovan Preston\
+Elvis Stansvik\
+Eric Mangold\
+Eyal Lotem\
+Glenn Tarbox\
+Google Inc.\
+Hybrid Logic Ltd.\
+Hynek Schlawack\
+Itamar Turner-Trauring\
+James Knight\
+Jason A. Mobarak\
+Jean-Paul Calderone\
+Jessica McKellar\
+Jonathan Jacobs\
+Jonathan Lange\
+Jonathan D. Simms\
+J\'fcrgen Hermann\
+Julian Berman\
+Kevin Horn\
+Kevin Turner\
+Kyle Altendorf\
+Laurens Van Houtven\
+Mary Gardiner\
+Matthew Lefkowitz\
+Massachusetts Institute of Technology\
+Moshe Zadka\
+Paul Swartz\
+Pavel Pergamenshchik\
+Ralph Meijer\
+Richard Wall\
+Sean Riley\
+Software Freedom Conservancy\
+Tarashish Mishra\
+Travis B. Hartwell\
+Thijs Triemstra\
+Thomas Herve\
+Timothy Allen\
+Tom Prince\
+\
+Permission is hereby granted, free of charge, to any person obtaining\
+a copy of this software and associated documentation files (the\
+"Software"), to deal in the Software without restriction, including\
+without limitation the rights to use, copy, modify, merge, publish,\
+distribute, sublicense, and/or sell copies of the Software, and to\
+permit persons to whom the Software is furnished to do so, subject to\
+the following conditions:\
+\
+The above copyright notice and this permission notice shall be\
+included in all copies or substantial portions of the Software.\
+\
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\b \
+\
appnope\
\b0 \
From 11220e1df49a2fb7dfd4032bb03f595188d8178f Mon Sep 17 00:00:00 2001
From: Alberto Sottile
Date: Sun, 17 Jun 2018 15:24:46 +0200
Subject: [PATCH 72/80] Set 10.11.0 as minimum macOS version in the .app bundle
---
buildPy2app.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/buildPy2app.py b/buildPy2app.py
index 0821adf..13c274a 100644
--- a/buildPy2app.py
+++ b/buildPy2app.py
@@ -22,7 +22,8 @@ OPTIONS = {
'CFBundleName':'Syncplay',
'CFBundleShortVersionString':syncplay.version,
'CFBundleIdentifier':'pl.syncplay.Syncplay',
- 'NSHumanReadableCopyright': '@ 2017 Syncplay All Rights Reserved'
+ 'LSMinimumSystemVersion':'10.11.0',
+ 'NSHumanReadableCopyright': '@ 2018 Syncplay All Rights Reserved'
}
}
From 7d088b30e4d8c9945b7fdab07ae5c3f0c279f4d7 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Mon, 18 Jun 2018 22:12:31 +0200
Subject: [PATCH 73/80] Bundle syncplayServer in py2app
---
buildPy2app.py | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/buildPy2app.py b/buildPy2app.py
index 13c274a..8e4d14a 100644
--- a/buildPy2app.py
+++ b/buildPy2app.py
@@ -14,17 +14,18 @@ DATA_FILES = [
('resources', glob('resources/*.png') + glob('resources/*.rtf') + glob('resources/*.lua')),
]
OPTIONS = {
- 'iconfile':'resources/icon.icns',
- 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets', 'certifi'},
+ 'iconfile':'resources/icon.icns',
+ 'extra_scripts': 'syncplayServer.py',
+ 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets', 'certifi'},
'excludes': {'PySide', 'PySide.QtCore', 'PySide.QtUiTools', 'PySide.QtGui'},
'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib', 'styles/libqmacstyle.dylib'],
- 'plist': {
- 'CFBundleName':'Syncplay',
- 'CFBundleShortVersionString':syncplay.version,
- 'CFBundleIdentifier':'pl.syncplay.Syncplay',
- 'LSMinimumSystemVersion':'10.11.0',
- 'NSHumanReadableCopyright': '@ 2018 Syncplay All Rights Reserved'
- }
+ 'plist': {
+ 'CFBundleName':'Syncplay',
+ 'CFBundleShortVersionString':syncplay.version,
+ 'CFBundleIdentifier':'pl.syncplay.Syncplay',
+ 'LSMinimumSystemVersion':'10.11.0',
+ 'NSHumanReadableCopyright': '@ 2018 Syncplay All Rights Reserved'
+ }
}
setup(
From 3d30a78409cda40f1ea736c9d01d240d7595dc9b Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Wed, 20 Jun 2018 15:15:45 +0200
Subject: [PATCH 74/80] Fix settings crash when switching back from Python 3
versions
---
syncplay/utils.py | 7 +++++++
1 file changed, 7 insertions(+)
mode change 100644 => 100755 syncplay/utils.py
diff --git a/syncplay/utils.py b/syncplay/utils.py
old mode 100644
new mode 100755
index 5ad8b6c..24e207c
--- a/syncplay/utils.py
+++ b/syncplay/utils.py
@@ -339,7 +339,14 @@ def getPlayerArgumentsByPathAsText(arguments, path):
argsToReturn = getPlayerArgumentsByPathAsArray(arguments, path)
return " ".join(argsToReturn) if argsToReturn else ""
+def unicodeReplaceFromFuture(s):
+ return ''.join(chr(ord(c)) for c in s).decode('utf-8')
+
def getListAsMultilineString(pathArray):
+ try:
+ pathArray = map(unicodeReplaceFromFuture, pathArray)
+ except:
+ pass
return u"\n".join(pathArray) if pathArray else ""
def convertMultilineStringToList(multilineString):
From aa7a9e7a8eb0d62153f456c87ac967d02dc169c4 Mon Sep 17 00:00:00 2001
From: Etoh
Date: Thu, 5 Jul 2018 10:30:11 +0100
Subject: [PATCH 75/80] Set recent client threshold to 1.5.4
---
syncplay/constants.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/constants.py b/syncplay/constants.py
index f999ed0..5efa046 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -9,7 +9,7 @@ MPLAYER_OSD_LEVEL = 1
UI_TIME_FORMAT = "[%X] "
CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last
DEFAULT_CONFIG_NAME = "syncplay.ini"
-RECENT_CLIENT_THRESHOLD = "1.5.3" #This and higher considered 'recent' clients (no warnings)
+RECENT_CLIENT_THRESHOLD = "1.5.4" #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
From 78e7ae3fff27a726841c5e28911d9b18bbecff8a Mon Sep 17 00:00:00 2001
From: Etoh
Date: Thu, 5 Jul 2018 10:31:52 +0100
Subject: [PATCH 76/80] Upver to release 63 (1.5.4)
---
syncplay/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index 874d028..1e42918 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
version = '1.5.4'
milestone = 'Yoitsu'
-release_number = '62'
+release_number = '63'
projectURL = 'https://syncplay.pl/'
From ab94ef7dadfcd91ed895c403c785014f7ac56daa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Wr=C3=B3bel?=
Date: Fri, 6 Jul 2018 20:22:20 +0200
Subject: [PATCH 77/80] Fixed reference to missing constant on Linux
---
syncplay/ui/ConfigurationGetter.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py
index 068d321..7d018fa 100755
--- a/syncplay/ui/ConfigurationGetter.py
+++ b/syncplay/ui/ConfigurationGetter.py
@@ -438,7 +438,7 @@ class ConfigurationGetter(object):
for location in locations:
for name in constants.CONFIG_NAMES:
path = location + os.path.sep + name
- if os.path.isfile(path) and (os.name == 'nt' or path != os.path.join(os.getenv('HOME', '.'), constants.DEFAULT_CONFIG_NAME_LINUX)):
+ if os.path.isfile(path) and (os.name == 'nt' or path != os.path.join(os.getenv('HOME', '.'), name)):
loadedPaths.append(u"'{}'".format(os.path.normpath(path)))
self._parseConfigFile(path, createConfig=False)
self._checkConfig()
From 76a88bd191f747953d9a8eac2e88171db97ae6aa Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 7 Jul 2018 19:18:05 +0100
Subject: [PATCH 78/80] Upver to release 1.5.5 / build 64
---
syncplay/__init__.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index 1e42918..471e505 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,4 @@
-version = '1.5.4'
+version = '1.5.5'
milestone = 'Yoitsu'
-release_number = '63'
+release_number = '64'
projectURL = 'https://syncplay.pl/'
From 45ccd01ba5a36d75a11228a98fe2b40e04e22f9c Mon Sep 17 00:00:00 2001
From: Etoh
Date: Sat, 7 Jul 2018 19:32:04 +0100
Subject: [PATCH 79/80] Update recent client threshold to 1.5.5
---
syncplay/constants.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syncplay/constants.py b/syncplay/constants.py
index 5efa046..85bc966 100644
--- a/syncplay/constants.py
+++ b/syncplay/constants.py
@@ -9,7 +9,7 @@ MPLAYER_OSD_LEVEL = 1
UI_TIME_FORMAT = "[%X] "
CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last
DEFAULT_CONFIG_NAME = "syncplay.ini"
-RECENT_CLIENT_THRESHOLD = "1.5.4" #This and higher considered 'recent' clients (no warnings)
+RECENT_CLIENT_THRESHOLD = "1.5.5" #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
From 29760ba9d1aeb092bf6392980da86ee097add1c0 Mon Sep 17 00:00:00 2001
From: albertosottile
Date: Sun, 8 Jul 2018 11:58:27 +0200
Subject: [PATCH 80/80] Add revision identifier in __init__ and about dialog
---
syncplay/__init__.py | 1 +
syncplay/ui/gui.py | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/syncplay/__init__.py b/syncplay/__init__.py
index 471e505..123b84a 100644
--- a/syncplay/__init__.py
+++ b/syncplay/__init__.py
@@ -1,4 +1,5 @@
version = '1.5.5'
+revision = ''
milestone = 'Yoitsu'
release_number = '64'
projectURL = 'https://syncplay.pl/'
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 7e5d1ba..4cc46e5 100755
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -4,7 +4,7 @@ from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine,
from platform import python_version
if IsPySide2:
from PySide2.QtCore import QStandardPaths
-from syncplay import utils, constants, version, release_number
+from syncplay import utils, constants, version, revision, release_number
from syncplay.messages import getMessage
from syncplay.utils import resourcespath
import sys
@@ -116,7 +116,8 @@ class AboutDialog(QtWidgets.QDialog):
nameLabel.setFont(QtGui.QFont("Helvetica", 18))
linkLabel = QtWidgets.QLabel("syncplay.pl")
linkLabel.setOpenExternalLinks(True)
- versionLabel = QtWidgets.QLabel("" + getMessage("about-dialog-release").format(version, release_number) + "
Python " + python_version() + " - " + __binding__ + " " + __binding_version__ + " - Qt " + __qt_version__ + "")
+ versionExtString = version + revision
+ versionLabel = QtWidgets.QLabel("" + getMessage("about-dialog-release").format(versionExtString, release_number) + "
Python " + python_version() + " - " + __binding__ + " " + __binding_version__ + " - Qt " + __qt_version__ + "")
licenseLabel = QtWidgets.QLabel("Copyright © 2012–2018 Syncplay
" + getMessage("about-dialog-license-text") + "
")
aboutIconPixmap = QtGui.QPixmap(resourcespath + u"syncplay.png")
aboutIconLabel = QtWidgets.QLabel()