Move all server listings to combo box

This commit is contained in:
Et0h 2015-08-30 20:31:49 +01:00
parent ea12a4ef9d
commit da1b2894bf
8 changed files with 56 additions and 26 deletions

View File

@ -654,7 +654,7 @@ guiIcons = ['resources/accept.png', 'resources/arrow_undo.png', 'resources/clock
'resources/user_key.png', 'resources/lock.png', 'resources/key_go.png', 'resources/page_white_key.png',
'resources/tick.png', 'resources/lock_open.png', 'resources/empty_checkbox.png', 'resources/tick_checkbox.png',
'resources/world_explore.png', 'resources/application_get.png', 'resources/cog.png',
'resources/film_go.png', 'resources/world_go.png', 'resources/report_magnify.png'
'resources/film_go.png', 'resources/world_go.png', 'resources/arrow_refresh.png'
]
resources = ["resources/icon.ico", "resources/syncplay.png"]
resources.extend(guiIcons)

BIN
resources/arrow_refresh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

View File

@ -3,6 +3,7 @@ import os.path
import time
import re
import sys
import ast
from twisted.internet.protocol import ClientFactory
from twisted.internet import reactor, task
from functools import wraps
@ -676,9 +677,14 @@ class SyncplayClient(object):
response = f.read()
response = response.replace("<p>","").replace("</p>","").replace("<br />","").replace("&#8220;","\"").replace("&#8221;","\"") # Fix Wordpress
response = json.loads(response)
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 = None
if response["public-servers"]:
publicServers = response["public-servers"].replace("&#8221;","'").replace(":&#8217;","'").replace("&#8217;","'").replace("&#8242;","'").replace("\n","").replace("\r","")
print publicServers
publicServers = ast.literal_eval(publicServers)
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
return "failed", getMessage("update-check-failed-notification").format(syncplay.version), constants.SYNCPLAY_DOWNLOAD_URL, None
class _WarningManager(object):
def __init__(self, player, userlist, ui, client):

View File

@ -16,7 +16,7 @@ SHOW_CONTACT_INFO = True # Displays dev contact details below list in GUI
SHOW_TOOLTIPS = True
WARN_ABOUT_MISSING_STRINGS = False # (If debug mode is enabled)
FALLBACK_INITIAL_LANGUAGE = "en"
PUBLIC_SYNCPLAY_SERVERS = ["syncplay.pl:8995","syncplay.pl:8996","syncplay.pl:8997","syncplay.pl:8998","syncplay.pl:8999"]
FALLBACK_PUBLIC_SYNCPLAY_SERVERS = ["syncplay.pl:8995","syncplay.pl:8996","syncplay.pl:8997","syncplay.pl:8998","syncplay.pl:8999"]
#Overriden by config
SHOW_OSD = True # Sends Syncplay messages to media player OSD

View File

