Allow multiple PySide versions on Qt.py

This commit is contained in:
alby128 2017-10-04 19:22:19 +02:00
parent bcc2983815
commit 466589ccc4
3 changed files with 80 additions and 32 deletions

View File

@ -37,7 +37,7 @@ before_deploy:
- pip install dmgbuild - pip install dmgbuild
- mkdir dist_dmg - mkdir dist_dmg
- mv resources/macos_vlc_install.command resources/.macos_vlc_install.command - mv resources/macos_vlc_install.command resources/.macos_vlc_install.command
- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay-PySide2.dmg - dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay-qtpy-pyside2.dmg
deploy: deploy:
provider: s3 provider: s3

View File

@ -1,8 +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.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.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit
from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices
from PySide2.QtCore import QStandardPaths if IsPySide2:
from PySide2.QtCore import QStandardPaths
from syncplay.players.playerFactory import PlayerFactory from syncplay.players.playerFactory import PlayerFactory
from datetime import datetime from datetime import datetime
from syncplay import utils from syncplay import utils
@ -343,16 +344,28 @@ class ConfigDialog(QtWidgets.QDialog):
def browseMediapath(self): def browseMediapath(self):
self.loadMediaBrowseSettings() self.loadMediaBrowseSettings()
options = QtWidgets.QFileDialog.Options() options = QtWidgets.QFileDialog.Options()
if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): if IsPySide:
defaultdirectory = self.config["mediaSearchDirectories"][0] if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]):
elif os.path.isdir(self.mediadirectory): defaultdirectory = self.config["mediaSearchDirectories"][0]
defaultdirectory = self.mediadirectory elif os.path.isdir(self.mediadirectory):
elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): defaultdirectory = self.mediadirectory
defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.MoviesLocation)):
elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.MoviesLocation)
defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.HomeLocation)):
else: defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.HomeLocation)
defaultdirectory = "" 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 (*)" browserfilter = "All files (*)"
fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory, fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory,
browserfilter, "", options) browserfilter, "", options)

View File

@ -1,7 +1,8 @@
from syncplay.vendor import Qt 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 from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime
from PySide2.QtCore import QStandardPaths if IsPySide2:
from PySide2.QtCore import QStandardPaths
from syncplay import utils, constants, version, release_number from syncplay import utils, constants, version, release_number
from syncplay.messages import getMessage from syncplay.messages import getMessage
import sys import sys
@ -13,6 +14,8 @@ import os
from syncplay.utils import formatTime, sameFilename, sameFilesize, sameFileduration, RoomPasswordProvider, formatSize, isURL from syncplay.utils import formatTime, sameFilename, sameFilesize, sameFileduration, RoomPasswordProvider, formatSize, isURL
from functools import wraps from functools import wraps
from twisted.internet import task from twisted.internet import task
if sys.platform.startswith('darwin') and IsPySide:
from Foundation import NSURL
lastCheckedForUpdates = None lastCheckedForUpdates = None
class UserlistItemDelegate(QtWidgets.QStyledItemDelegate): class UserlistItemDelegate(QtWidgets.QStyledItemDelegate):
@ -214,7 +217,10 @@ class MainWindow(QtWidgets.QMainWindow):
indexRow = window.playlist.count() if window.clearedPlaylistNote else 0 indexRow = window.playlist.count() if window.clearedPlaylistNote else 0
for url in urls[::-1]: for url in urls[::-1]:
dropfilepath = os.path.abspath(unicode(url.toLocalFile())) 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()))
if os.path.isfile(dropfilepath): if os.path.isfile(dropfilepath):
window.addFileToPlaylist(dropfilepath, indexRow) window.addFileToPlaylist(dropfilepath, indexRow)
elif os.path.isdir(dropfilepath): elif os.path.isdir(dropfilepath):
@ -316,7 +322,10 @@ class MainWindow(QtWidgets.QMainWindow):
if indexRow == -1: if indexRow == -1:
indexRow = window.playlist.count() indexRow = window.playlist.count()
for url in urls[::-1]: for url in urls[::-1]:
dropfilepath = os.path.abspath(unicode(url.toLocalFile())) 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()))
if os.path.isfile(dropfilepath): if os.path.isfile(dropfilepath):
window.addFileToPlaylist(dropfilepath, indexRow) window.addFileToPlaylist(dropfilepath, indexRow)
elif os.path.isdir(dropfilepath): elif os.path.isdir(dropfilepath):
@ -815,16 +824,28 @@ class MainWindow(QtWidgets.QMainWindow):
settings.endGroup() settings.endGroup()
def getInitialMediaDirectory(self, includeUserSpecifiedDirectories=True): def getInitialMediaDirectory(self, includeUserSpecifiedDirectories=True):
if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: if IsPySide:
defaultdirectory = self.config["mediaSearchDirectories"][0] if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories:
elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): defaultdirectory = self.config["mediaSearchDirectories"][0]
defaultdirectory = self.mediadirectory elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory):
elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): defaultdirectory = self.mediadirectory
defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation)):
elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation)
defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)):
else: defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)
defaultdirectory = "" 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 return defaultdirectory
@needsClient @needsClient
@ -834,7 +855,10 @@ class MainWindow(QtWidgets.QMainWindow):
return return
self.loadMediaBrowseSettings() self.loadMediaBrowseSettings()
options = QtWidgets.QFileDialog.Options() if sys.platform.startswith('darwin') and IsPySide:
options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog)
else:
options = QtWidgets.QFileDialog.Options()
self.mediadirectory = "" self.mediadirectory = ""
currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None
if currentdirectory and os.path.isdir(currentdirectory): if currentdirectory and os.path.isdir(currentdirectory):
@ -859,7 +883,10 @@ class MainWindow(QtWidgets.QMainWindow):
return return
self.loadMediaBrowseSettings() self.loadMediaBrowseSettings()
options = QtWidgets.QFileDialog.Options() if sys.platform.startswith('darwin') and IsPySide:
options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog)
else:
options = QtWidgets.QFileDialog.Options()
self.mediadirectory = "" self.mediadirectory = ""
currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None
if currentdirectory and os.path.isdir(currentdirectory): if currentdirectory and os.path.isdir(currentdirectory):
@ -1007,7 +1034,12 @@ class MainWindow(QtWidgets.QMainWindow):
@needsClient @needsClient
def openAddMediaDirectoryDialog(self, MediaDirectoriesTextbox, MediaDirectoriesDialog): def openAddMediaDirectoryDialog(self, MediaDirectoriesTextbox, MediaDirectoriesDialog):
folderName = unicode(QtWidgets.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),QtWidgets.QFileDialog.ShowDirsOnly)) if sys.platform.startswith('darwin'):
options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
else:
options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.ShowDirsOnly)
folderName = unicode(QtGui.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),options))
if folderName: if folderName:
existingMediaDirs = MediaDirectoriesTextbox.toPlainText() existingMediaDirs = MediaDirectoriesTextbox.toPlainText()
if existingMediaDirs == "": if existingMediaDirs == "":
@ -1543,7 +1575,10 @@ class MainWindow(QtWidgets.QMainWindow):
data = event.mimeData() data = event.mimeData()
urls = data.urls() urls = data.urls()
if urls and urls[0].scheme() == 'file': if urls and urls[0].scheme() == 'file':
dropfilepath = os.path.abspath(unicode(event.mimeData().urls()[0].toLocalFile())) 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()))
if rewindFile == False: if rewindFile == False:
self._syncplayClient._player.openFile(dropfilepath) self._syncplayClient._player.openFile(dropfilepath)
else: else: