From cd110960471c4e4a688e1e7f1a8f2ce4da4b44a7 Mon Sep 17 00:00:00 2001 From: alby128 Date: Wed, 4 Oct 2017 19:19:11 +0200 Subject: [PATCH] Allow multiple PySide versions on Qt.py --- syncplay/ui/ConfigurationGetter.py | 26 ++++++++-------- syncplay/ui/GuiConfiguration.py | 36 +++++++++++++++------- syncplay/ui/gui.py | 48 +++++++++++++++++++----------- 3 files changed, 69 insertions(+), 41 deletions(-) diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index f607c7e..aeb282d 100755 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -400,19 +400,19 @@ class ConfigurationGetter(object): sys.exit() self._overrideConfigWithArgs(args) if not self._config['noGui']: - # try: - from syncplay.vendor.Qt import QtWidgets - from syncplay.vendor.Qt.QtCore import QCoreApplication - from syncplay.vendor import qt5reactor - if QCoreApplication.instance() is None: - self.app = QtWidgets.QApplication(sys.argv) - qt5reactor.install() - if sys.platform.startswith('darwin'): - import appnope - appnope.nope() - # except ImportError: - # print getMessage("unable-import-gui-error") - # self._config['noGui'] = True + try: + from syncplay.vendor.Qt import QtWidgets + from syncplay.vendor.Qt.QtCore import QCoreApplication + from syncplay.vendor import qt5reactor + if QCoreApplication.instance() is None: + self.app = QtWidgets.QApplication(sys.argv) + qt5reactor.install() + if sys.platform.startswith('darwin'): + import appnope + appnope.nope() + except ImportError: + print getMessage("unable-import-gui-error") + self._config['noGui'] = True if self._config['file'] and self._config['file'][:2] == "--": self._config['playerArgs'].insert(0, self._config['file']) self._config['file'] = None diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index c1b4f07..54844bd 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1,7 +1,9 @@ -from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__ +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.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices +if IsPySide2: + from PySide2.QtCore import QStandardPaths from syncplay.players.playerFactory import PlayerFactory from datetime import datetime from syncplay import utils @@ -342,16 +344,28 @@ class ConfigDialog(QtWidgets.QDialog): def browseMediapath(self): self.loadMediaBrowseSettings() options = QtWidgets.QFileDialog.Options() - if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): - defaultdirectory = self.config["mediaSearchDirectories"][0] - elif os.path.isdir(self.mediadirectory): - defaultdirectory = self.mediadirectory - elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.MoviesLocation)): - defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.MoviesLocation) - elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.HomeLocation)): - defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.HomeLocation) - else: - defaultdirectory = "" + if IsPySide: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.MoviesLocation)): + defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.MoviesLocation) + elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.HomeLocation)): + defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.HomeLocation) + else: + defaultdirectory = "" + elif IsPySide2: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] + else: + defaultdirectory = "" browserfilter = "All files (*)" fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory, browserfilter, "", options) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 9acc4e5..a60918b 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1,6 +1,8 @@ from syncplay.vendor import Qt -from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__ +from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime +if IsPySide2: + from PySide2.QtCore import QStandardPaths from syncplay import utils, constants, version, release_number from syncplay.messages import getMessage import sys @@ -12,7 +14,7 @@ import os from syncplay.utils import formatTime, sameFilename, sameFilesize, sameFileduration, RoomPasswordProvider, formatSize, isURL from functools import wraps from twisted.internet import task -if sys.platform.startswith('darwin'): +if sys.platform.startswith('darwin') and IsPySide: from Foundation import NSURL lastCheckedForUpdates = None @@ -215,7 +217,7 @@ class MainWindow(QtWidgets.QMainWindow): indexRow = window.playlist.count() if window.clearedPlaylistNote else 0 for url in urls[::-1]: - if sys.platform.startswith('darwin'): + if sys.platform.startswith('darwin') and IsPySide: dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) @@ -320,7 +322,7 @@ class MainWindow(QtWidgets.QMainWindow): if indexRow == -1: indexRow = window.playlist.count() for url in urls[::-1]: - if sys.platform.startswith('darwin'): + if sys.platform.startswith('darwin') and IsPySide: dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) @@ -822,16 +824,28 @@ class MainWindow(QtWidgets.QMainWindow): settings.endGroup() def getInitialMediaDirectory(self, includeUserSpecifiedDirectories=True): - if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: - defaultdirectory = self.config["mediaSearchDirectories"][0] - elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): - defaultdirectory = self.mediadirectory - elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation)): - defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation) - elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)): - defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation) - else: - defaultdirectory = "" + if IsPySide: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation)): + defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation) + elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)): + defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation) + else: + defaultdirectory = "" + elif IsPySide2: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] + else: + defaultdirectory = "" return defaultdirectory @needsClient @@ -841,7 +855,7 @@ class MainWindow(QtWidgets.QMainWindow): return self.loadMediaBrowseSettings() - if sys.platform.startswith('darwin'): + if sys.platform.startswith('darwin') and IsPySide: options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog) else: options = QtWidgets.QFileDialog.Options() @@ -869,7 +883,7 @@ class MainWindow(QtWidgets.QMainWindow): return self.loadMediaBrowseSettings() - if sys.platform.startswith('darwin'): + if sys.platform.startswith('darwin') and IsPySide: options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog) else: options = QtWidgets.QFileDialog.Options() @@ -1561,7 +1575,7 @@ class MainWindow(QtWidgets.QMainWindow): data = event.mimeData() urls = data.urls() if urls and urls[0].scheme() == 'file': - if sys.platform.startswith('darwin'): + if sys.platform.startswith('darwin') and IsPySide: dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile()))