@ -173,7 +173,7 @@ en = {
"media-path-label" : "Path to media file:",
"player-arguments-label" : "Player arguments (if any):",
"browse-label" : "Browse",
"list-servers-label" : u"Find public server",
"update-server-list-label" : u"Update list",
"more-title" : "Show more settings",
"never-rewind-value" : "Never",
@ -541,7 +541,7 @@ ru = {
"media-path-label" : u"Путь к видеофайлу:",
"player-arguments-label" : u"Аргументы для запуска проигрывателя:",
"browse-label" : u"Выбрать",
"list-servers-label" : u"Find public server", # TODO: Translate into Russian
"update-server-list-label" : u"Update list", # TODO: Translate into Russian
"more-title" : u"Больше настроек",
"never-rewind-value" : u"Никогда",
@ -909,7 +909,7 @@ de = {
"media-path-label" : u"Pfad zur Datei:",
"player-arguments-label" : u"Player arguments:", # TODO: Translate into German
"browse-label" : u"Durchsuchen",
"list-servers-label" : u"Find public server", # TODO: Translate into German
"update-server-list-label" : u"Update list", # TODO: Translate into German
"more-title" : u"Mehr Einstellungen zeigen",
"never-rewind-value" : u"Niemals",

View File

@ -202,6 +202,13 @@ class ConfigDialog(QtGui.QDialog):
else:
self.config["lastCheckedForUpdates"] = str(self.lastCheckedForUpdates)
def loadSavedPublicServerList(self):
settings = QSettings("Syncplay", "Interface")
settings.beginGroup("PublicServerList")
self.publicServers = settings.value("publicServers", constants.FALLBACK_PUBLIC_SYNCPLAY_SERVERS)
if self.publicServers is None:
self.publicServers = constants.FALLBACK_PUBLIC_SYNCPLAY_SERVERS
def loadMediaBrowseSettings(self):
settings = QSettings("Syncplay", "MediaBrowseDialog")
settings.beginGroup("MediaBrowseDialog")
@ -231,26 +238,24 @@ class ConfigDialog(QtGui.QDialog):
settings.endGroup()
def findPublicServer(self):
def updateServerList(self):
try:
servers = utils.getListOfPublicServers()
except IOError as e:
self.showErrorMessage(unicode(e))
return
dialog = QtGui.QInputDialog()
dialog.setWindowTitle(getMessage("list-servers-label"))
dialog.setLabelText(getMessage("public-server-msgbox-label"))
serverTitles = []
serverDict = {}
for server in servers:
serverTitle = server[0]
serverAddress = server[1]
serverTitles.append(serverTitle)
serverDict[serverTitle]=serverAddress
dialog.setComboBoxItems(serverTitles)
ok = dialog.exec_()
if ok:
self.hostCombobox.setEditText(serverDict[dialog.textValue()])
currentServer = self.hostCombobox.currentText()
self.hostCombobox.clear()
if servers:
i = 0
for server in servers:
self.hostCombobox.addItem(server[1])
self.hostCombobox.setItemData(i, server[0], Qt.ToolTipRole)
i += 1
settings = QSettings("Syncplay", "Interface")
settings.beginGroup("PublicServerList")
settings.setValue("publicServers", servers)
self.hostCombobox.setEditText(currentServer)
def showErrorMessage(self, errorMessage):
QtGui.QMessageBox.warning(self, "Syncplay", errorMessage)
@ -416,14 +421,20 @@ class ConfigDialog(QtGui.QDialog):
self.mediaSearchDirectories = self.config["mediaSearchDirectories"]
self.connectionSettingsGroup = QtGui.QGroupBox(getMessage("connection-group-title"))
self.loadSavedPublicServerList()
self.hostCombobox = QtGui.QComboBox(self)
self.hostCombobox.addItems(constants.PUBLIC_SYNCPLAY_SERVERS)
if self.publicServers:
i = 0
for publicServer in self.publicServers:
self.hostCombobox.addItem(publicServer[1])
self.hostCombobox.setItemData(i, publicServer[0], Qt.ToolTipRole)
i += 1
self.hostCombobox.setEditable(True)
self.hostCombobox.setEditText(host)
self.hostCombobox.setFixedWidth(165)
self.hostLabel = QLabel(getMessage("host-label"), self)
self.findServerButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + 'report_magnify.png'), getMessage("list-servers-label"))
self.findServerButton.clicked.connect(self.findPublicServer)
self.findServerButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + 'arrow_refresh.png'), getMessage("update-server-list-label"))
self.findServerButton.clicked.connect(self.updateServerList)
self.usernameTextbox = QLineEdit(self)
self.usernameTextbox.setObjectName("name")
@ -881,6 +892,8 @@ class ConfigDialog(QtGui.QDialog):
def clearGUIData(self, leaveMore=False):
settings = QSettings("Syncplay", "PlayerList")
settings.clear()
settings = QSettings("Syncplay", "PublicServerList")
settings.clear()
settings = QSettings("Syncplay", "MediaBrowseDialog")
settings.clear()
settings = QSettings("Syncplay", "MainWindow")
@ -902,6 +915,7 @@ class ConfigDialog(QtGui.QDialog):
self.datacleared = False
self.config['resetConfig'] = False
self.subitems = {}
self.publicServers = None
if self.config['clearGUIData'] == True:
self.config['clearGUIData'] = False

View File

@ -841,7 +841,8 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def checkForUpdates(self, userInitiated=False):
self.lastCheckedForUpdates = datetime.utcnow()
updateStatus, updateMessage, updateURL = self._syncplayClient.checkForUpdate(userInitiated)
updateStatus, updateMessage, updateURL, self.publicServerList = self._syncplayClient.checkForUpdate(userInitiated)
if updateMessage is None:
if updateStatus == "uptodate":
updateMessage = getMessage("syncplay-uptodate-notification")
@ -898,6 +899,10 @@ class MainWindow(QtGui.QMainWindow):
settings.beginGroup("Update")
settings.setValue("lastChecked", self.lastCheckedForUpdates)
settings.endGroup()
settings.beginGroup("PublicServerList")
if self.publicServerList:
settings.setValue("publicServers", self.publicServerList)
settings.endGroup()
def loadSettings(self):
settings = QSettings("Syncplay", "MainWindow")
@ -920,9 +925,14 @@ class MainWindow(QtGui.QMainWindow):
settings = QSettings("Syncplay", "Interface")
settings.beginGroup("Update")
self.lastCheckedForUpdates = settings.value("lastChecked", None)
settings.endGroup()
settings.beginGroup("PublicServerList")
self.publicServerList = settings.value("publicServers", None)
def __init__(self):
super(MainWindow, self).__init__()
self.publicServerList = []
self.lastCheckedForUpdates = None
self._syncplayClient = None
self.folderSearchEnabled = True
self.QtGui = QtGui