diff --git a/buildPy2app.py b/buildPy2app.py
new file mode 100644
index 0000000..5cc8ccb
--- /dev/null
+++ b/buildPy2app.py
@@ -0,0 +1,32 @@
+"""
+This is a setup.py script generated by py2applet
+
+Usage:
+ python setup.py py2app
+"""
+
+from setuptools import setup
+from glob import glob
+import syncplay
+
+APP = ['syncplayClient.py']
+DATA_FILES = [
+ ('resources', glob('resources/*.png')),
+]
+OPTIONS = {
+ 'iconfile':'resources/icon.icns',
+ 'plist': {
+ 'CFBundleName':'Syncplay',
+ 'CFBundleShortVersionString':syncplay.version,
+ 'CFBundleIdentifier':'pl.syncplay.Syncplay',
+ 'NSHumanReadableCopyright': '@ 2017 Syncplay All Rights Reserved'
+ }
+}
+
+setup(
+ app=APP,
+ name='Syncplay',
+ data_files=DATA_FILES,
+ options={'py2app': OPTIONS},
+ setup_requires=['py2app'],
+)
diff --git a/resources/icon.icns b/resources/icon.icns
new file mode 100644
index 0000000..10fb766
Binary files /dev/null and b/resources/icon.icns differ
diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py
index c45c6cc..222a764 100755
--- a/syncplay/ui/ConfigurationGetter.py
+++ b/syncplay/ui/ConfigurationGetter.py
@@ -401,15 +401,15 @@ class ConfigurationGetter(object):
self._overrideConfigWithArgs(args)
if not self._config['noGui']:
try:
- from PySide import QtGui # @UnresolvedImport
- from PySide.QtCore import QCoreApplication
- from syncplay.vendor import qt4reactor
+ from PySide2 import QtWidgets
+ from PySide2.QtCore import QCoreApplication
+ from syncplay.vendor import qt5reactor
if QCoreApplication.instance() is None:
- self.app = QtGui.QApplication(sys.argv)
- qt4reactor.install()
+ self.app = QtWidgets.QApplication(sys.argv)
+ qt5reactor.install()
if sys.platform.startswith('darwin'):
import appnope
- appnope.nope()
+ appnope.nope()
except ImportError:
print getMessage("unable-import-gui-error")
self._config['noGui'] = True
diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py
index d8e832a..47a2412 100644
--- a/syncplay/ui/GuiConfiguration.py
+++ b/syncplay/ui/GuiConfiguration.py
@@ -1,6 +1,7 @@
-from PySide import QtCore, QtGui
-from PySide.QtCore import QSettings, Qt, QCoreApplication, QUrl
-from PySide.QtGui import QApplication, QLineEdit, QCursor, QLabel, QCheckBox, QDesktopServices, QIcon, QImage, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit
+from PySide2 import QtCore, QtWidgets, QtGui
+from PySide2.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine
+from PySide2.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit
+from PySide2.QtGui import QCursor, QIcon, QImage, QDesktopServices
from syncplay.players.playerFactory import PlayerFactory
from datetime import datetime
from syncplay import utils
@@ -19,7 +20,7 @@ class GuiConfiguration:
def run(self):
if QCoreApplication.instance() is None:
- self.app = QtGui.QApplication(sys.argv)
+ self.app = QtWidgets.QApplication(sys.argv)
dialog = ConfigDialog(self.config, self._availablePlayerPaths, self.error, self.defaultConfig)
dialog.exec_()
@@ -65,22 +66,22 @@ class GetPlayerIconThread(threading.Thread, QtCore.QObject):
self.done.emit(iconpath, playerpath)
-class ConfigDialog(QtGui.QDialog):
+class ConfigDialog(QtWidgets.QDialog):
pressedclosebutton = True
moreToggling = False
def automaticUpdatePromptCheck(self):
if self.automaticupdatesCheckbox.checkState() == Qt.PartiallyChecked:
- reply = QtGui.QMessageBox.question(self, "Syncplay",
- getMessage("promptforupdate-label"), QtGui.QMessageBox.StandardButton.Yes | QtGui.QMessageBox.StandardButton.No)
- if reply == QtGui.QMessageBox.Yes:
+ reply = QtWidgets.QMessageBox.question(self, "Syncplay",
+ getMessage("promptforupdate-label"), QtWidgets.QMessageBox.StandardButton.Yes | QtWidgets.QMessageBox.StandardButton.No)
+ if reply == QtWidgets.QMessageBox.Yes:
self.automaticupdatesCheckbox.setChecked(True)
else:
self.automaticupdatesCheckbox.setChecked(False)
def moreToggled(self):
- self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ self.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
if self.moreToggling == False:
self.moreToggling = True
@@ -113,7 +114,7 @@ class ConfigDialog(QtGui.QDialog):
self.executablepathCombobox.setFixedWidth(self.mediapathTextbox.width())
def openHelp(self):
- self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/client/"))
+ self.QtWidgets.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/client/"))
def safenormcaseandpath(self, path):
if utils.isURL(path):
@@ -210,10 +211,10 @@ class ConfigDialog(QtGui.QDialog):
def languageChanged(self):
setLanguage(unicode(self.languageCombobox.itemData(self.languageCombobox.currentIndex())))
- QtGui.QMessageBox.information(self, "Syncplay", getMessage("language-changed-msgbox-label"))
+ QtWidgets.QMessageBox.information(self, "Syncplay", getMessage("language-changed-msgbox-label"))
def browsePlayerpath(self):
- options = QtGui.QFileDialog.Options()
+ options = QtWidgets.QFileDialog.Options()
defaultdirectory = ""
browserfilter = "All files (*)"
@@ -232,7 +233,7 @@ class ConfigDialog(QtGui.QDialog):
elif "bsd" in sys.platform or sys.platform.startswith('dragonfly'):
defaultdirectory = "/usr/local/bin"
- fileName, filtr = QtGui.QFileDialog.getOpenFileName(self,
+ fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self,
"Browse for media player executable",
defaultdirectory,
browserfilter, "", options)
@@ -336,11 +337,11 @@ class ConfigDialog(QtGui.QDialog):
self.hostCombobox.setEditText(currentServer)
def showErrorMessage(self, errorMessage):
- QtGui.QMessageBox.warning(self, "Syncplay", errorMessage)
+ QtWidgets.QMessageBox.warning(self, "Syncplay", errorMessage)
def browseMediapath(self):
self.loadMediaBrowseSettings()
- options = QtGui.QFileDialog.Options()
+ 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):
@@ -352,7 +353,7 @@ class ConfigDialog(QtGui.QDialog):
else:
defaultdirectory = ""
browserfilter = "All files (*)"
- fileName, filtr = QtGui.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory,
+ fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory,
browserfilter, "", options)
if fileName:
self.mediapathTextbox.setText(os.path.normpath(fileName))
@@ -508,9 +509,9 @@ class ConfigDialog(QtGui.QDialog):
self.mediaSearchDirectories = self.config["mediaSearchDirectories"]
self.trustedDomains = self.config["trustedDomains"]
- self.connectionSettingsGroup = QtGui.QGroupBox(getMessage("connection-group-title"))
+ self.connectionSettingsGroup = QtWidgets.QGroupBox(getMessage("connection-group-title"))
self.loadSavedPublicServerList()
- self.hostCombobox = QtGui.QComboBox(self)
+ self.hostCombobox = QtWidgets.QComboBox(self)
if self.publicServers:
i = 0
for publicServer in self.publicServers:
@@ -521,7 +522,7 @@ class ConfigDialog(QtGui.QDialog):
self.hostCombobox.setEditText(host)
self.hostCombobox.setFixedWidth(165)
self.hostLabel = QLabel(getMessage("host-label"), self)
- self.findServerButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + 'arrow_refresh.png'), getMessage("update-server-list-label"))
+ self.findServerButton = QtWidgets.QPushButton(QtGui.QIcon(resourcespath + 'arrow_refresh.png'), getMessage("update-server-list-label"))
self.findServerButton.clicked.connect(self.updateServerList)
self.findServerButton.setToolTip(getMessage("update-server-list-tooltip"))
self.usernameTextbox = QLineEdit(self)
@@ -545,7 +546,7 @@ class ConfigDialog(QtGui.QDialog):
self.usernameTextbox.setMaxLength(constants.MAX_USERNAME_LENGTH)
self.defaultroomTextbox.setMaxLength(constants.MAX_ROOM_NAME_LENGTH)
- self.connectionSettingsLayout = QtGui.QGridLayout()
+ self.connectionSettingsLayout = QtWidgets.QGridLayout()
self.connectionSettingsLayout.addWidget(self.hostLabel, 0, 0)
self.connectionSettingsLayout.addWidget(self.hostCombobox, 0, 1)
self.connectionSettingsLayout.addWidget(self.findServerButton, 0, 2)
@@ -562,11 +563,11 @@ class ConfigDialog(QtGui.QDialog):
self.playerargsTextbox.textEdited.connect(self.changedPlayerArgs)
self.playerargsLabel = QLabel(getMessage("player-arguments-label"), self)
- self.mediaplayerSettingsGroup = QtGui.QGroupBox(getMessage("media-setting-title"))
+ self.mediaplayerSettingsGroup = QtWidgets.QGroupBox(getMessage("media-setting-title"))
self.executableiconImage = QtGui.QImage()
self.executableiconLabel = QLabel(self)
self.executableiconLabel.setMinimumWidth(16)
- self.executablepathCombobox = QtGui.QComboBox(self)
+ self.executablepathCombobox = QtWidgets.QComboBox(self)
self.executablepathCombobox.setEditable(True)
self.executablepathCombobox.currentIndexChanged.connect(self.updateExecutableIcon)
self.executablepathCombobox.setEditText(self._tryToFillPlayerPath(config['playerPath'], playerpaths))
@@ -574,11 +575,11 @@ class ConfigDialog(QtGui.QDialog):
self.executablepathCombobox.editTextChanged.connect(self.updateExecutableIcon)
self.executablepathLabel = QLabel(getMessage("executable-path-label"), self)
- self.executablebrowseButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + 'folder_explore.png'), getMessage("browse-label"))
+ self.executablebrowseButton = QtWidgets.QPushButton(QtGui.QIcon(resourcespath + 'folder_explore.png'), getMessage("browse-label"))
self.executablebrowseButton.clicked.connect(self.browsePlayerpath)
self.mediapathTextbox = QLineEdit(config['file'], self)
self.mediapathLabel = QLabel(getMessage("media-path-label"), self)
- self.mediabrowseButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + 'folder_explore.png'), getMessage("browse-label"))
+ self.mediabrowseButton = QtWidgets.QPushButton(QtGui.QIcon(resourcespath + 'folder_explore.png'), getMessage("browse-label"))
self.mediabrowseButton.clicked.connect(self.browseMediapath)
self.executablepathLabel.setObjectName("executable-path")
@@ -588,7 +589,7 @@ class ConfigDialog(QtGui.QDialog):
self.playerargsLabel.setObjectName("player-arguments")
self.playerargsTextbox.setObjectName(constants.LOAD_SAVE_MANUALLY_MARKER + "player-arguments")
- self.mediaplayerSettingsLayout = QtGui.QGridLayout()
+ self.mediaplayerSettingsLayout = QtWidgets.QGridLayout()
self.mediaplayerSettingsLayout.addWidget(self.executablepathLabel, 0, 0)
self.mediaplayerSettingsLayout.addWidget(self.executableiconLabel, 0, 1)
self.mediaplayerSettingsLayout.addWidget(self.executablepathCombobox, 0, 2)
@@ -603,8 +604,8 @@ class ConfigDialog(QtGui.QDialog):
self.showmoreCheckbox = QCheckBox(getMessage("more-title"))
self.showmoreCheckbox.setObjectName(constants.LOAD_SAVE_MANUALLY_MARKER + "more")
- self.basicOptionsFrame = QtGui.QFrame()
- self.basicOptionsLayout = QtGui.QVBoxLayout()
+ self.basicOptionsFrame = QtWidgets.QFrame()
+ self.basicOptionsLayout = QtWidgets.QVBoxLayout()
if error:
self.errorLabel = QLabel(self)
if error[:1] != constants.ERROR_MESSAGE_MARKER:
@@ -620,19 +621,19 @@ class ConfigDialog(QtGui.QDialog):
self.basicOptionsLayout.addWidget(self.connectionSettingsGroup)
self.basicOptionsLayout.addSpacing(5)
self.basicOptionsLayout.addWidget(self.mediaplayerSettingsGroup)
- self.basicOptionsFrame.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ self.basicOptionsFrame.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
self.basicOptionsFrame.setLayout(self.basicOptionsLayout)
self.stackedLayout.addWidget(self.basicOptionsFrame)
def addReadinessTab(self):
- self.readyFrame = QtGui.QFrame()
- self.readyLayout = QtGui.QVBoxLayout()
+ self.readyFrame = QtWidgets.QFrame()
+ self.readyLayout = QtWidgets.QVBoxLayout()
self.readyFrame.setLayout(self.readyLayout)
# Initial state
- self.readyInitialGroup = QtGui.QGroupBox(getMessage("readiness-title"))
- self.readyInitialLayout = QtGui.QVBoxLayout()
+ self.readyInitialGroup = QtWidgets.QGroupBox(getMessage("readiness-title"))
+ self.readyInitialLayout = QtWidgets.QVBoxLayout()
self.readyInitialGroup.setLayout(self.readyInitialLayout)
self.readyatstartCheckbox = QCheckBox(getMessage("readyatstart-label"))
self.readyatstartCheckbox.setObjectName("readyAtStart")
@@ -640,8 +641,8 @@ class ConfigDialog(QtGui.QDialog):
self.readyLayout.addWidget(self.readyInitialGroup)
# Automatically pausing
- self.readyPauseGroup = QtGui.QGroupBox(getMessage("pausing-title"))
- self.readyPauseLayout = QtGui.QVBoxLayout()
+ self.readyPauseGroup = QtWidgets.QGroupBox(getMessage("pausing-title"))
+ self.readyPauseLayout = QtWidgets.QVBoxLayout()
self.readyPauseGroup.setLayout(self.readyPauseLayout)
self.pauseonleaveCheckbox = QCheckBox(getMessage("pauseonleave-label"))
self.pauseonleaveCheckbox.setObjectName("pauseOnLeave")
@@ -649,8 +650,8 @@ class ConfigDialog(QtGui.QDialog):
self.readyLayout.addWidget(self.readyPauseGroup)
# Unpausing
- self.readyUnpauseGroup = QtGui.QGroupBox(getMessage("unpause-title"))
- self.readyUnpauseLayout = QtGui.QVBoxLayout()
+ self.readyUnpauseGroup = QtWidgets.QGroupBox(getMessage("unpause-title"))
+ self.readyUnpauseLayout = QtWidgets.QVBoxLayout()
self.readyUnpauseGroup.setLayout(self.readyUnpauseLayout)
self.readyUnpauseButtonGroup = QButtonGroup()
self.unpauseIfAlreadyReadyOption = QRadioButton(getMessage("unpause-ifalreadyready-option"))
@@ -679,12 +680,12 @@ class ConfigDialog(QtGui.QDialog):
self.stackedLayout.addWidget(self.readyFrame)
def addMiscTab(self):
- self.miscFrame = QtGui.QFrame()
- self.miscLayout = QtGui.QVBoxLayout()
+ self.miscFrame = QtWidgets.QFrame()
+ self.miscLayout = QtWidgets.QVBoxLayout()
self.miscFrame.setLayout(self.miscLayout)
- self.coreSettingsGroup = QtGui.QGroupBox(getMessage("core-behaviour-title"))
- self.coreSettingsLayout = QtGui.QGridLayout()
+ self.coreSettingsGroup = QtWidgets.QGroupBox(getMessage("core-behaviour-title"))
+ self.coreSettingsLayout = QtWidgets.QGridLayout()
self.coreSettingsGroup.setLayout(self.coreSettingsLayout)
### Privacy:
@@ -727,8 +728,8 @@ class ConfigDialog(QtGui.QDialog):
## Syncplay internals
- self.internalSettingsGroup = QtGui.QGroupBox(getMessage("syncplay-internals-title"))
- self.internalSettingsLayout = QtGui.QVBoxLayout()
+ self.internalSettingsGroup = QtWidgets.QGroupBox(getMessage("syncplay-internals-title"))
+ self.internalSettingsLayout = QtWidgets.QVBoxLayout()
self.internalSettingsGroup.setLayout(self.internalSettingsLayout)
self.alwaysshowCheckbox = QCheckBox(getMessage("forceguiprompt-label"))
@@ -741,13 +742,13 @@ class ConfigDialog(QtGui.QDialog):
## Media path directories
- self.mediasearchSettingsGroup = QtGui.QGroupBox(getMessage("syncplay-mediasearchdirectories-title"))
- self.mediasearchSettingsLayout = QtGui.QVBoxLayout()
+ self.mediasearchSettingsGroup = QtWidgets.QGroupBox(getMessage("syncplay-mediasearchdirectories-title"))
+ self.mediasearchSettingsLayout = QtWidgets.QVBoxLayout()
self.mediasearchSettingsGroup.setLayout(self.mediasearchSettingsLayout)
self.mediasearchTextEdit = QPlainTextEdit(utils.getListAsMultilineString(self.mediaSearchDirectories))
self.mediasearchTextEdit.setObjectName(constants.LOAD_SAVE_MANUALLY_MARKER + "mediasearcdirectories-arguments")
- self.mediasearchTextEdit.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
+ self.mediasearchTextEdit.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
self.mediasearchSettingsLayout.addWidget(self.mediasearchTextEdit)
self.mediasearchSettingsGroup.setMaximumHeight(self.mediasearchSettingsGroup.minimumSizeHint().height())
@@ -758,12 +759,12 @@ class ConfigDialog(QtGui.QDialog):
self.stackedLayout.addWidget(self.miscFrame)
def addSyncTab(self):
- self.syncSettingsFrame = QtGui.QFrame()
- self.syncSettingsLayout = QtGui.QVBoxLayout()
+ self.syncSettingsFrame = QtWidgets.QFrame()
+ self.syncSettingsLayout = QtWidgets.QVBoxLayout()
- self.desyncSettingsGroup = QtGui.QGroupBox(getMessage("sync-otherslagging-title"))
- self.desyncOptionsFrame = QtGui.QFrame()
- self.desyncSettingsOptionsLayout = QtGui.QHBoxLayout()
+ self.desyncSettingsGroup = QtWidgets.QGroupBox(getMessage("sync-otherslagging-title"))
+ self.desyncOptionsFrame = QtWidgets.QFrame()
+ self.desyncSettingsOptionsLayout = QtWidgets.QHBoxLayout()
config = self.config
self.slowdownCheckbox = QCheckBox(getMessage("slowondesync-label"))
@@ -773,9 +774,9 @@ class ConfigDialog(QtGui.QDialog):
self.fastforwardCheckbox = QCheckBox(getMessage("fastforwardondesync-label"))
self.fastforwardCheckbox.setObjectName("fastforwardOnDesync")
- self.desyncSettingsLayout = QtGui.QGridLayout()
+ self.desyncSettingsLayout = QtWidgets.QGridLayout()
self.desyncSettingsLayout.setSpacing(2)
- self.desyncFrame = QtGui.QFrame()
+ self.desyncFrame = QtWidgets.QFrame()
self.desyncFrame.setLineWidth(0)
self.desyncFrame.setMidLineWidth(0)
@@ -788,9 +789,9 @@ class ConfigDialog(QtGui.QDialog):
self.desyncFrame.setLayout(self.syncSettingsLayout)
- self.othersyncSettingsGroup = QtGui.QGroupBox(getMessage("sync-youlaggging-title"))
- self.othersyncOptionsFrame = QtGui.QFrame()
- self.othersyncSettingsLayout = QtGui.QGridLayout()
+ self.othersyncSettingsGroup = QtWidgets.QGroupBox(getMessage("sync-youlaggging-title"))
+ self.othersyncOptionsFrame = QtWidgets.QFrame()
+ self.othersyncSettingsLayout = QtWidgets.QGridLayout()
self.dontslowwithmeCheckbox = QCheckBox(getMessage("dontslowdownwithme-label"))
self.dontslowwithmeCheckbox.setObjectName("dontSlowDownWithMe")
@@ -803,13 +804,13 @@ class ConfigDialog(QtGui.QDialog):
## Trusted domains
- self.trusteddomainsSettingsGroup = QtGui.QGroupBox(getMessage("syncplay-trusteddomains-title"))
- self.trusteddomainsSettingsLayout = QtGui.QVBoxLayout()
+ self.trusteddomainsSettingsGroup = QtWidgets.QGroupBox(getMessage("syncplay-trusteddomains-title"))
+ self.trusteddomainsSettingsLayout = QtWidgets.QVBoxLayout()
self.trusteddomainsSettingsGroup.setLayout(self.trusteddomainsSettingsLayout)
self.trusteddomainsTextEdit = QPlainTextEdit(utils.getListAsMultilineString(self.trustedDomains))
self.trusteddomainsTextEdit.setObjectName(constants.LOAD_SAVE_MANUALLY_MARKER + "trusteddomains-arguments")
- self.trusteddomainsTextEdit.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
+ self.trusteddomainsTextEdit.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
self.trusteddomainsSettingsLayout.addWidget(self.trusteddomainsTextEdit)
self.trusteddomainsSettingsGroup.setMaximumHeight(self.trusteddomainsSettingsGroup.minimumSizeHint().height())
@@ -824,14 +825,14 @@ class ConfigDialog(QtGui.QDialog):
self.stackedLayout.addWidget(self.syncSettingsFrame)
def addMessageTab(self):
- self.messageFrame = QtGui.QFrame()
- self.messageLayout = QtGui.QVBoxLayout()
+ self.messageFrame = QtWidgets.QFrame()
+ self.messageLayout = QtWidgets.QVBoxLayout()
self.messageLayout.setAlignment(Qt.AlignTop)
# OSD
- self.osdSettingsGroup = QtGui.QGroupBox(getMessage("messages-osd-title"))
- self.osdSettingsLayout = QtGui.QVBoxLayout()
- self.osdSettingsFrame = QtGui.QFrame()
+ self.osdSettingsGroup = QtWidgets.QGroupBox(getMessage("messages-osd-title"))
+ self.osdSettingsLayout = QtWidgets.QVBoxLayout()
+ self.osdSettingsFrame = QtWidgets.QFrame()
self.showOSDCheckbox = QCheckBox(getMessage("showosd-label"))
self.showOSDCheckbox.setObjectName("showOSD")
@@ -871,23 +872,23 @@ class ConfigDialog(QtGui.QDialog):
# Other display
- self.displaySettingsGroup = QtGui.QGroupBox(getMessage("messages-other-title"))
- self.displaySettingsLayout = QtGui.QVBoxLayout()
+ self.displaySettingsGroup = QtWidgets.QGroupBox(getMessage("messages-other-title"))
+ self.displaySettingsLayout = QtWidgets.QVBoxLayout()
self.displaySettingsLayout.setAlignment(Qt.AlignTop & Qt.AlignLeft)
- self.displaySettingsFrame = QtGui.QFrame()
+ self.displaySettingsFrame = QtWidgets.QFrame()
self.showDurationNotificationCheckbox = QCheckBox(getMessage("showdurationnotification-label"))
self.showDurationNotificationCheckbox.setObjectName("showDurationNotification")
self.displaySettingsLayout.addWidget(self.showDurationNotificationCheckbox)
- self.languageFrame = QtGui.QFrame()
- self.languageLayout = QtGui.QHBoxLayout()
+ self.languageFrame = QtWidgets.QFrame()
+ self.languageLayout = QtWidgets.QHBoxLayout()
self.languageLayout.setContentsMargins(0, 0, 0, 0)
self.languageFrame.setLayout(self.languageLayout)
- self.languageFrame.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ self.languageFrame.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
self.languageLayout.setAlignment(Qt.AlignTop & Qt.AlignLeft)
self.languageLabel = QLabel(getMessage("language-label"), self)
- self.languageCombobox = QtGui.QComboBox(self)
+ self.languageCombobox = QtWidgets.QComboBox(self)
self.languageCombobox.addItem(getMessage("automatic-language").format(getMessage("LANGUAGE", getInitialLanguage())))
self.languages = getLanguages()
@@ -917,22 +918,22 @@ class ConfigDialog(QtGui.QDialog):
config = self.config
resourcespath = self.resourcespath
- self.bottomButtonFrame = QtGui.QFrame()
- self.bottomButtonLayout = QtGui.QHBoxLayout()
- self.helpButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + u'help.png'), getMessage("help-label"))
+ self.bottomButtonFrame = QtWidgets.QFrame()
+ self.bottomButtonLayout = QtWidgets.QHBoxLayout()
+ self.helpButton = QtWidgets.QPushButton(QtGui.QIcon(self.resourcespath + u'help.png'), getMessage("help-label"))
self.helpButton.setObjectName("help")
self.helpButton.setMaximumSize(self.helpButton.sizeHint())
self.helpButton.pressed.connect(self.openHelp)
- self.resetButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + u'cog_delete.png'),getMessage("reset-label"))
+ self.resetButton = QtWidgets.QPushButton(QtGui.QIcon(resourcespath + u'cog_delete.png'),getMessage("reset-label"))
self.resetButton.setMaximumSize(self.resetButton.sizeHint())
self.resetButton.setObjectName("reset")
self.resetButton.pressed.connect(self.resetSettings)
- self.runButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + u'accept.png'), getMessage("run-label"))
+ self.runButton = QtWidgets.QPushButton(QtGui.QIcon(resourcespath + u'accept.png'), getMessage("run-label"))
self.runButton.pressed.connect(self._runWithoutStoringConfig)
self.runButton.setToolTip(getMessage("nostore-tooltip"))
- self.storeAndRunButton = QtGui.QPushButton(QtGui.QIcon(resourcespath + u'accept.png'), getMessage("storeandrun-label"))
+ self.storeAndRunButton = QtWidgets.QPushButton(QtGui.QIcon(resourcespath + u'accept.png'), getMessage("storeandrun-label"))
self.storeAndRunButton.pressed.connect(self._saveDataAndLeave)
self.bottomButtonLayout.addWidget(self.helpButton)
self.bottomButtonLayout.addWidget(self.resetButton)
@@ -942,9 +943,9 @@ class ConfigDialog(QtGui.QDialog):
self.bottomButtonLayout.setContentsMargins(5,0,5,0)
self.mainLayout.addWidget(self.bottomButtonFrame, 1, 0, 1, 2)
- self.bottomCheckboxFrame = QtGui.QFrame()
+ self.bottomCheckboxFrame = QtWidgets.QFrame()
self.bottomCheckboxFrame.setContentsMargins(0,0,0,0)
- self.bottomCheckboxLayout = QtGui.QGridLayout()
+ self.bottomCheckboxLayout = QtWidgets.QGridLayout()
self.alwaysshowCheckbox = QCheckBox(getMessage("forceguiprompt-label"))
self.enableplaylistsCheckbox = QCheckBox(getMessage("sharedplaylistenabled-label"))
@@ -957,14 +958,14 @@ class ConfigDialog(QtGui.QDialog):
self.mainLayout.addWidget(self.bottomCheckboxFrame, 2, 0, 1, 2)
def tabList(self):
- self.tabListLayout = QtGui.QHBoxLayout()
- self.tabListFrame = QtGui.QFrame()
- self.tabListWidget = QtGui.QListWidget()
- self.tabListWidget.addItem(QtGui.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"house.png"),getMessage("basics-label")))
- self.tabListWidget.addItem(QtGui.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"control_pause_blue.png"),getMessage("readiness-label")))
- self.tabListWidget.addItem(QtGui.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"film_link.png"),getMessage("sync-label")))
- self.tabListWidget.addItem(QtGui.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"comments.png"),getMessage("messages-label")))
- self.tabListWidget.addItem(QtGui.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"cog.png"),getMessage("misc-label")))
+ self.tabListLayout = QtWidgets.QHBoxLayout()
+ self.tabListFrame = QtWidgets.QFrame()
+ self.tabListWidget = QtWidgets.QListWidget()
+ self.tabListWidget.addItem(QtWidgets.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"house.png"),getMessage("basics-label")))
+ self.tabListWidget.addItem(QtWidgets.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"control_pause_blue.png"),getMessage("readiness-label")))
+ self.tabListWidget.addItem(QtWidgets.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"film_link.png"),getMessage("sync-label")))
+ self.tabListWidget.addItem(QtWidgets.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"comments.png"),getMessage("messages-label")))
+ self.tabListWidget.addItem(QtWidgets.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"cog.png"),getMessage("misc-label")))
self.tabListLayout.addWidget(self.tabListWidget)
self.tabListFrame.setLayout(self.tabListLayout)
self.tabListFrame.setFixedWidth(self.tabListFrame.minimumSizeHint().width())
@@ -1045,6 +1046,7 @@ class ConfigDialog(QtGui.QDialog):
self.config['clearGUIData'] = False
self.clearGUIData()
+ self.QtWidgets = QtWidgets
self.QtGui = QtGui
self.error = error
if sys.platform.startswith('win'):
@@ -1060,11 +1062,11 @@ class ConfigDialog(QtGui.QDialog):
self.setWindowFlags(self.windowFlags() & Qt.WindowCloseButtonHint & ~Qt.WindowContextHelpButtonHint)
self.setWindowIcon(QtGui.QIcon(resourcespath + u"syncplay.png"))
- self.stackedLayout = QtGui.QStackedLayout()
- self.stackedFrame = QtGui.QFrame()
+ self.stackedLayout = QtWidgets.QStackedLayout()
+ self.stackedFrame = QtWidgets.QFrame()
self.stackedFrame.setLayout(self.stackedLayout)
- self.mainLayout = QtGui.QGridLayout()
+ self.mainLayout = QtWidgets.QGridLayout()
self.mainLayout.setSpacing(0)
self.mainLayout.setContentsMargins(0,0,0,0)
diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
index 4250d6f..e7391d4 100644
--- a/syncplay/ui/gui.py
+++ b/syncplay/ui/gui.py
@@ -1,5 +1,5 @@
-from PySide import QtGui
-from PySide.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine
+from PySide2 import QtWidgets, QtGui
+from PySide2.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QStandardPaths
from syncplay import utils, constants, version
from syncplay.messages import getMessage
import sys
@@ -13,12 +13,12 @@ from functools import wraps
from twisted.internet import task
lastCheckedForUpdates = None
-class UserlistItemDelegate(QtGui.QStyledItemDelegate):
+class UserlistItemDelegate(QtWidgets.QStyledItemDelegate):
def __init__(self):
- QtGui.QStyledItemDelegate.__init__(self)
+ QtWidgets.QStyledItemDelegate.__init__(self)
def sizeHint(self, option, index):
- size = QtGui.QStyledItemDelegate.sizeHint(self, option, index)
+ size = QtWidgets.QStyledItemDelegate.sizeHint(self, option, index)
if (index.column() == constants.USERLIST_GUI_USERNAME_COLUMN):
size.setWidth(size.width() + constants.USERLIST_GUI_USERNAME_OFFSET)
return size
@@ -82,9 +82,9 @@ class UserlistItemDelegate(QtGui.QStyledItemDelegate):
midY - 8,
streamSwitchIconQPixmap.scaled(16, 16, Qt.KeepAspectRatio))
optionQStyleOptionViewItem.rect.setX(optionQStyleOptionViewItem.rect.x()+16)
- QtGui.QStyledItemDelegate.paint(self, itemQPainter, optionQStyleOptionViewItem, indexQModelIndex)
+ QtWidgets.QStyledItemDelegate.paint(self, itemQPainter, optionQStyleOptionViewItem, indexQModelIndex)
-class MainWindow(QtGui.QMainWindow):
+class MainWindow(QtWidgets.QMainWindow):
insertPosition = None
playlistState = []
updatingPlaylist = False
@@ -97,7 +97,7 @@ class MainWindow(QtGui.QMainWindow):
MainWindow.insertPosition = newPosition
self.playlist.forceUpdate()
- class PlaylistItemDelegate(QtGui.QStyledItemDelegate):
+ class PlaylistItemDelegate(QtWidgets.QStyledItemDelegate):
def paint(self, itemQPainter, optionQStyleOptionViewItem, indexQModelIndex):
itemQPainter.save()
currentQAbstractItemModel = indexQModelIndex.model()
@@ -115,7 +115,7 @@ class MainWindow(QtGui.QMainWindow):
currentlyplayingIconQPixmap.scaled(6, 16, Qt.KeepAspectRatio))
optionQStyleOptionViewItem.rect.setX(optionQStyleOptionViewItem.rect.x()+10)
- QtGui.QStyledItemDelegate.paint(self, itemQPainter, optionQStyleOptionViewItem, indexQModelIndex)
+ QtWidgets.QStyledItemDelegate.paint(self, itemQPainter, optionQStyleOptionViewItem, indexQModelIndex)
lineAbove = False
lineBelow = False
@@ -131,7 +131,7 @@ class MainWindow(QtGui.QMainWindow):
itemQPainter.drawLine(line)
itemQPainter.restore()
- class PlaylistGroupBox(QtGui.QGroupBox):
+ class PlaylistGroupBox(QtWidgets.QGroupBox):
def dragEnterEvent(self, event):
data = event.mimeData()
@@ -152,8 +152,8 @@ class MainWindow(QtGui.QMainWindow):
if not window.playlist.isEnabled():
return
window.setPlaylistInsertPosition(None)
- if QtGui.QDropEvent.proposedAction(event) == Qt.MoveAction:
- QtGui.QDropEvent.setDropAction(event, Qt.CopyAction) # Avoids file being deleted
+ if QtWidgets.QDropEvent.proposedAction(event) == Qt.MoveAction:
+ QtWidgets.QDropEvent.setDropAction(event, Qt.CopyAction) # Avoids file being deleted
data = event.mimeData()
urls = data.urls()
@@ -169,7 +169,7 @@ class MainWindow(QtGui.QMainWindow):
else:
super(MainWindow.PlaylistWidget, self).dropEvent(event)
- class PlaylistWidget(QtGui.QListWidget):
+ class PlaylistWidget(QtWidgets.QListWidget):
selfWindow = None
playlistIndexFilename = None
@@ -188,7 +188,7 @@ class MainWindow(QtGui.QMainWindow):
if fileIsUntrusted:
self.item(item).setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_UNTRUSTEDITEM_COLOR)))
elif fileIsAvailable:
- self.item(item).setForeground(QtGui.QBrush(QtGui.QColor(QtGui.QPalette.ColorRole(QtGui.QPalette.Text))))
+ self.item(item).setForeground(QtGui.QBrush(QtGui.QColor(QtWidgets.QPalette.ColorRole(QtWidgets.QPalette.Text))))
else:
self.item(item).setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_DIFFERENTITEM_COLOR)))
self.selfWindow._syncplayClient.fileSwitch.setFilenameWatchlist(self.selfWindow.newWatchlist)
@@ -251,8 +251,8 @@ class MainWindow(QtGui.QMainWindow):
if not window.playlist.isEnabled():
return
window.setPlaylistInsertPosition(None)
- if QtGui.QDropEvent.proposedAction(event) == Qt.MoveAction:
- QtGui.QDropEvent.setDropAction(event, Qt.CopyAction) # Avoids file being deleted
+ if QtWidgets.QDropEvent.proposedAction(event) == Qt.MoveAction:
+ QtWidgets.QDropEvent.setDropAction(event, Qt.CopyAction) # Avoids file being deleted
data = event.mimeData()
urls = data.urls()
@@ -273,17 +273,17 @@ class MainWindow(QtGui.QMainWindow):
- class topSplitter(QtGui.QSplitter):
+ class topSplitter(QtWidgets.QSplitter):
def createHandle(self):
return self.topSplitterHandle(self.orientation(), self)
- class topSplitterHandle(QtGui.QSplitterHandle):
+ class topSplitterHandle(QtWidgets.QSplitterHandle):
def mouseReleaseEvent(self, event):
- QtGui.QSplitterHandle.mouseReleaseEvent(self, event)
+ QtWidgets.QSplitterHandle.mouseReleaseEvent(self, event)
self.parent().parent().parent().updateListGeometry()
def mouseMoveEvent(self, event):
- QtGui.QSplitterHandle.mouseMoveEvent(self, event)
+ QtWidgets.QSplitterHandle.mouseMoveEvent(self, event)
self.parent().parent().parent().updateListGeometry()
def needsClient(f): # @NoSelf
@@ -408,11 +408,11 @@ class MainWindow(QtGui.QMainWindow):
if isControlledRoom:
if room == currentUser.room and currentUser.isController():
- roomitem.setIcon(QtGui.QIcon(self.resourcespath + 'lock_open.png'))
+ roomitem.setIcon(QtGui.QPixmap(self.resourcespath + 'lock_open.png'))
else:
- roomitem.setIcon(QtGui.QIcon(self.resourcespath + 'lock.png'))
+ roomitem.setIcon(QtGui.QPixmap(self.resourcespath + 'lock.png'))
else:
- roomitem.setIcon(QtGui.QIcon(self.resourcespath + 'chevrons_right.png'))
+ roomitem.setIcon(QtGui.QPixmap(self.resourcespath + 'chevrons_right.png'))
for user in rooms[room]:
useritem = QtGui.QStandardItem(user.username)
@@ -506,7 +506,7 @@ class MainWindow(QtGui.QMainWindow):
item = self.playlist.selectedIndexes()[0]
else:
item = None
- menu = QtGui.QMenu()
+ menu = QtWidgets.QMenu()
if item:
firstFile = item.sibling(item.row(), 0).data()
@@ -548,7 +548,7 @@ class MainWindow(QtGui.QMainWindow):
else:
return
- menu = QtGui.QMenu()
+ menu = QtWidgets.QMenu()
username = item.sibling(item.row(), 0).data()
if username == self._syncplayClient.userlist.currentUser.username:
shortUsername = getMessage("item-is-yours-indicator")
@@ -596,15 +596,15 @@ class MainWindow(QtGui.QMainWindow):
self.listTreeView.setFirstColumnSpanned(roomtocheck, self.listTreeView.rootIndex(), True)
roomtocheck += 1
self.listTreeView.header().setStretchLastSection(False)
- self.listTreeView.header().setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
- self.listTreeView.header().setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
- self.listTreeView.header().setResizeMode(2, QtGui.QHeaderView.ResizeToContents)
- self.listTreeView.header().setResizeMode(3, QtGui.QHeaderView.ResizeToContents)
+ self.listTreeView.header().setResizeMode(0, QtWidgets.QHeaderView.ResizeToContents)
+ self.listTreeView.header().setResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
+ self.listTreeView.header().setResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
+ self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
NarrowTabsWidth = self.listTreeView.header().sectionSize(0)+self.listTreeView.header().sectionSize(1)+self.listTreeView.header().sectionSize(2)
if self.listTreeView.header().width() < (NarrowTabsWidth+self.listTreeView.header().sectionSize(3)):
self.listTreeView.header().resizeSection(3,self.listTreeView.header().width()-NarrowTabsWidth)
else:
- self.listTreeView.header().setResizeMode(3, QtGui.QHeaderView.Stretch)
+ self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.Stretch)
self.listTreeView.expandAll()
except:
pass
@@ -677,7 +677,7 @@ class MainWindow(QtGui.QMainWindow):
def showErrorMessage(self, message, criticalerror=False):
message = unicode(message)
if criticalerror:
- QtGui.QMessageBox.critical(self, "Syncplay", message)
+ QtWidgets.QMessageBox.critical(self, "Syncplay", message)
message = message.replace(u"&", u"&").replace(u'"', u""").replace(u"<", u"<").replace(u">", u">")
message = message.replace(u"\n", u"
")
message = u"".format(constants.STYLE_ERRORNOTIFICATION) + message + u""
@@ -698,8 +698,8 @@ class MainWindow(QtGui.QMainWindow):
self._syncplayClient.sendRoom()
def seekPositionDialog(self):
- seekTime, ok = QtGui.QInputDialog.getText(self, getMessage("seektime-menu-label"),
- getMessage("seektime-msgbox-label"), QtGui.QLineEdit.Normal,
+ seekTime, ok = QtWidgets.QInputDialog.getText(self, getMessage("seektime-menu-label"),
+ getMessage("seektime-msgbox-label"), QtWidgets.QLineEdit.Normal,
u"0:00")
if ok and seekTime != '':
self.seekPosition(seekTime)
@@ -766,10 +766,10 @@ class MainWindow(QtGui.QMainWindow):
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)
+ 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
@@ -781,7 +781,7 @@ class MainWindow(QtGui.QMainWindow):
return
self.loadMediaBrowseSettings()
- options = QtGui.QFileDialog.Options()
+ 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):
@@ -789,7 +789,7 @@ class MainWindow(QtGui.QMainWindow):
else:
defaultdirectory = self.getInitialMediaDirectory()
browserfilter = "All files (*)"
- fileName, filtr = QtGui.QFileDialog.getOpenFileName(self, getMessage("browseformedia-label"), defaultdirectory,
+ fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, getMessage("browseformedia-label"), defaultdirectory,
browserfilter, "", options)
if fileName:
if sys.platform.startswith('win'):
@@ -806,7 +806,7 @@ class MainWindow(QtGui.QMainWindow):
return
self.loadMediaBrowseSettings()
- options = QtGui.QFileDialog.Options()
+ 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):
@@ -814,7 +814,7 @@ class MainWindow(QtGui.QMainWindow):
else:
defaultdirectory = self.getInitialMediaDirectory()
browserfilter = "All files (*)"
- fileNames, filtr = QtGui.QFileDialog.getOpenFileNames(self, getMessage("browseformedia-label"), defaultdirectory,
+ fileNames, filtr = QtWidgets.QFileDialog.getOpenFileNames(self, getMessage("browseformedia-label"), defaultdirectory,
browserfilter, "", options)
self.updatingPlaylist = True
if fileNames:
@@ -830,17 +830,17 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def OpenAddURIsToPlaylistDialog(self):
- URIsDialog = QtGui.QDialog()
+ URIsDialog = QtWidgets.QDialog()
URIsDialog.setWindowTitle(getMessage("adduris-msgbox-label"))
- URIsLayout = QtGui.QGridLayout()
- URIsLabel = QtGui.QLabel(getMessage("adduris-msgbox-label"))
+ URIsLayout = QtWidgets.QGridLayout()
+ URIsLabel = QtWidgets.QLabel(getMessage("adduris-msgbox-label"))
URIsLayout.addWidget(URIsLabel, 0, 0, 1, 1)
- URIsTextbox = QtGui.QPlainTextEdit()
- URIsTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
+ URIsTextbox = QtWidgets.QPlainTextEdit()
+ URIsTextbox.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
URIsLayout.addWidget(URIsTextbox, 1, 0, 1, 1)
- URIsButtonBox = QtGui.QDialogButtonBox()
+ URIsButtonBox = QtWidgets.QDialogButtonBox()
URIsButtonBox.setOrientation(Qt.Horizontal)
- URIsButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)
+ URIsButtonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Cancel)
URIsButtonBox.accepted.connect(URIsDialog.accept)
URIsButtonBox.rejected.connect(URIsDialog.reject)
URIsLayout.addWidget(URIsButtonBox, 2, 0, 1, 1)
@@ -848,7 +848,7 @@ class MainWindow(QtGui.QMainWindow):
URIsDialog.setModal(True)
URIsDialog.show()
result = URIsDialog.exec_()
- if result == QtGui.QDialog.Accepted:
+ if result == QtWidgets.QDialog.Accepted:
URIsToAdd = utils.convertMultilineStringToList(URIsTextbox.toPlainText())
self.updatingPlaylist = True
for URI in URIsToAdd:
@@ -866,17 +866,17 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def openEditPlaylistDialog(self):
oldPlaylist = utils.getListAsMultilineString(self.getPlaylistState())
- editPlaylistDialog = QtGui.QDialog()
+ editPlaylistDialog = QtWidgets.QDialog()
editPlaylistDialog.setWindowTitle(getMessage("editplaylist-msgbox-label"))
- editPlaylistLayout = QtGui.QGridLayout()
- editPlaylistLabel = QtGui.QLabel(getMessage("editplaylist-msgbox-label"))
+ editPlaylistLayout = QtWidgets.QGridLayout()
+ editPlaylistLabel = QtWidgets.QLabel(getMessage("editplaylist-msgbox-label"))
editPlaylistLayout.addWidget(editPlaylistLabel, 0, 0, 1, 1)
- editPlaylistTextbox = QtGui.QPlainTextEdit(oldPlaylist)
- editPlaylistTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
+ editPlaylistTextbox = QtWidgets.QPlainTextEdit(oldPlaylist)
+ editPlaylistTextbox.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
editPlaylistLayout.addWidget(editPlaylistTextbox, 1, 0, 1, 1)
- editPlaylistButtonBox = QtGui.QDialogButtonBox()
+ editPlaylistButtonBox = QtWidgets.QDialogButtonBox()
editPlaylistButtonBox.setOrientation(Qt.Horizontal)
- editPlaylistButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)
+ editPlaylistButtonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Cancel)
editPlaylistButtonBox.accepted.connect(editPlaylistDialog.accept)
editPlaylistButtonBox.rejected.connect(editPlaylistDialog.reject)
editPlaylistLayout.addWidget(editPlaylistButtonBox, 2, 0, 1, 1)
@@ -886,7 +886,7 @@ class MainWindow(QtGui.QMainWindow):
editPlaylistDialog.setMinimumHeight(500)
editPlaylistDialog.show()
result = editPlaylistDialog.exec_()
- if result == QtGui.QDialog.Accepted:
+ if result == QtWidgets.QDialog.Accepted:
newPlaylist = utils.convertMultilineStringToList(editPlaylistTextbox.toPlainText())
if newPlaylist <> self.playlistState and self._syncplayClient and not self.updatingPlaylist:
self.setPlaylist(newPlaylist)
@@ -895,46 +895,46 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def openSetMediaDirectoriesDialog(self):
- MediaDirectoriesDialog = QtGui.QDialog()
+ MediaDirectoriesDialog = QtWidgets.QDialog()
MediaDirectoriesDialog.setWindowTitle(getMessage("syncplay-mediasearchdirectories-title")) # TODO: Move to messages_*.py
- MediaDirectoriesLayout = QtGui.QGridLayout()
- MediaDirectoriesLabel = QtGui.QLabel(getMessage("syncplay-mediasearchdirectories-title"))
+ MediaDirectoriesLayout = QtWidgets.QGridLayout()
+ MediaDirectoriesLabel = QtWidgets.QLabel(getMessage("syncplay-mediasearchdirectories-title"))
MediaDirectoriesLayout.addWidget(MediaDirectoriesLabel, 0, 0, 1, 2)
- MediaDirectoriesTextbox = QtGui.QPlainTextEdit()
- MediaDirectoriesTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
+ MediaDirectoriesTextbox = QtWidgets.QPlainTextEdit()
+ MediaDirectoriesTextbox.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
MediaDirectoriesTextbox.setPlainText(utils.getListAsMultilineString(self.config["mediaSearchDirectories"]))
MediaDirectoriesLayout.addWidget(MediaDirectoriesTextbox, 1, 0, 1, 1)
- MediaDirectoriesButtonBox = QtGui.QDialogButtonBox()
+ MediaDirectoriesButtonBox = QtWidgets.QDialogButtonBox()
MediaDirectoriesButtonBox.setOrientation(Qt.Horizontal)
- MediaDirectoriesButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)
+ MediaDirectoriesButtonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Cancel)
MediaDirectoriesButtonBox.accepted.connect(MediaDirectoriesDialog.accept)
MediaDirectoriesButtonBox.rejected.connect(MediaDirectoriesDialog.reject)
MediaDirectoriesLayout.addWidget(MediaDirectoriesButtonBox, 2, 0, 1, 1)
- MediaDirectoriesAddFolderButton = QtGui.QPushButton(getMessage("addfolder-label"))
+ MediaDirectoriesAddFolderButton = QtWidgets.QPushButton(getMessage("addfolder-label"))
MediaDirectoriesAddFolderButton.pressed.connect(lambda: self.openAddMediaDirectoryDialog(MediaDirectoriesTextbox, MediaDirectoriesDialog))
MediaDirectoriesLayout.addWidget(MediaDirectoriesAddFolderButton, 1, 1, 1, 1, Qt.AlignTop)
MediaDirectoriesDialog.setLayout(MediaDirectoriesLayout)
MediaDirectoriesDialog.setModal(True)
MediaDirectoriesDialog.show()
result = MediaDirectoriesDialog.exec_()
- if result == QtGui.QDialog.Accepted:
+ if result == QtWidgets.QDialog.Accepted:
newMediaDirectories = utils.convertMultilineStringToList(MediaDirectoriesTextbox.toPlainText())
self._syncplayClient.fileSwitch.changeMediaDirectories(newMediaDirectories)
@needsClient
def openSetTrustedDomainsDialog(self):
- TrustedDomainsDialog = QtGui.QDialog()
+ TrustedDomainsDialog = QtWidgets.QDialog()
TrustedDomainsDialog.setWindowTitle(getMessage("syncplay-trusteddomains-title"))
- TrustedDomainsLayout = QtGui.QGridLayout()
- TrustedDomainsLabel = QtGui.QLabel(getMessage("trusteddomains-msgbox-label"))
+ TrustedDomainsLayout = QtWidgets.QGridLayout()
+ TrustedDomainsLabel = QtWidgets.QLabel(getMessage("trusteddomains-msgbox-label"))
TrustedDomainsLayout.addWidget(TrustedDomainsLabel, 0, 0, 1, 1)
- TrustedDomainsTextbox = QtGui.QPlainTextEdit()
- TrustedDomainsTextbox.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
+ TrustedDomainsTextbox = QtWidgets.QPlainTextEdit()
+ TrustedDomainsTextbox.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
TrustedDomainsTextbox.setPlainText(utils.getListAsMultilineString(self.config["trustedDomains"]))
TrustedDomainsLayout.addWidget(TrustedDomainsTextbox, 1, 0, 1, 1)
- TrustedDomainsButtonBox = QtGui.QDialogButtonBox()
+ TrustedDomainsButtonBox = QtWidgets.QDialogButtonBox()
TrustedDomainsButtonBox.setOrientation(Qt.Horizontal)
- TrustedDomainsButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)
+ TrustedDomainsButtonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok|QtWidgets.QDialogButtonBox.Cancel)
TrustedDomainsButtonBox.accepted.connect(TrustedDomainsDialog.accept)
TrustedDomainsButtonBox.rejected.connect(TrustedDomainsDialog.reject)
TrustedDomainsLayout.addWidget(TrustedDomainsButtonBox, 2, 0, 1, 1)
@@ -942,7 +942,7 @@ class MainWindow(QtGui.QMainWindow):
TrustedDomainsDialog.setModal(True)
TrustedDomainsDialog.show()
result = TrustedDomainsDialog.exec_()
- if result == QtGui.QDialog.Accepted:
+ if result == QtWidgets.QDialog.Accepted:
newTrustedDomains = utils.convertMultilineStringToList(TrustedDomainsTextbox.toPlainText())
self._syncplayClient.setTrustedDomains(newTrustedDomains)
@needsClient
@@ -954,7 +954,7 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def openAddMediaDirectoryDialog(self, MediaDirectoriesTextbox, MediaDirectoriesDialog):
- folderName = unicode(QtGui.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),QtGui.QFileDialog.ShowDirsOnly))
+ folderName = unicode(QtWidgets.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),QtWidgets.QFileDialog.ShowDirsOnly))
if folderName:
existingMediaDirs = MediaDirectoriesTextbox.toPlainText()
if existingMediaDirs == "":
@@ -967,16 +967,16 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def promptForStreamURL(self):
- streamURL, ok = QtGui.QInputDialog.getText(self, getMessage("promptforstreamurl-msgbox-label"),
- getMessage("promptforstreamurlinfo-msgbox-label"), QtGui.QLineEdit.Normal,
+ streamURL, ok = QtWidgets.QInputDialog.getText(self, getMessage("promptforstreamurl-msgbox-label"),
+ getMessage("promptforstreamurlinfo-msgbox-label"), QtWidgets.QLineEdit.Normal,
"")
if ok and streamURL != '':
self._syncplayClient._player.openFile(streamURL)
@needsClient
def createControlledRoom(self):
- controlroom, ok = QtGui.QInputDialog.getText(self, getMessage("createcontrolledroom-msgbox-label"),
- getMessage("controlledroominfo-msgbox-label"), QtGui.QLineEdit.Normal,
+ controlroom, ok = QtWidgets.QInputDialog.getText(self, getMessage("createcontrolledroom-msgbox-label"),
+ getMessage("controlledroominfo-msgbox-label"), QtWidgets.QLineEdit.Normal,
utils.stripRoomName(self._syncplayClient.getRoom()))
if ok and controlroom != '':
self._syncplayClient.createControlledRoom(controlroom)
@@ -985,7 +985,7 @@ class MainWindow(QtGui.QMainWindow):
def identifyAsController(self):
msgboxtitle = getMessage("identifyascontroller-msgbox-label")
msgboxtext = getMessage("identifyinfo-msgbox-label")
- controlpassword, ok = QtGui.QInputDialog.getText(self, msgboxtitle, msgboxtext, QtGui.QLineEdit.Normal, "")
+ controlpassword, ok = QtWidgets.QInputDialog.getText(self, msgboxtitle, msgboxtext, QtWidgets.QLineEdit.Normal, "")
if ok and controlpassword != '':
self._syncplayClient.identifyAsController(controlpassword)
@@ -1000,8 +1000,8 @@ class MainWindow(QtGui.QMainWindow):
@needsClient
def setOffset(self):
- newoffset, ok = QtGui.QInputDialog.getText(self, getMessage("setoffset-msgbox-label"),
- getMessage("offsetinfo-msgbox-label"), QtGui.QLineEdit.Normal,
+ newoffset, ok = QtWidgets.QInputDialog.getText(self, getMessage("setoffset-msgbox-label"),
+ getMessage("offsetinfo-msgbox-label"), QtWidgets.QLineEdit.Normal,
"")
if ok and newoffset != '':
o = re.match(constants.UI_OFFSET_REGEX, "o " + newoffset)
@@ -1054,8 +1054,8 @@ class MainWindow(QtGui.QMainWindow):
def addTopLayout(self, window):
window.topSplit = self.topSplitter(Qt.Horizontal, self)
- window.outputLayout = QtGui.QVBoxLayout()
- window.outputbox = QtGui.QTextBrowser()
+ window.outputLayout = QtWidgets.QVBoxLayout()
+ window.outputbox = QtWidgets.QTextBrowser()
window.outputbox.setReadOnly(True)
window.outputbox.setTextInteractionFlags(window.outputbox.textInteractionFlags() | Qt.TextSelectableByKeyboard)
window.outputbox.setOpenExternalLinks(True)
@@ -1065,24 +1065,24 @@ class MainWindow(QtGui.QMainWindow):
window.outputbox.moveCursor(QtGui.QTextCursor.End)
window.outputbox.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
- window.outputlabel = QtGui.QLabel(getMessage("notifications-heading-label"))
- window.chatInput = QtGui.QLineEdit()
+ window.outputlabel = QtWidgets.QLabel(getMessage("notifications-heading-label"))
+ window.chatInput = QtWidgets.QLineEdit()
window.chatInput.setMaxLength(constants.MAX_CHAT_MESSAGE_LENGTH)
window.chatInput.returnPressed.connect(self.sendChatMessage)
- window.chatButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + 'email_go.png'),
+ window.chatButton = QtWidgets.QPushButton(QtGui.QPixmap(self.resourcespath + 'email_go.png'),
getMessage("sendmessage-label"))
window.chatButton.pressed.connect(self.sendChatMessage)
- window.chatLayout = QtGui.QHBoxLayout()
- window.chatFrame = QtGui.QFrame()
+ window.chatLayout = QtWidgets.QHBoxLayout()
+ window.chatFrame = QtWidgets.QFrame()
window.chatFrame.setLayout(self.chatLayout)
window.chatFrame.setContentsMargins(0,0,0,0)
- window.chatFrame.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ window.chatFrame.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
window.chatLayout.setContentsMargins(0,0,0,0)
self.chatButton.setToolTip(getMessage("sendmessage-tooltip"))
window.chatLayout.addWidget(window.chatInput)
window.chatLayout.addWidget(window.chatButton)
window.chatFrame.setMaximumHeight(window.chatFrame.sizeHint().height())
- window.outputFrame = QtGui.QFrame()
+ window.outputFrame = QtWidgets.QFrame()
window.outputFrame.setLineWidth(0)
window.outputFrame.setMidLineWidth(0)
window.outputLayout.setContentsMargins(0, 0, 0, 0)
@@ -1091,47 +1091,47 @@ class MainWindow(QtGui.QMainWindow):
window.outputLayout.addWidget(window.chatFrame)
window.outputFrame.setLayout(window.outputLayout)
- window.listLayout = QtGui.QVBoxLayout()
+ window.listLayout = QtWidgets.QVBoxLayout()
window.listTreeModel = QtGui.QStandardItemModel()
- window.listTreeView = QtGui.QTreeView()
+ window.listTreeView = QtWidgets.QTreeView()
window.listTreeView.setModel(window.listTreeModel)
window.listTreeView.setIndentation(21)
window.listTreeView.doubleClicked.connect(self.roomClicked)
self.listTreeView.setContextMenuPolicy(Qt.CustomContextMenu)
- self.listTreeView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
+ self.listTreeView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.listTreeView.customContextMenuRequested.connect(self.openRoomMenu)
- window.listlabel = QtGui.QLabel(getMessage("userlist-heading-label"))
- window.listFrame = QtGui.QFrame()
+ window.listlabel = QtWidgets.QLabel(getMessage("userlist-heading-label"))
+ window.listFrame = QtWidgets.QFrame()
window.listFrame.setLineWidth(0)
window.listFrame.setMidLineWidth(0)
- window.listFrame.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
+ window.listFrame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
window.listLayout.setContentsMargins(0, 0, 0, 0)
- window.userlistLayout = QtGui.QVBoxLayout()
- window.userlistFrame = QtGui.QFrame()
+ window.userlistLayout = QtWidgets.QVBoxLayout()
+ window.userlistFrame = QtWidgets.QFrame()
window.userlistFrame.setLineWidth(0)
window.userlistFrame.setMidLineWidth(0)
- window.userlistFrame.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
+ window.userlistFrame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
window.userlistLayout.setContentsMargins(0, 0, 0, 0)
window.userlistFrame.setLayout(window.userlistLayout)
window.userlistLayout.addWidget(window.listlabel)
window.userlistLayout.addWidget(window.listTreeView)
- window.listSplit = QtGui.QSplitter(Qt.Vertical, self)
+ window.listSplit = QtWidgets.QSplitter(Qt.Vertical, self)
window.listSplit.addWidget(window.userlistFrame)
window.listLayout.addWidget(window.listSplit)
- window.roomInput = QtGui.QLineEdit()
+ window.roomInput = QtWidgets.QLineEdit()
window.roomInput.setMaxLength(constants.MAX_ROOM_NAME_LENGTH)
window.roomInput.returnPressed.connect(self.joinRoom)
- window.roomButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + 'door_in.png'),
+ window.roomButton = QtWidgets.QPushButton(QtGui.QPixmap(self.resourcespath + 'door_in.png'),
getMessage("joinroom-label"))
window.roomButton.pressed.connect(self.joinRoom)
- window.roomLayout = QtGui.QHBoxLayout()
- window.roomFrame = QtGui.QFrame()
+ window.roomLayout = QtWidgets.QHBoxLayout()
+ window.roomFrame = QtWidgets.QFrame()
window.roomFrame.setLayout(self.roomLayout)
window.roomFrame.setContentsMargins(0,0,0,0)
- window.roomFrame.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ window.roomFrame.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
window.roomLayout.setContentsMargins(0,0,0,0)
self.roomButton.setToolTip(getMessage("joinroom-tooltip"))
window.roomLayout.addWidget(window.roomInput)
@@ -1146,11 +1146,11 @@ class MainWindow(QtGui.QMainWindow):
window.topSplit.setStretchFactor(0,4)
window.topSplit.setStretchFactor(1,5)
window.mainLayout.addWidget(window.topSplit)
- window.topSplit.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding)
+ window.topSplit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
def addBottomLayout(self, window):
- window.bottomLayout = QtGui.QHBoxLayout()
- window.bottomFrame = QtGui.QFrame()
+ window.bottomLayout = QtWidgets.QHBoxLayout()
+ window.bottomFrame = QtWidgets.QFrame()
window.bottomFrame.setLayout(window.bottomLayout)
window.bottomLayout.setContentsMargins(0,0,0,0)
@@ -1159,8 +1159,8 @@ class MainWindow(QtGui.QMainWindow):
window.playlistGroup = self.PlaylistGroupBox(getMessage("sharedplaylistenabled-label"))
window.playlistGroup.setCheckable(True)
window.playlistGroup.toggled.connect(self.changePlaylistEnabledState)
- window.playlistLayout = QtGui.QHBoxLayout()
- window.playlistGroup.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
+ window.playlistLayout = QtWidgets.QHBoxLayout()
+ window.playlistGroup.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
window.playlistGroup.setAcceptDrops(True)
window.playlist = self.PlaylistWidget()
window.playlist.setWindow(window)
@@ -1168,18 +1168,18 @@ class MainWindow(QtGui.QMainWindow):
window.playlist.setDragEnabled(True)
window.playlist.setAcceptDrops(True)
window.playlist.setDropIndicatorShown(True)
- window.playlist.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
+ window.playlist.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
window.playlist.setDefaultDropAction(Qt.MoveAction)
- window.playlist.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
+ window.playlist.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
window.playlist.doubleClicked.connect(self.playlistItemClicked)
window.playlist.setContextMenuPolicy(Qt.CustomContextMenu)
- window.playlist.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
+ window.playlist.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
window.playlist.customContextMenuRequested.connect(self.openPlaylistMenu)
self.playlistUpdateTimer = task.LoopingCall(self.playlistChangeCheck)
self.playlistUpdateTimer.start(0.1, True)
noteFont = QtGui.QFont()
noteFont.setItalic(True)
- playlistItem = QtGui.QListWidgetItem(getMessage("playlist-instruction-item-message"))
+ playlistItem = QtWidgets.QListWidgetItem(getMessage("playlist-instruction-item-message"))
playlistItem.setFont(noteFont)
window.playlist.addItem(playlistItem)
playlistItem.setFont(noteFont)
@@ -1189,7 +1189,7 @@ class MainWindow(QtGui.QMainWindow):
window.playlistGroup.setLayout(window.playlistLayout)
window.listSplit.addWidget(window.playlistGroup)
- window.readyPushButton = QtGui.QPushButton()
+ window.readyPushButton = QtWidgets.QPushButton()
readyFont = QtGui.QFont()
readyFont.setWeight(QtGui.QFont.Bold)
window.readyPushButton.setText(getMessage("ready-guipushbuttonlabel"))
@@ -1201,12 +1201,12 @@ class MainWindow(QtGui.QMainWindow):
window.readyPushButton.setToolTip(getMessage("ready-tooltip"))
window.listLayout.addWidget(window.readyPushButton, Qt.AlignRight)
- window.autoplayLayout = QtGui.QHBoxLayout()
- window.autoplayFrame = QtGui.QFrame()
+ window.autoplayLayout = QtWidgets.QHBoxLayout()
+ window.autoplayFrame = QtWidgets.QFrame()
window.autoplayFrame.setVisible(False)
window.autoplayLayout.setContentsMargins(0,0,0,0)
window.autoplayFrame.setLayout(window.autoplayLayout)
- window.autoplayPushButton = QtGui.QPushButton()
+ window.autoplayPushButton = QtWidgets.QPushButton()
autoPlayFont = QtGui.QFont()
autoPlayFont.setWeight(QtGui.QFont.Bold)
window.autoplayPushButton.setText(getMessage("autoplay-guipushbuttonlabel"))
@@ -1215,13 +1215,13 @@ class MainWindow(QtGui.QMainWindow):
window.autoplayPushButton.toggled.connect(self.changeAutoplayState)
window.autoplayPushButton.setFont(autoPlayFont)
window.autoplayPushButton.setStyleSheet(constants.STYLE_AUTO_PLAY_PUSHBUTTON)
- window.autoplayPushButton.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
+ window.autoplayPushButton.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
window.autoplayPushButton.setToolTip(getMessage("autoplay-tooltip"))
- window.autoplayLabel = QtGui.QLabel(getMessage("autoplay-minimum-label"))
- window.autoplayLabel.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ window.autoplayLabel = QtWidgets.QLabel(getMessage("autoplay-minimum-label"))
+ window.autoplayLabel.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
window.autoplayLabel.setMaximumWidth(window.autoplayLabel.minimumSizeHint().width())
window.autoplayLabel.setToolTip(getMessage("autoplay-tooltip"))
- window.autoplayThresholdSpinbox = QtGui.QSpinBox()
+ window.autoplayThresholdSpinbox = QtWidgets.QSpinBox()
window.autoplayThresholdSpinbox.setMaximumWidth(window.autoplayThresholdSpinbox.minimumSizeHint().width())
window.autoplayThresholdSpinbox.setMinimum(2)
window.autoplayThresholdSpinbox.setMaximum(99)
@@ -1237,33 +1237,33 @@ class MainWindow(QtGui.QMainWindow):
window.bottomFrame.setMaximumHeight(window.bottomFrame.minimumSizeHint().height())
def addPlaybackLayout(self, window):
- window.playbackFrame = QtGui.QFrame()
+ window.playbackFrame = QtWidgets.QFrame()
window.playbackFrame.setVisible(False)
window.playbackFrame.setContentsMargins(0,0,0,0)
- window.playbackLayout = QtGui.QHBoxLayout()
+ window.playbackLayout = QtWidgets.QHBoxLayout()
window.playbackLayout.setAlignment(Qt.AlignLeft)
window.playbackLayout.setContentsMargins(0,0,0,0)
window.playbackFrame.setLayout(window.playbackLayout)
- window.seekInput = QtGui.QLineEdit()
+ window.seekInput = QtWidgets.QLineEdit()
window.seekInput.returnPressed.connect(self.seekFromButton)
- window.seekButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + u'clock_go.png'), "")
+ window.seekButton = QtWidgets.QPushButton(QtGui.QPixmap(self.resourcespath + u'clock_go.png'), "")
window.seekButton.setToolTip(getMessage("seektime-menu-label"))
window.seekButton.pressed.connect(self.seekFromButton)
window.seekInput.setText("0:00")
window.seekInput.setFixedWidth(60)
window.playbackLayout.addWidget(window.seekInput)
window.playbackLayout.addWidget(window.seekButton)
- window.unseekButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + u'arrow_undo.png'), "")
+ window.unseekButton = QtWidgets.QPushButton(QtGui.QPixmap(self.resourcespath + u'arrow_undo.png'), "")
window.unseekButton.setToolTip(getMessage("undoseek-menu-label"))
window.unseekButton.pressed.connect(self.undoSeek)
- window.miscLayout = QtGui.QHBoxLayout()
+ window.miscLayout = QtWidgets.QHBoxLayout()
window.playbackLayout.addWidget(window.unseekButton)
- window.playButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + u'control_play_blue.png'), "")
+ window.playButton = QtWidgets.QPushButton(QtGui.QPixmap(self.resourcespath + u'control_play_blue.png'), "")
window.playButton.setToolTip(getMessage("play-menu-label"))
window.playButton.pressed.connect(self.play)
window.playbackLayout.addWidget(window.playButton)
- window.pauseButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + 'control_pause_blue.png'), "")
+ window.pauseButton = QtWidgets.QPushButton(QtGui.QPixmap(self.resourcespath + 'control_pause_blue.png'), "")
window.pauseButton.setToolTip(getMessage("pause-menu-label"))
window.pauseButton.pressed.connect(self.pause)
window.playbackLayout.addWidget(window.pauseButton)
@@ -1272,54 +1272,54 @@ class MainWindow(QtGui.QMainWindow):
window.outputLayout.addWidget(window.playbackFrame)
def addMenubar(self, window):
- window.menuBar = QtGui.QMenuBar()
+ window.menuBar = QtWidgets.QMenuBar()
# File menu
- window.fileMenu = QtGui.QMenu(getMessage("file-menu-label"), self)
- window.openAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'folder_explore.png'),
+ window.fileMenu = QtWidgets.QMenu(getMessage("file-menu-label"), self)
+ window.openAction = window.fileMenu.addAction(QtGui.QPixmap(self.resourcespath + 'folder_explore.png'),
getMessage("openmedia-menu-label"))
window.openAction.triggered.connect(self.browseMediapath)
- window.openAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'world_explore.png'),
+ window.openAction = window.fileMenu.addAction(QtGui.QPixmap(self.resourcespath + 'world_explore.png'),
getMessage("openstreamurl-menu-label"))
window.openAction.triggered.connect(self.promptForStreamURL)
- window.openAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'film_folder_edit.png'),
+ window.openAction = window.fileMenu.addAction(QtGui.QPixmap(self.resourcespath + 'film_folder_edit.png'),
getMessage("setmediadirectories-menu-label"))
window.openAction.triggered.connect(self.openSetMediaDirectoriesDialog)
- window.exitAction = window.fileMenu.addAction(QtGui.QIcon(self.resourcespath + 'cross.png'),
+ window.exitAction = window.fileMenu.addAction(QtGui.QPixmap(self.resourcespath + 'cross.png'),
getMessage("exit-menu-label"))
window.exitAction.triggered.connect(self.exitSyncplay)
window.menuBar.addMenu(window.fileMenu)
# Playback menu
- window.playbackMenu = QtGui.QMenu(getMessage("playback-menu-label"), self)
- window.playAction = window.playbackMenu.addAction(QtGui.QIcon(self.resourcespath + 'control_play_blue.png'), getMessage("play-menu-label"))
+ window.playbackMenu = QtWidgets.QMenu(getMessage("playback-menu-label"), self)
+ window.playAction = window.playbackMenu.addAction(QtGui.QPixmap(self.resourcespath + 'control_play_blue.png'), getMessage("play-menu-label"))
window.playAction.triggered.connect(self.play)
- window.pauseAction = window.playbackMenu.addAction(QtGui.QIcon(self.resourcespath + 'control_pause_blue.png'), getMessage("pause-menu-label"))
+ window.pauseAction = window.playbackMenu.addAction(QtGui.QPixmap(self.resourcespath + 'control_pause_blue.png'), getMessage("pause-menu-label"))
window.pauseAction.triggered.connect(self.pause)
- window.seekAction = window.playbackMenu.addAction(QtGui.QIcon(self.resourcespath + 'clock_go.png'), getMessage("seektime-menu-label"))
+ window.seekAction = window.playbackMenu.addAction(QtGui.QPixmap(self.resourcespath + 'clock_go.png'), getMessage("seektime-menu-label"))
window.seekAction.triggered.connect(self.seekPositionDialog)
- window.unseekAction = window.playbackMenu.addAction(QtGui.QIcon(self.resourcespath + 'arrow_undo.png'), getMessage("undoseek-menu-label"))
+ window.unseekAction = window.playbackMenu.addAction(QtGui.QPixmap(self.resourcespath + 'arrow_undo.png'), getMessage("undoseek-menu-label"))
window.unseekAction.triggered.connect(self.undoSeek)
window.menuBar.addMenu(window.playbackMenu)
# Advanced menu
- window.advancedMenu = QtGui.QMenu(getMessage("advanced-menu-label"), self)
- window.setoffsetAction = window.advancedMenu.addAction(QtGui.QIcon(self.resourcespath + 'timeline_marker.png'),
+ window.advancedMenu = QtWidgets.QMenu(getMessage("advanced-menu-label"), self)
+ window.setoffsetAction = window.advancedMenu.addAction(QtGui.QPixmap(self.resourcespath + 'timeline_marker.png'),
getMessage("setoffset-menu-label"))
window.setoffsetAction.triggered.connect(self.setOffset)
- window.setTrustedDomainsAction = window.advancedMenu.addAction(QtGui.QIcon(self.resourcespath + 'shield_edit.png'),
+ window.setTrustedDomainsAction = window.advancedMenu.addAction(QtGui.QPixmap(self.resourcespath + 'shield_edit.png'),
getMessage("settrusteddomains-menu-label"))
window.setTrustedDomainsAction.triggered.connect(self.openSetTrustedDomainsDialog)
window.createcontrolledroomAction = window.advancedMenu.addAction(
- QtGui.QIcon(self.resourcespath + 'page_white_key.png'), getMessage("createcontrolledroom-menu-label"))
+ QtGui.QPixmap(self.resourcespath + 'page_white_key.png'), getMessage("createcontrolledroom-menu-label"))
window.createcontrolledroomAction.triggered.connect(self.createControlledRoom)
- window.identifyascontroller = window.advancedMenu.addAction(QtGui.QIcon(self.resourcespath + 'key_go.png'),
+ window.identifyascontroller = window.advancedMenu.addAction(QtGui.QPixmap(self.resourcespath + 'key_go.png'),
getMessage("identifyascontroller-menu-label"))
window.identifyascontroller.triggered.connect(self.identifyAsController)
@@ -1327,7 +1327,7 @@ class MainWindow(QtGui.QMainWindow):
# Window menu
- window.windowMenu = QtGui.QMenu(getMessage("window-menu-label"), self)
+ window.windowMenu = QtWidgets.QMenu(getMessage("window-menu-label"), self)
window.playbackAction = window.windowMenu.addAction(getMessage("playbackbuttons-menu-label"))
window.playbackAction.setCheckable(True)
@@ -1341,11 +1341,15 @@ class MainWindow(QtGui.QMainWindow):
# Help menu
- window.helpMenu = QtGui.QMenu(getMessage("help-menu-label"), self)
- window.userguideAction = window.helpMenu.addAction(QtGui.QIcon(self.resourcespath + 'help.png'),
+ window.helpMenu = QtWidgets.QMenu(getMessage("help-menu-label"), self)
+ if sys.platform.startswith('darwin'):
+ window.about = window.helpMenu.addAction("&About")
+ window.about.triggered.connect(self.openAbout)
+
+ window.userguideAction = window.helpMenu.addAction(QtGui.QPixmap(self.resourcespath + 'help.png'),
getMessage("userguide-menu-label"))
window.userguideAction.triggered.connect(self.openUserGuide)
- window.updateAction = window.helpMenu.addAction(QtGui.QIcon(self.resourcespath + 'application_get.png'),
+ window.updateAction = window.helpMenu.addAction(QtGui.QPixmap(self.resourcespath + 'application_get.png'),
getMessage("update-menu-label"))
window.updateAction.triggered.connect(self.userCheckForUpdates)
@@ -1353,8 +1357,11 @@ class MainWindow(QtGui.QMainWindow):
if not sys.platform.startswith('darwin'):
window.mainLayout.setMenuBar(window.menuBar)
+ def openAbout(self):
+ AboutMsgBox = QtGui.QMessageBox.about(self,"Syncplay","Syncplay v" + version)
+
def addMainFrame(self, window):
- window.mainFrame = QtGui.QFrame()
+ window.mainFrame = QtWidgets.QFrame()
window.mainFrame.setLineWidth(0)
window.mainFrame.setMidLineWidth(0)
window.mainFrame.setContentsMargins(0, 0, 0, 0)
@@ -1414,16 +1421,16 @@ class MainWindow(QtGui.QMainWindow):
def updateReadyIcon(self):
ready = self.readyPushButton.isChecked()
if ready:
- self.readyPushButton.setIcon(QtGui.QIcon(self.resourcespath + 'tick_checkbox.png'))
+ self.readyPushButton.setIcon(QtGui.QPixmap(self.resourcespath + 'tick_checkbox.png'))
else:
- self.readyPushButton.setIcon(QtGui.QIcon(self.resourcespath + 'empty_checkbox.png'))
+ self.readyPushButton.setIcon(QtGui.QPixmap(self.resourcespath + 'empty_checkbox.png'))
def updateAutoPlayIcon(self):
ready = self.autoplayPushButton.isChecked()
if ready:
- self.autoplayPushButton.setIcon(QtGui.QIcon(self.resourcespath + 'tick_checkbox.png'))
+ self.autoplayPushButton.setIcon(QtGui.QPixmap(self.resourcespath + 'tick_checkbox.png'))
else:
- self.autoplayPushButton.setIcon(QtGui.QIcon(self.resourcespath + 'empty_checkbox.png'))
+ self.autoplayPushButton.setIcon(QtGui.QPixmap(self.resourcespath + 'empty_checkbox.png'))
def automaticUpdateCheck(self):
currentDateTime = datetime.utcnow()
@@ -1459,12 +1466,12 @@ class MainWindow(QtGui.QMainWindow):
if userInitiated == True:
updateURL = constants.SYNCPLAY_DOWNLOAD_URL
if updateURL is not None:
- reply = QtGui.QMessageBox.question(self, "Syncplay",
- updateMessage, QtGui.QMessageBox.StandardButton.Yes | QtGui.QMessageBox.StandardButton.No)
- if reply == QtGui.QMessageBox.Yes:
+ reply = QtWidgets.QMessageBox.question(self, "Syncplay",
+ updateMessage, QtWidgets.QMessageBox.StandardButton.Yes | QtWidgets.QMessageBox.StandardButton.No)
+ if reply == QtWidgets.QMessageBox.Yes:
self.QtGui.QDesktopServices.openUrl(QUrl(updateURL))
elif userInitiated:
- QtGui.QMessageBox.information(self, "Syncplay", updateMessage)
+ QtWidgets.QMessageBox.information(self, "Syncplay", updateMessage)
else:
self.showMessage(updateMessage)
@@ -1476,8 +1483,8 @@ class MainWindow(QtGui.QMainWindow):
def dropEvent(self, event):
rewindFile = False
- if QtGui.QDropEvent.proposedAction(event) == Qt.MoveAction:
- QtGui.QDropEvent.setDropAction(event, Qt.CopyAction) # Avoids file being deleted
+ if QtWidgets.QDropEvent.proposedAction(event) == Qt.MoveAction:
+ QtWidgets.QDropEvent.setDropAction(event, Qt.CopyAction) # Avoids file being deleted
rewindFile = True
data = event.mimeData()
urls = data.urls()
@@ -1618,15 +1625,18 @@ class MainWindow(QtGui.QMainWindow):
self.resourcespath = utils.findWorkingDir() + u"\\resources\\"
else:
self.resourcespath = utils.findWorkingDir() + u"/resources/"
- self.setWindowFlags(self.windowFlags() & Qt.AA_DontUseNativeMenuBar)
+ if sys.platform.startswith('darwin'):
+ self.setWindowFlags(self.windowFlags())
+ else:
+ self.setWindowFlags(self.windowFlags() & Qt.AA_DontUseNativeMenuBar)
self.setWindowTitle("Syncplay v" + version)
- self.mainLayout = QtGui.QVBoxLayout()
+ self.mainLayout = QtWidgets.QVBoxLayout()
self.addTopLayout(self)
self.addBottomLayout(self)
self.addMenubar(self)
self.addMainFrame(self)
self.loadSettings()
- self.setWindowIcon(QtGui.QIcon(self.resourcespath + u"syncplay.png"))
+ self.setWindowIcon(QtGui.QPixmap(self.resourcespath + u"syncplay.png"))
self.setWindowFlags(self.windowFlags() & Qt.WindowCloseButtonHint & Qt.AA_DontUseNativeMenuBar & Qt.WindowMinimizeButtonHint & ~Qt.WindowContextHelpButtonHint)
self.show()
self.setAcceptDrops(True)
diff --git a/syncplay/utils.py b/syncplay/utils.py
index 1857127..5b8cbb4 100644
--- a/syncplay/utils.py
+++ b/syncplay/utils.py
@@ -124,6 +124,8 @@ def findWorkingDir():
path = os.path.dirname(os.path.dirname(__file__))
elif frozen in ('dll', 'console_exe', 'windows_exe'):
path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
+ elif frozen in ('macosx_app'):
+ path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))))
else:
path = ""
return path
diff --git a/syncplay/vendor/qt4reactor.py b/syncplay/vendor/qt5reactor.py
similarity index 60%
rename from syncplay/vendor/qt4reactor.py
rename to syncplay/vendor/qt5reactor.py
index a337099..b53e97b 100644
--- a/syncplay/vendor/qt4reactor.py
+++ b/syncplay/vendor/qt5reactor.py
@@ -1,5 +1,76 @@
-# Copyright (c) 2001-2011 Twisted Matrix Laboratories.
-# See LICENSE for details.
+# -*- coding: utf-8 -*-
+# Copyright (c) 2001-2017
+# Allen Short
+# Andy Gayton
+# Andrew Bennetts
+# Antoine Pitrou
+# Apple Computer, Inc.
+# Ashwini Oruganti
+# bakbuk
+# Benjamin Bruheim
+# Bob Ippolito
+# Burak Nehbit
+# Canonical Limited
+# Christopher Armstrong
+# Christopher R. Wood
+# David Reid
+# Donovan Preston
+# Elvis Stansvik
+# Eric Mangold
+# Eyal Lotem
+# Glenn Tarbox
+# Google Inc.
+# Hybrid Logic Ltd.
+# Hynek Schlawack
+# Itamar Turner-Trauring
+# James Knight
+# Jason A. Mobarak
+# Jean-Paul Calderone
+# Jessica McKellar
+# Jonathan Jacobs
+# Jonathan Lange
+# Jonathan D. Simms
+# Jürgen Hermann
+# Julian Berman
+# Kevin Horn
+# Kevin Turner
+# Kyle Altendorf
+# Laurens Van Houtven
+# Mary Gardiner
+# Matthew Lefkowitz
+# Massachusetts Institute of Technology
+# Moshe Zadka
+# Paul Swartz
+# Pavel Pergamenshchik
+# Ralph Meijer
+# Richard Wall
+# Sean Riley
+# Software Freedom Conservancy
+# Tarashish Mishra
+# Travis B. Hartwell
+# Thijs Triemstra
+# Thomas Herve
+# Timothy Allen
+# Tom Prince
+
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
@@ -7,13 +78,8 @@ This module provides support for Twisted to be driven by the Qt mainloop.
In order to use this support, simply do the following::
| app = QApplication(sys.argv) # your code to init Qt
- | import qt4reactor
- | qt4reactor.install()
-
-alternatively:
-
- | from twisted.application import reactors
- | reactors.installReactor('qt4')
+ | import qt5reactor
+ | qt5reactor.install()
Then use twisted.internet APIs as usual. The other methods here are not
intended to be called directly.
@@ -27,65 +93,61 @@ Twisted can be initialized after QApplication.exec_() with a call to
reactor.runReturn(). calling reactor.stop() will unhook twisted but
leave your Qt application running
-API Stability: stable
+Qt5 Port: U{Burak Nehbit}
-Maintainer: U{Glenn H Tarbox, PhD}
+Current maintainer: U{Christopher R. Wood}
+Previous maintainer: U{Tarashish Mishra}
+Previous maintainer: U{Glenn H Tarbox, PhD}
Previous maintainer: U{Itamar Shtull-Trauring}
Original port to QT4: U{Gabe Rudy}
Subsequent port by therve
"""
import sys
-import time
-from zope.interface import implements
+
+from PySide2.QtCore import (
+ QCoreApplication, QEventLoop, QObject, QSocketNotifier, QTimer, Signal)
+from twisted.internet import posixbase
from twisted.internet.interfaces import IReactorFDSet
from twisted.python import log, runtime
-from twisted.internet import posixbase
-from twisted.python.runtime import platformType, platform
-
-try:
- from PyQt4.QtCore import QSocketNotifier, QObject, SIGNAL, QTimer, QCoreApplication
- from PyQt4.QtCore import QEventLoop
-except ImportError:
- from PySide.QtCore import QSocketNotifier, QObject, SIGNAL, QTimer, QCoreApplication
- from PySide.QtCore import QEventLoop
+from zope.interface import implementer
class TwistedSocketNotifier(QObject):
- """
- Connection between an fd event and reader/writer callbacks.
- """
+ """Connection between an fd event and reader/writer callbacks."""
+
+ activated = Signal(int)
def __init__(self, parent, reactor, watcher, socketType):
QObject.__init__(self, parent)
self.reactor = reactor
self.watcher = watcher
- fd = watcher.fileno()
- self.notifier = QSocketNotifier(fd, socketType, parent)
+ fd = self.watcher.fileno()
+ self.notifier = QSocketNotifier(watcher, socketType, parent)
self.notifier.setEnabled(True)
if socketType == QSocketNotifier.Read:
self.fn = self.read
else:
self.fn = self.write
- QObject.connect(self.notifier, SIGNAL("activated(int)"), self.fn)
-
+ self.notifier.activated.connect(self.fn)
def shutdown(self):
self.notifier.setEnabled(False)
- self.disconnect(self.notifier, SIGNAL("activated(int)"), self.fn)
+ self.notifier.activated.disconnect(self.fn)
self.fn = self.watcher = None
self.notifier.deleteLater()
self.deleteLater()
-
def read(self, fd):
if not self.watcher:
return
w = self.watcher
- # doRead can cause self.shutdown to be called so keep a reference to self.watcher
+ # doRead can cause self.shutdown to be called so keep
+ # a reference to self.watcher
+
def _read():
- #Don't call me again, until the data has been read
+ # Don't call me again, until the data has been read
self.notifier.setEnabled(False)
why = None
try:
@@ -98,18 +160,20 @@ class TwistedSocketNotifier(QObject):
if why:
self.reactor._disconnectSelectable(w, why, inRead)
elif self.watcher:
- self.notifier.setEnabled(True) # Re enable notification following sucessfull read
+ self.notifier.setEnabled(True)
+ # Re enable notification following sucessfull read
self.reactor._iterate(fromqt=True)
+
log.callWithLogger(w, _read)
def write(self, sock):
if not self.watcher:
return
w = self.watcher
+
def _write():
why = None
self.notifier.setEnabled(False)
-
try:
why = w.doWrite()
except:
@@ -120,12 +184,13 @@ class TwistedSocketNotifier(QObject):
elif self.watcher:
self.notifier.setEnabled(True)
self.reactor._iterate(fromqt=True)
+
log.callWithLogger(w, _write)
-
+@implementer(IReactorFDSet)
class QtReactor(posixbase.PosixReactorBase):
- implements(IReactorFDSet)
+ # implements(IReactorFDSet)
def __init__(self):
self._reads = {}
@@ -133,19 +198,17 @@ class QtReactor(posixbase.PosixReactorBase):
self._notifiers = {}
self._timer = QTimer()
self._timer.setSingleShot(True)
- QObject.connect(self._timer, SIGNAL("timeout()"), self.iterate)
-
+ self._timer.timeout.connect(self.iterate_qt)
if QCoreApplication.instance() is None:
# Application Object has not been started yet
- self.qApp=QCoreApplication([])
- self._ownApp=True
+ self.qApp = QCoreApplication([])
+ self._ownApp = True
else:
self.qApp = QCoreApplication.instance()
- self._ownApp=False
+ self._ownApp = False
self._blockApp = None
posixbase.PosixReactorBase.__init__(self)
-
def _add(self, xer, primary, type):
"""
Private method for adding a descriptor from the event loop.
@@ -156,21 +219,14 @@ class QtReactor(posixbase.PosixReactorBase):
if xer not in primary:
primary[xer] = TwistedSocketNotifier(None, self, xer, type)
-
def addReader(self, reader):
- """
- Add a FileDescriptor for notification of data available to read.
- """
+ """Add a FileDescriptor for notification of data available to read."""
self._add(reader, self._reads, QSocketNotifier.Read)
-
def addWriter(self, writer):
- """
- Add a FileDescriptor for notification of data available to write.
- """
+ """Add a FileDescriptor for notification of data available to write."""
self._add(writer, self._writes, QSocketNotifier.Write)
-
def _remove(self, xer, primary):
"""
Private method for removing a descriptor from the event loop.
@@ -182,81 +238,66 @@ class QtReactor(posixbase.PosixReactorBase):
notifier = primary.pop(xer)
notifier.shutdown()
-
def removeReader(self, reader):
- """
- Remove a Selectable for notification of data available to read.
- """
+ """Remove a Selectable for notification of data available to read."""
self._remove(reader, self._reads)
-
def removeWriter(self, writer):
- """
- Remove a Selectable for notification of data available to write.
- """
+ """Remove a Selectable for notification of data available to write."""
self._remove(writer, self._writes)
-
def removeAll(self):
- """
- Remove all selectables, and return a list of them.
- """
- rv = self._removeAll(self._reads, self._writes)
- return rv
-
+ """Remove all selectables, and return a list of them."""
+ return self._removeAll(self._reads, self._writes)
def getReaders(self):
return self._reads.keys()
-
def getWriters(self):
return self._writes.keys()
-
- def callLater(self,howlong, *args, **kargs):
- rval = super(QtReactor,self).callLater(howlong, *args, **kargs)
+ def callLater(self, howlong, *args, **kargs):
+ rval = super(QtReactor, self).callLater(howlong, *args, **kargs)
self.reactorInvocation()
return rval
-
def reactorInvocation(self):
self._timer.stop()
self._timer.setInterval(0)
self._timer.start()
-
def _iterate(self, delay=None, fromqt=False):
- """See twisted.internet.interfaces.IReactorCore.iterate.
- """
+ """See twisted.internet.interfaces.IReactorCore.iterate."""
self.runUntilCurrent()
- self.doIteration(delay, fromqt)
+ self.doIteration(delay, fromqt=fromqt)
iterate = _iterate
+ def iterate_qt(self, delay=None):
+ self.iterate(delay=delay, fromqt=True)
+
def doIteration(self, delay=None, fromqt=False):
- 'This method is called by a Qt timer or by network activity on a file descriptor'
-
+ """This method is called by a Qt timer or by network activity on a file descriptor"""
if not self.running and self._blockApp:
self._blockApp.quit()
self._timer.stop()
+ if delay is None:
+ delay = 0
delay = max(delay, 1)
if not fromqt:
self.qApp.processEvents(QEventLoop.AllEvents, delay * 1000)
- if self.timeout() is None:
- timeout = 0.1
- elif self.timeout() == 0:
- timeout = 0
+ t = self.timeout()
+ if t is None:
+ timeout = 0.01
else:
- timeout = self.timeout()
+ timeout = min(t, 0.01)
self._timer.setInterval(timeout * 1000)
self._timer.start()
-
def runReturn(self, installSignalHandlers=True):
self.startRunning(installSignalHandlers=installSignalHandlers)
self.reactorInvocation()
-
def run(self, installSignalHandlers=True):
if self._ownApp:
self._blockApp = self.qApp
@@ -264,6 +305,21 @@ class QtReactor(posixbase.PosixReactorBase):
self._blockApp = QEventLoop()
self.runReturn()
self._blockApp.exec_()
+ if self.running:
+ self.stop()
+ self.runUntilCurrent()
+
+ # def sigInt(self, *args):
+ # print('I received a sigint. BAIBAI')
+ # posixbase.PosixReactorBase.sigInt()
+ #
+ # def sigTerm(self, *args):
+ # print('I received a sigterm. BAIBAI')
+ # posixbase.PosixReactorBase.sigTerm()
+ #
+ # def sigBreak(self, *args):
+ # print('I received a sigbreak. BAIBAI')
+ # posixbase.PosixReactorBase.sigBreak()
class QtEventReactor(QtReactor):
@@ -271,22 +327,15 @@ class QtEventReactor(QtReactor):
self._events = {}
super(QtEventReactor, self).__init__()
-
def addEvent(self, event, fd, action):
- """
- Add a new win32 event to the event loop.
- """
+ """Add a new win32 event to the event loop."""
self._events[event] = (fd, action)
-
def removeEvent(self, event):
- """
- Remove an event.
- """
+ """Remove an event."""
if event in self._events:
del self._events[event]
-
def doEvents(self):
handles = self._events.keys()
if len(handles) > 0:
@@ -304,46 +353,33 @@ class QtEventReactor(QtReactor):
#print 'Got an unexpected return of %r' % val
return
-
def _runAction(self, action, fd):
try:
closed = getattr(fd, action)()
except:
closed = sys.exc_info()[1]
log.deferr()
-
if closed:
self._disconnectSelectable(fd, closed, action == 'doRead')
-
- def timeout(self):
- t = super(QtEventReactor, self).timeout()
- return min(t, 0.01)
-
-
- def iterate(self, delay=None):
- """See twisted.internet.interfaces.IReactorCore.iterate.
- """
+ def iterate(self, delay=None, fromqt=False):
+ """See twisted.internet.interfaces.IReactorCore.iterate."""
self.runUntilCurrent()
self.doEvents()
- self.doIteration(delay)
+ self.doIteration(delay, fromqt=fromqt)
def posixinstall():
- """
- Install the Qt reactor.
- """
- p = QtReactor()
+ """Install the Qt reactor."""
from twisted.internet.main import installReactor
+ p = QtReactor()
installReactor(p)
def win32install():
- """
- Install the Qt reactor.
- """
- p = QtEventReactor()
+ """Install the Qt reactor."""
from twisted.internet.main import installReactor
+ p = QtEventReactor()
installReactor(p)
@@ -356,4 +392,3 @@ else:
__all__ = ["install"]
-