Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
1ff48ec8
Kaydet (Commit)
1ff48ec8
authored
Haz 01, 1999
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Object browser, based on TreeWidget.py.
üst
7419f4b2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
154 additions
and
0 deletions
+154
-0
ObjectBrowser.py
Tools/idle/ObjectBrowser.py
+154
-0
No files found.
Tools/idle/ObjectBrowser.py
0 → 100644
Dosyayı görüntüle @
1ff48ec8
# XXX TO DO:
# - popup menu
# - support partial or total redisplay
# - more doc strings
# - tooltips
# object browser
# XXX TO DO:
# - for classes/modules, add "open source" to object browser
from
TreeWidget
import
TreeItem
,
TreeNode
,
ScrolledCanvas
from
repr
import
Repr
myrepr
=
Repr
()
myrepr
.
maxstring
=
100
myrepr
.
maxother
=
100
class
ObjectTreeItem
(
TreeItem
):
def
__init__
(
self
,
labeltext
,
object
,
setfunction
=
None
):
self
.
labeltext
=
labeltext
self
.
object
=
object
self
.
setfunction
=
setfunction
def
GetLabelText
(
self
):
return
self
.
labeltext
def
GetText
(
self
):
return
myrepr
.
repr
(
self
.
object
)
def
GetIconName
(
self
):
if
not
self
.
IsExpandable
():
return
"python"
def
IsEditable
(
self
):
return
self
.
setfunction
is
not
None
def
SetText
(
self
,
text
):
try
:
value
=
eval
(
text
)
self
.
setfunction
(
value
)
except
:
pass
else
:
self
.
object
=
value
def
IsExpandable
(
self
):
return
not
not
dir
(
self
.
object
)
def
GetSubList
(
self
):
keys
=
dir
(
self
.
object
)
sublist
=
[]
for
key
in
keys
:
try
:
value
=
getattr
(
self
.
object
,
key
)
except
AttributeError
:
continue
item
=
make_objecttreeitem
(
str
(
key
)
+
" ="
,
value
,
lambda
value
,
key
=
key
,
object
=
self
.
object
:
setattr
(
object
,
key
,
value
))
sublist
.
append
(
item
)
return
sublist
class
InstanceTreeItem
(
ObjectTreeItem
):
def
IsExpandable
(
self
):
return
1
def
GetSubList
(
self
):
sublist
=
ObjectTreeItem
.
GetSubList
(
self
)
sublist
.
insert
(
0
,
make_objecttreeitem
(
"__class__ ="
,
self
.
object
.
__class__
))
return
sublist
class
ClassTreeItem
(
ObjectTreeItem
):
def
IsExpandable
(
self
):
return
1
def
GetSubList
(
self
):
sublist
=
ObjectTreeItem
.
GetSubList
(
self
)
if
len
(
self
.
object
.
__bases__
)
==
1
:
item
=
make_objecttreeitem
(
"__bases__[0] ="
,
self
.
object
.
__bases__
[
0
])
else
:
item
=
make_objecttreeitem
(
"__bases__ ="
,
self
.
object
.
__bases__
)
sublist
.
insert
(
0
,
item
)
return
sublist
class
AtomicObjectTreeItem
(
ObjectTreeItem
):
def
IsExpandable
(
self
):
return
0
class
SequenceTreeItem
(
ObjectTreeItem
):
def
IsExpandable
(
self
):
return
len
(
self
.
object
)
>
0
def
keys
(
self
):
return
range
(
len
(
self
.
object
))
def
GetSubList
(
self
):
sublist
=
[]
for
key
in
self
.
keys
():
try
:
value
=
self
.
object
[
key
]
except
KeyError
:
continue
def
setfunction
(
value
,
key
=
key
,
object
=
self
.
object
):
object
[
key
]
=
value
item
=
make_objecttreeitem
(
`key`
+
":"
,
value
,
setfunction
)
sublist
.
append
(
item
)
return
sublist
class
DictTreeItem
(
SequenceTreeItem
):
def
keys
(
self
):
keys
=
self
.
object
.
keys
()
try
:
keys
.
sort
()
except
:
pass
return
keys
from
types
import
*
dispatch
=
{
IntType
:
AtomicObjectTreeItem
,
LongType
:
AtomicObjectTreeItem
,
FloatType
:
AtomicObjectTreeItem
,
StringType
:
AtomicObjectTreeItem
,
TupleType
:
SequenceTreeItem
,
ListType
:
SequenceTreeItem
,
DictType
:
DictTreeItem
,
InstanceType
:
InstanceTreeItem
,
ClassType
:
ClassTreeItem
,
}
def
make_objecttreeitem
(
labeltext
,
object
,
setfunction
=
None
):
t
=
type
(
object
)
if
dispatch
.
has_key
(
t
):
c
=
dispatch
[
t
]
else
:
c
=
ObjectTreeItem
return
c
(
labeltext
,
object
,
setfunction
)
# Test script
def
test
():
import
sys
from
Tkinter
import
Toplevel
import
pyclbr
import
PyShell
pyclbr
.
_modules
.
clear
()
root
=
Toplevel
(
PyShell
.
root
)
root
.
configure
(
bd
=
0
,
bg
=
"yellow"
)
root
.
focus_set
()
sc
=
ScrolledCanvas
(
root
,
bg
=
"white"
,
highlightthickness
=
0
,
takefocus
=
1
)
sc
.
frame
.
pack
(
expand
=
1
,
fill
=
"both"
)
#item = FileTreeItem("C:/windows/desktop")
item
=
make_objecttreeitem
(
"sys"
,
sys
)
node
=
TreeNode
(
sc
.
canvas
,
None
,
item
)
node
.
expand
()
if
__name__
==
'__main__'
:
test
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment