74 lines
2 KiB
Python
74 lines
2 KiB
Python
|
import sys
|
||
|
success=False
|
||
|
in_ironpython="IronPython" in sys.version
|
||
|
if in_ironpython:
|
||
|
try:
|
||
|
from ironpython_clipboard import GetClipboardText,SetClipboardText
|
||
|
success=True
|
||
|
except ImportError:
|
||
|
pass
|
||
|
else:
|
||
|
try:
|
||
|
from win32_clipboard import GetClipboardText,SetClipboardText
|
||
|
success=True
|
||
|
except ImportError:
|
||
|
raise
|
||
|
|
||
|
|
||
|
def send_data(lists):
|
||
|
SetClipboardText(make_tab(lists))
|
||
|
|
||
|
|
||
|
def set_clipboard_text(toclipboard):
|
||
|
SetClipboardText(str(toclipboard))
|
||
|
|
||
|
def make_tab(lists):
|
||
|
if hasattr(lists,"tolist"):
|
||
|
lists=lists.tolist()
|
||
|
ut=[]
|
||
|
for rad in lists:
|
||
|
if type(rad) in [list,tuple]:
|
||
|
ut.append("\t".join(["%s"%x for x in rad]))
|
||
|
else:
|
||
|
ut.append("%s"%rad)
|
||
|
return "\n".join(ut)
|
||
|
|
||
|
def make_list_of_list(txt):
|
||
|
def make_num(x):
|
||
|
try:
|
||
|
return int(x)
|
||
|
except ValueError:
|
||
|
try:
|
||
|
return float(x)
|
||
|
except ValueError:
|
||
|
try:
|
||
|
return complex(x)
|
||
|
except ValueError:
|
||
|
return x
|
||
|
return x
|
||
|
ut=[]
|
||
|
flag=False
|
||
|
for rad in [x for x in txt.split("\r\n") if x!=""]:
|
||
|
raden=[make_num(x) for x in rad.split("\t")]
|
||
|
if str in map(type,raden):
|
||
|
flag=True
|
||
|
ut.append(raden)
|
||
|
return ut,flag
|
||
|
|
||
|
|
||
|
def get_clipboard_text_and_convert(paste_list=False):
|
||
|
"""Get txt from clipboard. if paste_list==True the convert tab separated
|
||
|
data to list of lists. Enclose list of list in array() if all elements are
|
||
|
numeric"""
|
||
|
txt=GetClipboardText()
|
||
|
if txt:
|
||
|
if paste_list and "\t" in txt:
|
||
|
array,flag=make_list_of_list(txt)
|
||
|
if flag:
|
||
|
txt=repr(array)
|
||
|
else:
|
||
|
txt="array(%s)"%repr(array)
|
||
|
txt="".join([c for c in txt if c not in " \t\r\n"])
|
||
|
return txt
|
||
|
|