From 466589ccc468ca6eff7926eb20fd6d7ee5579dd4 Mon Sep 17 00:00:00 2001 From: alby128 Date: Wed, 4 Oct 2017 19:22:19 +0200 Subject: [PATCH] Allow multiple PySide versions on Qt.py --- .travis.yml | 2 +- syncplay/ui/GuiConfiguration.py | 39 ++++++++++++------ syncplay/ui/gui.py | 71 ++++++++++++++++++++++++--------- 3 files changed, 80 insertions(+), 32 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9c80676..4c43772 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ before_deploy: - pip install dmgbuild - mkdir dist_dmg - 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: provider: s3 diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 10e1d42..54844bd 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -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.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit -from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage -from PySide2.QtCore import QStandardPaths +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 @@ -343,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(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 = "" + 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 49beef2..a60918b 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1,7 +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 -from PySide2.QtCore import QStandardPaths +if IsPySide2: + from PySide2.QtCore import QStandardPaths from syncplay import utils, constants, version, release_number from syncplay.messages import getMessage import sys @@ -13,6 +14,8 @@ 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') and IsPySide: + from Foundation import NSURL lastCheckedForUpdates = None class UserlistItemDelegate(QtWidgets.QStyledItemDelegate): @@ -214,7 +217,10 @@ class MainWindow(QtWidgets.QMainWindow): indexRow = window.playlist.count() if window.clearedPlaylistNote else 0 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): window.addFileToPlaylist(dropfilepath, indexRow) elif os.path.isdir(dropfilepath): @@ -316,7 +322,10 @@ class MainWindow(QtWidgets.QMainWindow): if indexRow == -1: indexRow = window.playlist.count() 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): window.addFileToPlaylist(dropfilepath, indexRow) elif os.path.isdir(dropfilepath): @@ -815,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(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 = "" + 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 @@ -834,7 +855,10 @@ class MainWindow(QtWidgets.QMainWindow): return 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 = "" 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): @@ -859,7 +883,10 @@ class MainWindow(QtWidgets.QMainWindow): return 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 = "" 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): @@ -1007,7 +1034,12 @@ class MainWindow(QtWidgets.QMainWindow): @needsClient 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: existingMediaDirs = MediaDirectoriesTextbox.toPlainText() if existingMediaDirs == "": @@ -1543,7 +1575,10 @@ class MainWindow(QtWidgets.QMainWindow): data = event.mimeData() urls = data.urls() 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: self._syncplayClient._player.openFile(dropfilepath) else: