openmedialibrary_platform/Darwin/lib/python3.4/idlelib/RemoteObjectBrowser.py

37 lines
964 B
Python
Raw Normal View History

2013-10-11 17:28:32 +00:00
from idlelib import rpc
def remote_object_tree_item(item):
wrapper = WrappedObjectTreeItem(item)
oid = id(wrapper)
rpc.objecttable[oid] = wrapper
return oid
class WrappedObjectTreeItem:
# Lives in PYTHON subprocess
def __init__(self, item):
self.__item = item
def __getattr__(self, name):
value = getattr(self.__item, name)
return value
def _GetSubList(self):
2014-09-30 16:15:32 +00:00
sub_list = self.__item._GetSubList()
return list(map(remote_object_tree_item, sub_list))
2013-10-11 17:28:32 +00:00
class StubObjectTreeItem:
# Lives in IDLE process
def __init__(self, sockio, oid):
self.sockio = sockio
self.oid = oid
def __getattr__(self, name):
value = rpc.MethodProxy(self.sockio, self.oid, name)
return value
def _GetSubList(self):
2014-09-30 16:15:32 +00:00
sub_list = self.sockio.remotecall(self.oid, "_GetSubList", (), {})
return [StubObjectTreeItem(self.sockio, oid) for oid in sub_list]