Viewing file: RemoteObjectBrowser.py (942 B) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
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): list = self.__item._GetSubList() return map(remote_object_tree_item, list)
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): list = self.sockio.remotecall(self.oid, "_GetSubList", (), {}) return [StubObjectTreeItem(self.sockio, oid) for oid in list]
|