Merge pull request #117 from Hummer12007/automagic

Prevent import error message when GUI is disabled on systems without PySide
This commit is contained in:
Etoh 2016-10-19 20:04:40 +01:00 committed by GitHub
commit 4d428aeeb9

View File

@ -7,13 +7,6 @@ from syncplay import constants, utils, version, milestone
from syncplay.messages import getMessage, setLanguage, isValidLanguage from syncplay.messages import getMessage, setLanguage, isValidLanguage
from syncplay.players.playerFactory import PlayerFactory from syncplay.players.playerFactory import PlayerFactory
import codecs import codecs
try:
from syncplay.ui.GuiConfiguration import GuiConfiguration
from PySide import QtGui # @UnresolvedImport
from PySide.QtCore import QCoreApplication
except ImportError:
print getMessage("unable-import-gui-error")
GuiConfiguration = None
class InvalidConfigValue(Exception): class InvalidConfigValue(Exception):
def __init__(self, message): def __init__(self, message):
@ -305,12 +298,13 @@ class ConfigurationGetter(object):
sys.exit() sys.exit()
def _promptForMissingArguments(self, error=None): def _promptForMissingArguments(self, error=None):
if self._config['noGui'] or not GuiConfiguration: if self._config['noGui']:
if error: if error:
print "{}!".format(error) print "{}!".format(error)
print getMessage("missing-arguments-error") print getMessage("missing-arguments-error")
sys.exit() sys.exit()
elif GuiConfiguration: else:
from syncplay.ui.GuiConfiguration import GuiConfiguration
gc = GuiConfiguration(self._config, error=error) gc = GuiConfiguration(self._config, error=error)
gc.setAvailablePaths(self._playerFactory.getAvailablePlayerPaths()) gc.setAvailablePaths(self._playerFactory.getAvailablePlayerPaths())
gc.run() gc.run()
@ -342,24 +336,17 @@ class ConfigurationGetter(object):
def _forceGuiPrompt(self): def _forceGuiPrompt(self):
if GuiConfiguration: from syncplay.ui.GuiConfiguration import GuiConfiguration
try: try:
self._validateArguments() self._validateArguments()
except InvalidConfigValue: except InvalidConfigValue:
pass pass
try: try:
if self._config['noGui'] == False: for key, value in self._promptForMissingArguments().items():
for key, value in self._promptForMissingArguments().items(): self._config[key] = value
self._config[key] = value except GuiConfiguration.WindowClosed:
except GuiConfiguration.WindowClosed: sys.exit()
sys.exit()
else:
try:
self._validateArguments()
except InvalidConfigValue:
self._promptForMissingArguments()
sys.exit()
def __getRelativeConfigLocations(self): def __getRelativeConfigLocations(self):
locations = [] locations = []
@ -412,13 +399,24 @@ class ConfigurationGetter(object):
print getMessage("version-message").format(version, milestone) print getMessage("version-message").format(version, milestone)
sys.exit() sys.exit()
self._overrideConfigWithArgs(args) self._overrideConfigWithArgs(args)
if not self._config['noGui']:
try:
from PySide import QtGui # @UnresolvedImport
from PySide.QtCore import QCoreApplication
from syncplay.vendor import qt4reactor
if QCoreApplication.instance() is None:
self.app = QtGui.QApplication(sys.argv)
qt4reactor.install()
except ImportError:
print getMessage("unable-import-gui-error")
self._config['noGui'] = True
if self._config['file'] and self._config['file'][:2] == "--": if self._config['file'] and self._config['file'][:2] == "--":
self._config['playerArgs'].insert(0, self._config['file']) self._config['playerArgs'].insert(0, self._config['file'])
self._config['file'] = None self._config['file'] = None
# Arguments not validated yet - booleans are still text values # Arguments not validated yet - booleans are still text values
if self._config['language']: if self._config['language']:
setLanguage(self._config['language']) setLanguage(self._config['language'])
if (self._config['forceGuiPrompt'] == "True" or not self._config['file']) and GuiConfiguration and not self._config['noGui']: if (self._config['forceGuiPrompt'] == "True" or not self._config['file']) and not self._config['noGui']:
self._forceGuiPrompt() self._forceGuiPrompt()
self._checkConfig() self._checkConfig()
self._saveConfig(iniPath) self._saveConfig(iniPath)
@ -426,13 +424,6 @@ class ConfigurationGetter(object):
self._config['loadedRelativePaths'] = self._loadRelativeConfiguration() self._config['loadedRelativePaths'] = self._loadRelativeConfiguration()
if self._config['language']: if self._config['language']:
setLanguage(self._config['language']) setLanguage(self._config['language'])
if not GuiConfiguration:
self._config['noGui'] = True
if not self._config['noGui']:
from syncplay.vendor import qt4reactor
if QCoreApplication.instance() is None:
self.app = QtGui.QApplication(sys.argv)
qt4reactor.install()
return self._config return self._config
def setConfigOption(self, option, value): def setConfigOption(self, option, value):