clipboard.py
56 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
Robert Kern
|
r1841 | """ Utilities for accessing the platform's clipboard. | ||
""" | ||||
import subprocess | ||||
import sys | ||||
Brian Granger
|
r2205 | from IPython.core.error import TryNext | ||
Jörgen Stenarson
|
r8308 | import IPython.utils.py3compat as py3compat | ||
Robert Kern
|
r1841 | |||
def win32_clipboard_get(): | ||||
""" Get the current clipboard's text on Windows. | ||||
Requires Mark Hammond's pywin32 extensions. | ||||
""" | ||||
try: | ||||
import win32clipboard | ||||
except ImportError: | ||||
Bradley M. Froehle
|
r7334 | raise TryNext("Getting text from the clipboard requires the pywin32 " | ||
"extensions: http://sourceforge.net/projects/pywin32/") | ||||
Bernardo B. Marques
|
r4872 | win32clipboard.OpenClipboard() | ||
text = win32clipboard.GetClipboardData(win32clipboard.CF_TEXT) | ||||
Robert Kern
|
r1841 | # FIXME: convert \r\n to \n? | ||
Bernardo B. Marques
|
r4872 | win32clipboard.CloseClipboard() | ||
Robert Kern
|
r1841 | return text | ||
def osx_clipboard_get(): | ||||
""" Get the clipboard's text on OS X. | ||||
""" | ||||
p = subprocess.Popen(['pbpaste', '-Prefer', 'ascii'], | ||||
stdout=subprocess.PIPE) | ||||
text, stderr = p.communicate() | ||||
# Text comes in with old Mac \r line endings. Change them to \n. | ||||
text = text.replace('\r', '\n') | ||||
Jörgen Stenarson
|
r8305 | text = py3compat.cast_unicode(text, py3compat.DEFAULT_ENCODING) | ||
Robert Kern
|
r1841 | return text | ||
def tkinter_clipboard_get(): | ||||
""" Get the clipboard's text using Tkinter. | ||||
This is the default on systems that are not Windows or OS X. It may | ||||
interfere with other UI toolkits and should be replaced with an | ||||
implementation that uses that toolkit. | ||||
""" | ||||
try: | ||||
import Tkinter | ||||
except ImportError: | ||||
Bradley M. Froehle
|
r7334 | raise TryNext("Getting text from the clipboard on this platform " | ||
"requires Tkinter.") | ||||
Robert Kern
|
r1841 | root = Tkinter.Tk() | ||
root.withdraw() | ||||
text = root.clipboard_get() | ||||
root.destroy() | ||||
Jörgen Stenarson
|
r8305 | text = py3compat.cast_unicode(text, py3compat.DEFAULT_ENCODING) | ||
Robert Kern
|
r1841 | return text | ||