5 from TreeWidget
import TreeItem
6 from ClassBrowser
import ClassBrowser
, ModuleBrowserTreeItem
8 class PathBrowser(ClassBrowser
):
10 def __init__(self
, flist
):
14 self
.top
.wm_title("Path Browser")
15 self
.top
.wm_iconname("Path Browser")
18 return PathBrowserTreeItem()
20 class PathBrowserTreeItem(TreeItem
):
28 item
= DirBrowserTreeItem(dir)
32 class DirBrowserTreeItem(TreeItem
):
34 def __init__(self
, dir, packages
=[]):
36 self
.packages
= packages
42 return self
.packages
[-1] + ": package"
46 names
= os
.listdir(self
.dir or os
.curdir
)
51 file = os
.path
.join(self
.dir, name
)
52 if self
.ispackagedir(file):
53 nn
= os
.path
.normcase(name
)
54 packages
.append((nn
, name
, file))
57 for nn
, name
, file in packages
:
58 item
= DirBrowserTreeItem(file, self
.packages
+ [name
])
60 for nn
, name
in self
.listmodules(names
):
61 item
= ModuleBrowserTreeItem(os
.path
.join(self
.dir, name
))
65 def ispackagedir(self
, file):
66 if not os
.path
.isdir(file):
68 init
= os
.path
.join(file, "__init__.py")
69 return os
.path
.exists(init
)
71 def listmodules(self
, allnames
):
73 suffixes
= imp
.get_suffixes()
75 for suff
, mode
, flag
in suffixes
:
77 for name
in allnames
[:]:
78 normed_name
= os
.path
.normcase(name
)
79 if normed_name
[i
:] == suff
:
81 if not modules
.has_key(mod_name
):
82 modules
[mod_name
] = None
83 sorted.append((normed_name
, name
))
90 PathBrowser(PyShell
.flist
)
91 if sys
.stdin
is sys
.__stdin
__:
94 if __name__
== "__main__":