commit: 705539c86962a41740499bc7197fb44ccb255764 Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net> AuthorDate: Wed Oct 7 12:27:13 2020 +0000 Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net> CommitDate: Wed Oct 7 12:27:13 2020 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=705539c8
media-video/syncplay: patch gui to work with PyQt5 Package-Manager: Portage-3.0.8, Repoman-3.0.1 Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net> .../syncplay/files/syncplay-allow-PyQt5.patch | 474 +++++++++++++++++++++ ...cplay-1.6.5.ebuild => syncplay-1.6.5-r1.ebuild} | 7 +- 2 files changed, 476 insertions(+), 5 deletions(-) diff --git a/media-video/syncplay/files/syncplay-allow-PyQt5.patch b/media-video/syncplay/files/syncplay-allow-PyQt5.patch new file mode 100644 index 00000000..89c9de33 --- /dev/null +++ b/media-video/syncplay/files/syncplay-allow-PyQt5.patch @@ -0,0 +1,474 @@ +From c759525889f303195e677f9341cf325decf74809 Mon Sep 17 00:00:00 2001 +From: Andrew Ammerlaan <andrewammerl...@riseup.net> +Date: Wed, 7 Oct 2020 13:31:46 +0200 +Subject: [PATCH] PyQt5 compatability + +--- + syncplay/ui/ConfigurationGetter.py | 4 +- + syncplay/ui/GuiConfiguration.py | 16 ++-- + syncplay/ui/gui.py | 130 ++++++++++++++++------------- + 3 files changed, 82 insertions(+), 68 deletions(-) + +diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py +index dd1d8ec0..6d83c650 100755 +--- a/syncplay/ui/ConfigurationGetter.py ++++ b/syncplay/ui/ConfigurationGetter.py +@@ -513,10 +513,10 @@ def getConfiguration(self): + self._overrideConfigWithArgs(args) + if not self._config['noGui']: + try: +- from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2 ++ from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2, IsPyQt5 + from syncplay.vendor.Qt.QtCore import QCoreApplication + from syncplay.vendor import qt5reactor +- if not (IsPySide2 or IsPySide): ++ if not (IsPySide2 or IsPySide or IsPyQt5): + raise ImportError + if QCoreApplication.instance() is None: + self.app = QtWidgets.QApplication(sys.argv) +diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py +index 96915814..cfe51b26 100755 +--- a/syncplay/ui/GuiConfiguration.py ++++ b/syncplay/ui/GuiConfiguration.py +@@ -11,7 +11,7 @@ + from syncplay.utils import isBSD, isLinux, isMacOS, isWindows + from syncplay.utils import resourcespath, posixresourcespath + +-from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 ++from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, IsPySide, IsPySide2, IsPyQt5 + from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine, QEventLoop, Signal + from syncplay.vendor.Qt.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit + from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices +@@ -21,6 +21,8 @@ + QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) + if IsPySide2: + from PySide2.QtCore import QStandardPaths ++elif IsPyQt5: ++ from PyQt5.QtCore import QStandardPaths + + + class GuiConfiguration: +@@ -445,7 +447,7 @@ def browseMediapath(self): + defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.HomeLocation) + else: + defaultdirectory = "" +- elif IsPySide2: ++ elif IsPySide2 or IsPyQt5: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif os.path.isdir(self.mediadirectory): +@@ -1181,7 +1183,7 @@ def addMessageTab(self): + + self.displaySettingsGroup = QtWidgets.QGroupBox(getMessage("messages-other-title")) + self.displaySettingsLayout = QtWidgets.QVBoxLayout() +- self.displaySettingsLayout.setAlignment(Qt.AlignTop & Qt.AlignLeft) ++ self.displaySettingsLayout.setAlignment(Qt.AlignTop | Qt.AlignLeft) + self.displaySettingsFrame = QtWidgets.QFrame() + + self.showDurationNotificationCheckbox = QCheckBox(getMessage("showdurationnotification-label")) +@@ -1193,7 +1195,7 @@ def addMessageTab(self): + self.languageLayout.setContentsMargins(0, 0, 0, 0) + self.languageFrame.setLayout(self.languageLayout) + self.languageFrame.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) +- self.languageLayout.setAlignment(Qt.AlignTop & Qt.AlignLeft) ++ self.languageLayout.setAlignment(Qt.AlignTop | Qt.AlignLeft) + self.languageLabel = QLabel(getMessage("language-label"), self) + self.languageCombobox = QtWidgets.QComboBox(self) + self.languageCombobox.addItem(getMessage("automatic-language").format(getMessage("LANGUAGE", getInitialLanguage()))) +@@ -1214,7 +1216,7 @@ def addMessageTab(self): + + self.displaySettingsGroup.setLayout(self.displaySettingsLayout) + self.displaySettingsGroup.setMaximumHeight(self.displaySettingsGroup.minimumSizeHint().height()) +- self.displaySettingsLayout.setAlignment(Qt.AlignTop & Qt.AlignLeft) ++ self.displaySettingsLayout.setAlignment(Qt.AlignTop | Qt.AlignLeft) + self.messageLayout.addWidget(self.displaySettingsGroup) + + # messageFrame +@@ -1394,7 +1396,9 @@ def __init__(self, config, playerpaths, error, defaultConfig): + self.publicServerAddresses = [] + + self._playerProbeThread = GetPlayerIconThread() +- self._playerProbeThread.done.connect(self._updateExecutableIcon) ++ # To-Do: Why does this not work with PyQt5 ++ if not IsPyQt5: ++ self._playerProbeThread.done.connect(self._updateExecutableIcon) + self._playerProbeThread.start() + + if self.config['clearGUIData'] == True: +diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py +index c59c5697..a8fe427d 100755 +--- a/syncplay/ui/gui.py ++++ b/syncplay/ui/gui.py +@@ -18,8 +18,7 @@ + from syncplay.utils import resourcespath + from syncplay.utils import isLinux, isWindows, isMacOS + from syncplay.utils import formatTime, sameFilename, sameFilesize, sameFileduration, RoomPasswordProvider, formatSize, isURL +-from syncplay.vendor import Qt +-from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, __binding_version__, __qt_version__, IsPySide, IsPySide2 ++from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, __binding_version__, __qt_version__, IsPySide, IsPySide2, IsPyQt5 + from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime + applyDPIScaling = True + if isLinux(): +@@ -32,15 +31,17 @@ + QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, applyDPIScaling) + if IsPySide2: + from PySide2.QtCore import QStandardPaths ++elif IsPyQt5: ++ from PyQt5.QtCore import QStandardPaths + if isMacOS() and IsPySide: + from Foundation import NSURL + from Cocoa import NSString, NSUTF8StringEncoding + lastCheckedForUpdates = None + from syncplay.vendor import darkdetect + if isMacOS(): +- isDarkMode = darkdetect.isDark() ++ isDarkMode = darkdetect.isDark() + else: +- isDarkMode = None ++ isDarkMode = None + + + class ConsoleInGUI(ConsoleUI): +@@ -139,7 +140,7 @@ def __init__(self, parent=None): + self.setWindowTitle(getMessage("about-dialog-title")) + if isWindows(): + self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) +- self.setWindowIcon(QtGui.QPixmap(resourcespath + 'syncplay.png')) ++ self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'syncplay.png'))) + nameLabel = QtWidgets.QLabel("<center><strong>Syncplay</strong></center>") + nameLabel.setFont(QtGui.QFont("Helvetica", 18)) + linkLabel = QtWidgets.QLabel() +@@ -202,7 +203,7 @@ def __init__(self, tlsData, parent=None): + self.setWindowTitle(getMessage("tls-information-title")) + if isWindows(): + self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) +- self.setWindowIcon(QtGui.QPixmap(resourcespath + 'syncplay.png')) ++ self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'syncplay.png'))) + statusLabel = QtWidgets.QLabel(getMessage("tls-dialog-status-label").format(tlsData["subject"])) + descLabel = QtWidgets.QLabel(getMessage("tls-dialog-desc-label").format(tlsData["subject"])) + connDataLabel = QtWidgets.QLabel(getMessage("tls-dialog-connection-label").format(tlsData["protocolVersion"], tlsData["cipher"])) +@@ -454,6 +455,15 @@ def mouseMoveEvent(self, event): + def needsClient(f): # @NoSelf + @wraps(f) + def wrapper(self, *args, **kwds): ++ # To-Do: For some strange reason the args tumple contains False ++ # for some functions, resulting in a crash as the function only accepts ++ # one argument (self). I do not understand where this 'False' is coming ++ # from, it does not seem to be added when the function is called. ++ # This very ugly workaround fixes the problem ++ if IsPyQt5: ++ if len(args)>0: ++ if not args[0]: ++ args = () + if not self._syncplayClient: + self.showDebugMessage("Tried to use client before it was ready!") + return +@@ -614,11 +624,11 @@ def showUserList(self, currentUser, rooms): + + if isControlledRoom: + if room == currentUser.room and currentUser.isController(): +- roomitem.setIcon(QtGui.QPixmap(resourcespath + 'lock_open.png')) ++ roomitem.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'lock_open.png'))) + else: +- roomitem.setIcon(QtGui.QPixmap(resourcespath + 'lock.png')) ++ roomitem.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'lock.png'))) + else: +- roomitem.setIcon(QtGui.QPixmap(resourcespath + 'chevrons_right.png')) ++ roomitem.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'chevrons_right.png'))) + + for user in rooms[room]: + useritem = QtGui.QStandardItem(user.username) +@@ -719,31 +729,31 @@ def openPlaylistMenu(self, position): + pathFound = self._syncplayClient.fileSwitch.findFilepath(firstFile) if not isURL(firstFile) else None + if self._syncplayClient.userlist.currentUser.file is None or firstFile != self._syncplayClient.userlist.currentUser.file["name"]: + if isURL(firstFile): +- menu.addAction(QtGui.QPixmap(resourcespath + "world_go.png"), getMessage("openstreamurl-menu-label"), lambda: self.openFile(firstFile, resetPosition=True, fromUser=True)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "world_go.png")), getMessage("openstreamurl-menu-label"), lambda: self.openFile(firstFile, resetPosition=True, fromUser=True)) + elif pathFound: +- menu.addAction(QtGui.QPixmap(resourcespath + "film_go.png"), getMessage("openmedia-menu-label"), lambda: self.openFile(pathFound, resetPosition=True, fromUser=True)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "film_go.png")), getMessage("openmedia-menu-label"), lambda: self.openFile(pathFound, resetPosition=True, fromUser=True)) + if pathFound: +- menu.addAction(QtGui.QPixmap(resourcespath + "folder_film.png"), ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "folder_film.png")), + getMessage('open-containing-folder'), + lambda: utils.open_system_file_browser(pathFound)) + if self._syncplayClient.isUntrustedTrustableURI(firstFile): + domain = utils.getDomainFromURL(firstFile) +- menu.addAction(QtGui.QPixmap(resourcespath + "shield_add.png"), getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain)) +- menu.addAction(QtGui.QPixmap(resourcespath + "delete.png"), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "shield_add.png")), getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "delete.png")), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) + menu.addSeparator() +- menu.addAction(QtGui.QPixmap(resourcespath + "arrow_switch.png"), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) +- menu.addAction(QtGui.QPixmap(resourcespath + "arrow_switch.png"), getMessage("shuffleentireplaylist-menu-label"), lambda: self.shuffleEntirePlaylist()) +- menu.addAction(QtGui.QPixmap(resourcespath + "arrow_undo.png"), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) +- menu.addAction(QtGui.QPixmap(resourcespath + "film_edit.png"), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) +- menu.addAction(QtGui.QPixmap(resourcespath + "film_add.png"), getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) +- menu.addAction(QtGui.QPixmap(resourcespath + "world_add.png"), getMessage("addurlstoplaylist-menu-label"), lambda: self.OpenAddURIsToPlaylistDialog()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "arrow_switch.png")), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "arrow_switch.png")), getMessage("shuffleentireplaylist-menu-label"), lambda: self.shuffleEntirePlaylist()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "arrow_undo.png")), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "film_edit.png")), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "film_add.png")), getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "world_add.png")), getMessage("addurlstoplaylist-menu-label"), lambda: self.OpenAddURIsToPlaylistDialog()) + menu.addSeparator() + menu.addAction(getMessage("loadplaylistfromfile-menu-label"),lambda: self.OpenLoadPlaylistFromFileDialog()) # TODO: Add icon + menu.addAction("Load and shuffle playlist from file",lambda: self.OpenLoadPlaylistFromFileDialog(shuffle=True)) # TODO: Add icon and messages_en + menu.addAction(getMessage("saveplaylisttofile-menu-label"),lambda: self.OpenSavePlaylistToFileDialog()) # TODO: Add icon + menu.addSeparator() +- menu.addAction(QtGui.QPixmap(resourcespath + "film_folder_edit.png"), getMessage("setmediadirectories-menu-label"), lambda: self.openSetMediaDirectoriesDialog()) +- menu.addAction(QtGui.QPixmap(resourcespath + "shield_edit.png"), getMessage("settrusteddomains-menu-label"), lambda: self.openSetTrustedDomainsDialog()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "film_folder_edit.png")), getMessage("setmediadirectories-menu-label"), lambda: self.openSetMediaDirectoriesDialog()) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "shield_edit.png")), getMessage("settrusteddomains-menu-label"), lambda: self.openSetTrustedDomainsDialog()) + menu.exec_(self.playlist.viewport().mapToGlobal(position)) + + def openRoomMenu(self, position): +@@ -778,25 +788,25 @@ def openRoomMenu(self, position): + elif username and filename and filename != getMessage("nofile-note"): + if self.config['sharedPlaylistEnabled'] and not self.isItemInPlaylist(filename): + if isURL(filename): +- menu.addAction(QtGui.QPixmap(resourcespath + "world_add.png"), addUsersStreamToPlaylistLabelText, lambda: self.addStreamToPlaylist(filename)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "world_add.png")), addUsersStreamToPlaylistLabelText, lambda: self.addStreamToPlaylist(filename)) + else: +- menu.addAction(QtGui.QPixmap(resourcespath + "film_add.png"), addUsersFileToPlaylistLabelText, lambda: self.addStreamToPlaylist(filename)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "film_add.png")), addUsersFileToPlaylistLabelText, lambda: self.addStreamToPlaylist(filename)) + + if self._syncplayClient.userlist.currentUser.file is None or filename != self._syncplayClient.userlist.currentUser.file["name"]: + if isURL(filename): +- menu.addAction(QtGui.QPixmap(resourcespath + "world_go.png"), getMessage("openusersstream-menu-label").format(shortUsername), lambda: self.openFile(filename, resetPosition=False, fromUser=True)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "world_go.png")), getMessage("openusersstream-menu-label").format(shortUsername), lambda: self.openFile(filename, resetPosition=False, fromUser=True)) + else: + pathFound = self._syncplayClient.fileSwitch.findFilepath(filename) + if pathFound: +- menu.addAction(QtGui.QPixmap(resourcespath + "film_go.png"), getMessage("openusersfile-menu-label").format(shortUsername), lambda: self.openFile(pathFound, resetPosition=False, fromUser=True)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "film_go.png")), getMessage("openusersfile-menu-label").format(shortUsername), lambda: self.openFile(pathFound, resetPosition=False, fromUser=True)) + if self._syncplayClient.isUntrustedTrustableURI(filename): + domain = utils.getDomainFromURL(filename) +- menu.addAction(QtGui.QPixmap(resourcespath + "shield_add.png"), getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "shield_add.png")), getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain)) + + if not isURL(filename) and filename != getMessage("nofile-note"): + path = self._syncplayClient.fileSwitch.findFilepath(filename) + if path: +- menu.addAction(QtGui.QPixmap(resourcespath + "folder_film.png"), getMessage('open-containing-folder'), lambda: utils.open_system_file_browser(path)) ++ menu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + "folder_film.png")), getMessage('open-containing-folder'), lambda: utils.open_system_file_browser(path)) + else: + return + menu.exec_(self.listTreeView.viewport().mapToGlobal(position)) +@@ -808,7 +818,7 @@ def updateListGeometry(self): + self.listTreeView.setFirstColumnSpanned(roomtocheck, self.listTreeView.rootIndex(), True) + roomtocheck += 1 + self.listTreeView.header().setStretchLastSection(False) +- if IsPySide2: ++ if IsPySide2 or IsPyQt5: + self.listTreeView.header().setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) +@@ -822,7 +832,7 @@ def updateListGeometry(self): + if self.listTreeView.header().width() < (NarrowTabsWidth+self.listTreeView.header().sectionSize(3)): + self.listTreeView.header().resizeSection(3, self.listTreeView.header().width()-NarrowTabsWidth) + else: +- if IsPySide2: ++ if IsPySide2 or IsPyQt5: + self.listTreeView.header().setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch) + if IsPySide: + self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.Stretch) +@@ -1003,7 +1013,7 @@ def getInitialMediaDirectory(self, includeUserSpecifiedDirectories=True): + defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation) + else: + defaultdirectory = "" +- elif IsPySide2: ++ elif IsPySide2 or IsPyQt5: + 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): +@@ -1410,7 +1420,7 @@ def addTopLayout(self, window): + window.chatInput.setMaxLength(constants.MAX_CHAT_MESSAGE_LENGTH) + window.chatInput.returnPressed.connect(self.sendChatMessage) + window.chatButton = QtWidgets.QPushButton( +- QtGui.QPixmap(resourcespath + 'email_go.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'email_go.png')), + getMessage("sendmessage-label")) + window.chatButton.pressed.connect(self.sendChatMessage) + window.chatLayout = QtWidgets.QHBoxLayout() +@@ -1445,7 +1455,7 @@ def addTopLayout(self, window): + window.listlabel = QtWidgets.QLabel(getMessage("userlist-heading-label")) + if isMacOS: + window.listlabel.setMinimumHeight(21) +- window.sslButton = QtWidgets.QPushButton(QtGui.QPixmap(resourcespath + 'lock_green.png').scaled(14, 14),"") ++ window.sslButton = QtWidgets.QPushButton(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'lock_green.png').scaled(14, 14)),"") + window.sslButton.setVisible(False) + window.sslButton.setFixedHeight(21) + window.sslButton.setFixedWidth(21) +@@ -1453,7 +1463,7 @@ def addTopLayout(self, window): + window.sslButton.setStyleSheet("QPushButton:!hover{border: 1px solid gray;} QPushButton:hover{border:2px solid black;}") + else: + window.listlabel.setMinimumHeight(27) +- window.sslButton = QtWidgets.QPushButton(QtGui.QPixmap(resourcespath + 'lock_green.png'),"") ++ window.sslButton = QtWidgets.QPushButton(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'lock_green.png')),"") + window.sslButton.setVisible(False) + window.sslButton.setFixedHeight(27) + window.sslButton.setFixedWidth(27) +@@ -1485,7 +1495,7 @@ def addTopLayout(self, window): + window.roomsCombobox.setEditable(True) + #window.roomsCombobox.setMaxLength(constants.MAX_ROOM_NAME_LENGTH) + window.roomButton = QtWidgets.QPushButton( +- QtGui.QPixmap(resourcespath + 'door_in.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'door_in.png')), + getMessage("joinroom-label")) + window.roomButton.pressed.connect(self.joinRoom) + window.roomButton.setFixedWidth(window.roomButton.sizeHint().width()+3) +@@ -1620,24 +1630,24 @@ def addPlaybackLayout(self, window): + window.playbackFrame.setLayout(window.playbackLayout) + window.seekInput = QtWidgets.QLineEdit() + window.seekInput.returnPressed.connect(self.seekFromButton) +- window.seekButton = QtWidgets.QPushButton(QtGui.QPixmap(resourcespath + 'clock_go.png'), "") ++ window.seekButton = QtWidgets.QPushButton(QtGui.QIcon(QtGui.QPixmap(resourcespath + '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 = QtWidgets.QPushButton(QtGui.QPixmap(resourcespath + 'arrow_undo.png'), "") ++ window.unseekButton = QtWidgets.QPushButton(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'arrow_undo.png')), "") + window.unseekButton.setToolTip(getMessage("undoseek-menu-label")) + window.unseekButton.pressed.connect(self.undoSeek) + + window.miscLayout = QtWidgets.QHBoxLayout() + window.playbackLayout.addWidget(window.unseekButton) +- window.playButton = QtWidgets.QPushButton(QtGui.QPixmap(resourcespath + 'control_play_blue.png'), "") ++ window.playButton = QtWidgets.QPushButton(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'control_play_blue.png')), "") + window.playButton.setToolTip(getMessage("play-menu-label")) + window.playButton.pressed.connect(self.play) + window.playbackLayout.addWidget(window.playButton) +- window.pauseButton = QtWidgets.QPushButton(QtGui.QPixmap(resourcespath + 'control_pause_blue.png'), "") ++ window.pauseButton = QtWidgets.QPushButton(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'control_pause_blue.png')), "") + window.pauseButton.setToolTip(getMessage("pause-menu-label")) + window.pauseButton.pressed.connect(self.pause) + window.playbackLayout.addWidget(window.pauseButton) +@@ -1657,13 +1667,13 @@ def populateMenubar(self, window): + # File menu + + window.fileMenu = QtWidgets.QMenu(getMessage("file-menu-label"), self) +- window.openAction = window.fileMenu.addAction(QtGui.QPixmap(resourcespath + 'folder_explore.png'), ++ window.openAction = window.fileMenu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'folder_explore.png')), + getMessage("openmedia-menu-label")) + window.openAction.triggered.connect(self.browseMediapath) +- window.openAction = window.fileMenu.addAction(QtGui.QPixmap(resourcespath + 'world_explore.png'), ++ window.openAction = window.fileMenu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'world_explore.png')), + getMessage("openstreamurl-menu-label")) + window.openAction.triggered.connect(self.promptForStreamURL) +- window.openAction = window.fileMenu.addAction(QtGui.QPixmap(resourcespath + 'film_folder_edit.png'), ++ window.openAction = window.fileMenu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'film_folder_edit.png')), + getMessage("setmediadirectories-menu-label")) + window.openAction.triggered.connect(self.openSetMediaDirectoriesDialog) + +@@ -1671,7 +1681,7 @@ def populateMenubar(self, window): + if isMacOS(): + window.exitAction.setMenuRole(QtWidgets.QAction.QuitRole) + else: +- window.exitAction.setIcon(QtGui.QPixmap(resourcespath + 'cross.png')) ++ window.exitAction.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'cross.png'))) + window.exitAction.triggered.connect(self.exitSyncplay) + + if(window.editMenu is not None): +@@ -1683,19 +1693,19 @@ def populateMenubar(self, window): + + window.playbackMenu = QtWidgets.QMenu(getMessage("playback-menu-label"), self) + window.playAction = window.playbackMenu.addAction( +- QtGui.QPixmap(resourcespath + 'control_play_blue.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'control_play_blue.png')), + getMessage("play-menu-label")) + window.playAction.triggered.connect(self.play) + window.pauseAction = window.playbackMenu.addAction( +- QtGui.QPixmap(resourcespath + 'control_pause_blue.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'control_pause_blue.png')), + getMessage("pause-menu-label")) + window.pauseAction.triggered.connect(self.pause) + window.seekAction = window.playbackMenu.addAction( +- QtGui.QPixmap(resourcespath + 'clock_go.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'clock_go.png')), + getMessage("seektime-menu-label")) + window.seekAction.triggered.connect(self.seekPositionDialog) + window.unseekAction = window.playbackMenu.addAction( +- QtGui.QPixmap(resourcespath + 'arrow_undo.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'arrow_undo.png')), + getMessage("undoseek-menu-label")) + window.unseekAction.triggered.connect(self.undoSeek) + +@@ -1705,17 +1715,17 @@ def populateMenubar(self, window): + + window.advancedMenu = QtWidgets.QMenu(getMessage("advanced-menu-label"), self) + window.setoffsetAction = window.advancedMenu.addAction( +- QtGui.QPixmap(resourcespath + 'timeline_marker.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'timeline_marker.png')), + getMessage("setoffset-menu-label")) + window.setoffsetAction.triggered.connect(self.setOffset) + window.setTrustedDomainsAction = window.advancedMenu.addAction( +- QtGui.QPixmap(resourcespath + 'shield_edit.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'shield_edit.png')), + getMessage("settrusteddomains-menu-label")) + window.setTrustedDomainsAction.triggered.connect(self.openSetTrustedDomainsDialog) + window.createcontrolledroomAction = window.advancedMenu.addAction( +- QtGui.QPixmap(resourcespath + 'page_white_key.png'), getMessage("createcontrolledroom-menu-label")) ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'page_white_key.png')), getMessage("createcontrolledroom-menu-label")) + window.createcontrolledroomAction.triggered.connect(self.createControlledRoom) +- window.identifyascontroller = window.advancedMenu.addAction(QtGui.QPixmap(resourcespath + 'key_go.png'), ++ window.identifyascontroller = window.advancedMenu.addAction(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'key_go.png')), + getMessage("identifyascontroller-menu-label")) + window.identifyascontroller.triggered.connect(self.identifyAsController) + +@@ -1743,18 +1753,18 @@ def populateMenubar(self, window): + window.helpMenu = QtWidgets.QMenu(getMessage("help-menu-label"), self) + + window.userguideAction = window.helpMenu.addAction( +- QtGui.QPixmap(resourcespath + 'help.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'help.png')), + getMessage("userguide-menu-label")) + window.userguideAction.triggered.connect(self.openUserGuide) + window.updateAction = window.helpMenu.addAction( +- QtGui.QPixmap(resourcespath + 'application_get.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'application_get.png')), + getMessage("update-menu-label")) + window.updateAction.triggered.connect(self.userCheckForUpdates) + + if not isMacOS(): + window.helpMenu.addSeparator() + window.about = window.helpMenu.addAction( +- QtGui.QPixmap(resourcespath + 'syncplay.png'), ++ QtGui.QIcon(QtGui.QPixmap(resourcespath + 'syncplay.png')), + getMessage("about-menu-label")) + else: + window.about = window.helpMenu.addAction("&About") +@@ -1835,16 +1845,16 @@ def changeAutoplayState(self, source=None): + def updateReadyIcon(self): + ready = self.readyPushButton.isChecked() + if ready: +- self.readyPushButton.setIcon(QtGui.QPixmap(resourcespath + 'tick_checkbox.png')) ++ self.readyPushButton.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'tick_checkbox.png'))) + else: +- self.readyPushButton.setIcon(QtGui.QPixmap(resourcespath + 'empty_checkbox.png')) ++ self.readyPushButton.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'empty_checkbox.png'))) + + def updateAutoPlayIcon(self): + ready = self.autoplayPushButton.isChecked() + if ready: +- self.autoplayPushButton.setIcon(QtGui.QPixmap(resourcespath + 'tick_checkbox.png')) ++ self.autoplayPushButton.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'tick_checkbox.png'))) + else: +- self.autoplayPushButton.setIcon(QtGui.QPixmap(resourcespath + 'empty_checkbox.png')) ++ self.autoplayPushButton.setIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + 'empty_checkbox.png'))) + + def automaticUpdateCheck(self): + currentDateTimeValue = QDateTime.currentDateTime() +@@ -2060,7 +2070,7 @@ def __init__(self, passedBar=None): + self.populateMenubar(self) + self.addMainFrame(self) + self.loadSettings() +- self.setWindowIcon(QtGui.QPixmap(resourcespath + "syncplay.png")) ++ self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(resourcespath + "syncplay.png"))) + self.setWindowFlags(self.windowFlags() & Qt.WindowCloseButtonHint & Qt.WindowMinimizeButtonHint & ~Qt.WindowContextHelpButtonHint) + self.show() + self.setAcceptDrops(True) + diff --git a/media-video/syncplay/syncplay-1.6.5.ebuild b/media-video/syncplay/syncplay-1.6.5-r1.ebuild similarity index 84% rename from media-video/syncplay/syncplay-1.6.5.ebuild rename to media-video/syncplay/syncplay-1.6.5-r1.ebuild index fe57aa04..7f1ad024 100644 --- a/media-video/syncplay/syncplay-1.6.5.ebuild +++ b/media-video/syncplay/syncplay-1.6.5-r1.ebuild @@ -30,11 +30,10 @@ RDEPEND=" vlc? ( media-video/vlc[lua] ) mpv? ( media-video/mpv[lua] ) mplayer? ( media-video/mplayer ) + client? ( dev-python/QtPy[${PYTHON_USEDEP},gui] ) " -# RDEPEND on PySide2 for gui, but not packaged here at the moment -# It is a too big and complex package for me to maintain -# You can find PySide2 in the ::raiagent overlay +PATCHES=( "${FILESDIR}/${PN}-allow-PyQt5.patch" ) python_install() { local MY_MAKEOPTS=( DESTDIR="${D}" PREFIX=/usr ) @@ -51,8 +50,6 @@ python_install() { pkg_postinst() { xdg_pkg_postinst - optfeature "using the GUI (you can find it in the raiagent overlay)\n" dev-python/pyside2 - if use client; then elog "Syncplay supports the following players:" elog "media-video/mpv, media-video/mplayer, media-video/vlc\n"