MCPcopy Create free account
hub / github.com/Syncplay/syncplay / openRoomMenu

Method openRoomMenu

syncplay/ui/gui.py:774–834  ·  view source on GitHub ↗
(self, position)

Source from the content-addressed store, hash-verified

772 menu.exec_(self.playlist.viewport().mapToGlobal(position))
773
774 def openRoomMenu(self, position):
775 # TODO: Deselect items after right click
776 indexes = self.listTreeView.selectedIndexes()
777 if len(indexes) > 0:
778 item = self.listTreeView.selectedIndexes()[0]
779 else:
780 return
781
782 menu = QtWidgets.QMenu()
783 username = item.sibling(item.row(), 0).data()
784
785 if len(username) < 15:
786 shortUsername = username
787 else:
788 shortUsername = "{}...".format(username[0:12])
789
790 if username == self._syncplayClient.userlist.currentUser.username:
791 addUsersFileToPlaylistLabelText = getMessage("addyourfiletoplaylist-menu-label")
792 addUsersStreamToPlaylistLabelText = getMessage("addyourstreamstoplaylist-menu-label")
793 else:
794 addUsersFileToPlaylistLabelText = getMessage("addotherusersfiletoplaylist-menu-label").format(shortUsername)
795 addUsersStreamToPlaylistLabelText = getMessage("addotherusersstreamstoplaylist-menu-label").format(shortUsername)
796
797 filename = item.sibling(item.row(), 3).data()
798 while item.parent().row() != -1:
799 item = item.parent()
800 roomToJoin = item.sibling(item.row(), 0).data()
801 if roomToJoin != self._syncplayClient.getRoom():
802 menu.addAction(getMessage("joinroom-menu-label").format(roomToJoin), lambda: self.joinRoom(roomToJoin))
803 elif username and filename and filename != getMessage("nofile-note"):
804 if self.config['sharedPlaylistEnabled'] and not self.isItemInPlaylist(filename):
805 if isURL(filename):
806 menu.addAction(QtGui.QPixmap(resourcespath + "world_add.png"), addUsersStreamToPlaylistLabelText, lambda: self.addStreamToPlaylist(filename))
807 else:
808 menu.addAction(QtGui.QPixmap(resourcespath + "film_add.png"), addUsersFileToPlaylistLabelText, lambda: self.addStreamToPlaylist(filename))
809
810 if self._syncplayClient.userlist.currentUser.file is None or filename != self._syncplayClient.userlist.currentUser.file["name"]:
811 if isURL(filename):
812 menu.addAction(QtGui.QPixmap(resourcespath + "world_go.png"), getMessage("openusersstream-menu-label").format(shortUsername), lambda: self.openFile(filename, resetPosition=False, fromUser=True))
813 else:
814 pathFound = self._syncplayClient.fileSwitch.findFilepath(filename)
815 if pathFound:
816 menu.addAction(QtGui.QPixmap(resourcespath + "film_go.png"), getMessage("openusersfile-menu-label").format(shortUsername), lambda: self.openFile(pathFound, resetPosition=False, fromUser=True))
817 if self._syncplayClient.isUntrustedTrustableURI(filename):
818 domain = utils.getDomainFromURL(filename)
819 if domain:
820 menu.addAction(QtGui.QPixmap(resourcespath + "shield_add.png"), getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain))
821
822 if not isURL(filename) and filename != getMessage("nofile-note"):
823 path = self._syncplayClient.fileSwitch.findFilepath(filename)
824 if path:
825 menu.addAction(QtGui.QPixmap(resourcespath + "folder_film.png"), getMessage('open-containing-folder'), lambda: utils.open_system_file_browser(path))
826
827 if roomToJoin == self._syncplayClient.getRoom() and self._syncplayClient.userlist.currentUser.canControl() and self._syncplayClient.userlist.isReadinessSupported(requiresOtherUsers=False) and self._syncplayClient.serverFeatures["setOthersReadiness"]:
828 if self._syncplayClient.userlist.isReady(username):
829 addSetUserAsReadyText = getMessage("setasnotready-menu-label").format(shortUsername)
830 menu.addAction(QtGui.QPixmap(resourcespath + "cross.png"), addSetUserAsReadyText, lambda: self._syncplayClient.setOthersReadiness(username, False))
831 else:

Callers

nothing calls this directly

Calls 14

joinRoomMethod · 0.95
isItemInPlaylistMethod · 0.95
addStreamToPlaylistMethod · 0.95
openFileMethod · 0.95
addTrustedDomainMethod · 0.95
getMessageFunction · 0.90
isURLFunction · 0.90
findFilepathMethod · 0.80
isReadinessSupportedMethod · 0.80
setOthersReadinessMethod · 0.80
getRoomMethod · 0.45

Tested by

no test coverage detected