Last change
on this file was 391, checked in by dmik, 11 years ago |
python: Merge vendor 2.7.6 to trunk.
|
-
Property svn:eol-style
set to
native
|
File size:
942 bytes
|
Rev | Line | |
---|
[391] | 1 | from idlelib import rpc
|
---|
[2] | 2 |
|
---|
| 3 | def remote_object_tree_item(item):
|
---|
| 4 | wrapper = WrappedObjectTreeItem(item)
|
---|
| 5 | oid = id(wrapper)
|
---|
| 6 | rpc.objecttable[oid] = wrapper
|
---|
| 7 | return oid
|
---|
| 8 |
|
---|
| 9 | class WrappedObjectTreeItem:
|
---|
| 10 | # Lives in PYTHON subprocess
|
---|
| 11 |
|
---|
| 12 | def __init__(self, item):
|
---|
| 13 | self.__item = item
|
---|
| 14 |
|
---|
| 15 | def __getattr__(self, name):
|
---|
| 16 | value = getattr(self.__item, name)
|
---|
| 17 | return value
|
---|
| 18 |
|
---|
| 19 | def _GetSubList(self):
|
---|
| 20 | list = self.__item._GetSubList()
|
---|
| 21 | return map(remote_object_tree_item, list)
|
---|
| 22 |
|
---|
| 23 | class StubObjectTreeItem:
|
---|
| 24 | # Lives in IDLE process
|
---|
| 25 |
|
---|
| 26 | def __init__(self, sockio, oid):
|
---|
| 27 | self.sockio = sockio
|
---|
| 28 | self.oid = oid
|
---|
| 29 |
|
---|
| 30 | def __getattr__(self, name):
|
---|
| 31 | value = rpc.MethodProxy(self.sockio, self.oid, name)
|
---|
| 32 | return value
|
---|
| 33 |
|
---|
| 34 | def _GetSubList(self):
|
---|
| 35 | list = self.sockio.remotecall(self.oid, "_GetSubList", (), {})
|
---|
| 36 | return [StubObjectTreeItem(self.sockio, oid) for oid in list]
|
---|
Note:
See
TracBrowser
for help on using the repository browser.