f c @ s d Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z m
Z
m Z d d l m
Z
Gd d d Z Gd d
d
e
Z Gd d d e
Z Gd
d d e
Z d d Z e d k r e n d S( u Class browser.
XXX TO DO:
- reparse when source changed (maybe just a button would be OK?)
(or recheck on window popup)
- add popup menu with more options (e.g. doc strings, base classes, imports)
- show function argument list? (have to do pattern matching on source)
- should the classes and methods lists also be in the module's menu bar?
- add base classes to class browser tree
i N( u PyShell( u ListedToplevel( u TreeNodeu TreeItemu ScrolledCanvas( u idleConfc B sS | Ee Z d Z d d Z d d d Z d d Z d d Z d d
Z d S( u ClassBrowserc C s= | | _ t j j | d | j d | _ | j | d S( Ni u .py( u nameu osu pathu joinu fileu init( u selfu flistu nameu path( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu __init__ s #u ClassBrowser.__init__c C s | j j | j j d S( N( u topu destroyu node( u selfu event( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu close s
u ClassBrowser.closec C s | | _ t j j t | j | _ } | j d | j | j d | j | j
| j t j
d d d } t j | d d } t | d | d d
d d } | j j d
d d d | j } t | j d | | _ } | j | j d S( Nu WM_DELETE_WINDOWu u mainu Themeu nameu normalu
backgroundu bgu highlightthicknessi u takefocusi u expandu fillu both( u flistu pyclbru _modulesu clearu ListedToplevelu rootu topu protocolu closeu bindu settitleu focus_setu idleConfu GetOptionu GetHighlightu ScrolledCanvasu frameu packu rootnodeu TreeNodeu canvasu Noneu nodeu updateu expand( u selfu flistu topu themeu
backgroundu scu itemu node( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu init# s
u ClassBrowser.initc C s+ | j j d | j | j j d d S( Nu Class Browser - u
Class Browser( u topu wm_titleu nameu wm_iconname( u self( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu settitle7 s u ClassBrowser.settitlec C s
t | j S( N( u ModuleBrowserTreeItemu file( u self( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu rootnode; s u ClassBrowser.rootnodeN( u __name__u
__module__u __qualname__u __init__u Noneu closeu initu settitleu rootnode( u
__locals__( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu ClassBrowser s
u ClassBrowserc B sh | Ee Z d Z d d Z d d Z d d Z d d Z d d
Z d d Z d
d Z d S( u ModuleBrowserTreeItemc C s
| | _ d S( N( u file( u selfu file( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu __init__@ s u ModuleBrowserTreeItem.__init__c C s t j j | j S( N( u osu pathu basenameu file( u self( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu GetTextC s u ModuleBrowserTreeItem.GetTextc C s d S( Nu python( ( u self( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu GetIconNameF s u! ModuleBrowserTreeItem.GetIconNamec C sF g } x9 | j D]+ } t | | j | j } | j | q W| S( N( u listclassesu ClassBrowserTreeItemu classesu fileu append( u selfu sublistu nameu item( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu
GetSubListI s
u ModuleBrowserTreeItem.GetSubListc C sY t j j | j d d d k r) d St j j | j sB d St j j | j d S( Ni u .pyi( u osu pathu normcaseu fileu existsu PyShellu flistu open( u self( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu
OnDoubleClickP s
%u# ModuleBrowserTreeItem.OnDoubleClickc C s# t j j | j d d d k S( Ni u .pyi( u osu pathu normcaseu file( u self( ( u9 /opt/alt/python33/lib64/python3.3/idlelib/ClassBrowser.pyu IsExpandableW s u" ModuleBrowserTreeItem.IsExpandablec C s t j j | j \ } } t j j | \ } } t j j | d k rO g Sy t j | | g t j } Wn) t k
r } z g SWYd d } ~ Xn Xg } i | _
x | j D] \ } } | j | k r | }
t
| d r| j rg } xp | j D]e } t | t d k r'| }
n1 | j }
| j | j k rXd | j |
f }
n | j |
q W|
d d j | }
n | j | j |
f | | j
|