diff options
author | Picca Frédéric-Emmanuel <picca@synchrotron-soleil.fr> | 2017-08-18 14:48:52 +0200 |
---|---|---|
committer | Picca Frédéric-Emmanuel <picca@synchrotron-soleil.fr> | 2017-08-18 14:48:52 +0200 |
commit | f7bdc2acff3c13a6d632c28c4569690ab106eed7 (patch) | |
tree | 9d67cdb7152ee4e711379e03fe0546c7c3b97303 /silx/gui/qt/_macosx.py |
Import Upstream version 0.5.0+dfsg
Diffstat (limited to 'silx/gui/qt/_macosx.py')
-rw-r--r-- | silx/gui/qt/_macosx.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/silx/gui/qt/_macosx.py b/silx/gui/qt/_macosx.py new file mode 100644 index 0000000..07f3143 --- /dev/null +++ b/silx/gui/qt/_macosx.py @@ -0,0 +1,68 @@ +# coding: utf-8 +# /*########################################################################## +# +# Copyright (c) 2004-2016 European Synchrotron Radiation Facility +# +# 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. +# +# ###########################################################################*/ +""" +Patches for Mac OS X +""" + +__authors__ = ["V. Valls"] +__license__ = "MIT" +__date__ = "30/11/2016" + + +def patch_QUrl_toLocalFile(): + """Apply a monkey-patch on qt.QUrl to allow to reach filename when the URL + come from a MIME data from a file drop. Without, `QUrl.toLocalName` with + some version of Mac OS X returns a path which looks like + `/.file/id=180.112`. + + Qt5 is or will be patch, but Qt4 and PySide are not. + + This fix uses the file URL and use an subprocess with an + AppleScript. The script convert the URI into a posix path. + The interpreter (osascript) is available on default OS X installs. + + See https://bugreports.qt.io/browse/QTBUG-40449 + """ + from ._qt import QUrl + import subprocess + + def QUrl_toLocalFile(self): + path = QUrl._oldToLocalFile(self) + if not path.startswith("/.file/id="): + return path + + url = self.toString() + script = 'get posix path of my posix file \"%s\" -- kthxbai' % url + try: + p = subprocess.Popen(["osascript", "-e", script], stdout=subprocess.PIPE) + out, _err = p.communicate() + if p.returncode == 0: + return out.strip() + except OSError: + pass + return path + + QUrl._oldToLocalFile = QUrl.toLocalFile + QUrl.toLocalFile = QUrl_toLocalFile |