diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 405eae3..bca40ec 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -409,6 +409,7 @@ en = { "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", "editplaylist-menu-label": u"Edit playlist", + "open-containing-folder": u"Open folder containing this file", "addusersfiletoplaylist-menu-label" : u"Add {} file to playlist", # item owner indicator "addusersstreamstoplaylist-menu-label" : u"Add {} stream to playlist", # item owner indicator "openusersstream-menu-label" : u"Open {} stream", # [username]'s diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 4a0c62d..a0d0a90 100644 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -577,6 +577,10 @@ class MainWindow(QtGui.QMainWindow): if self._syncplayClient.isUntrustedTrustableURI(filename): domain = utils.getDomainFromURL(filename) menu.addAction(QtGui.QPixmap(resourcespath + u"shield_add.png"),getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain)) + + if not isURL(filename): + path = self._syncplayClient.fileSwitch.findFilepath(filename) + menu.addAction(QtGui.QPixmap(resourcespath + u"film_folder_edit.png"), getMessage('open-containing-folder'), lambda: utils.open_system_file_browser(path)) else: return menu.exec_(self.listTreeView.viewport().mapToGlobal(position)) diff --git a/syncplay/utils.py b/syncplay/utils.py index a7eedac..1857127 100644 --- a/syncplay/utils.py +++ b/syncplay/utils.py @@ -12,6 +12,8 @@ import string import urllib import ast import unicodedata +import platform +import subprocess folderSearchEnabled = True @@ -311,6 +313,17 @@ def getDomainFromURL(URL): except: return None +def open_system_file_browser(path): + if isURL(path): + return + path = os.path.dirname(path) + if platform.system() == "Windows": + os.startfile(path) + elif platform.system() == "Darwin": + subprocess.Popen(["open", path]) + else: + subprocess.Popen(["xdg-open", path]) + def getListOfPublicServers(): try: import urllib, syncplay, sys, messages, json