win32clip.py
45 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2027 | from IPython.core import ipapi | ||
fperez
|
r281 | |||
Brian Granger
|
r2027 | ip = ipapi.get() | ||
fperez
|
r281 | |||
def clip_f( self, parameter_s = '' ): | ||||
"""Save a set of lines to the clipboard. | ||||
Usage:\\ | ||||
%clip n1-n2 n3-n4 ... n5 .. n6 ... | ||||
This function uses the same syntax as %macro for line extraction, but | ||||
instead of creating a macro it saves the resulting string to the | ||||
clipboard. | ||||
Bernardo B. Marques
|
r4872 | |||
When used without arguments, this returns the text contents of the clipboard. | ||||
fperez
|
r281 | E.g. | ||
Bernardo B. Marques
|
r4872 | |||
fperez
|
r281 | mytext = %clip | ||
Bernardo B. Marques
|
r4872 | |||
fperez
|
r281 | """ | ||
import win32clipboard as cl | ||||
import win32con | ||||
args = parameter_s.split() | ||||
cl.OpenClipboard() | ||||
if len( args ) == 0: | ||||
data = cl.GetClipboardData( win32con.CF_TEXT ) | ||||
cl.CloseClipboard() | ||||
return data | ||||
api = self.getapi() | ||||
Bernardo B. Marques
|
r4872 | |||
fperez
|
r281 | if parameter_s.lstrip().startswith('='): | ||
rest = parameter_s[parameter_s.index('=')+1:].strip() | ||||
val = str(api.ev(rest)) | ||||
else: | ||||
ranges = args[0:] | ||||
val = ''.join( self.extract_input_slices( ranges ) ) | ||||
cl.EmptyClipboard() | ||||
cl.SetClipboardText( val ) | ||||
cl.CloseClipboard() | ||||
print 'The following text was written to the clipboard' | ||||
print val | ||||
Bernardo B. Marques
|
r4872 | |||
Brian Granger
|
r2205 | ip.define_magic( "clip", clip_f ) | ||