86cd2707dc11c28c5fb8f8676c8502732d3a70e9
from TreeWidget
import TreeItem
from ClassBrowser
import ClassBrowser
, ModuleBrowserTreeItem
class PathBrowser(ClassBrowser
):
def __init__(self
, flist
):
self
.top
.wm_title("Path Browser")
self
.top
.wm_iconname("Path Browser")
return PathBrowserTreeItem()
class PathBrowserTreeItem(TreeItem
):
item
= DirBrowserTreeItem(dir)
class DirBrowserTreeItem(TreeItem
):
def __init__(self
, dir, packages
=[]):
return self
.packages
[-1] + ": package"
names
= os
.listdir(self
.dir or os
.curdir
)
file = os
.path
.join(self
.dir, name
)
if self
.ispackagedir(file):
nn
= os
.path
.normcase(name
)
packages
.append((nn
, name
, file))
for nn
, name
, file in packages
:
item
= DirBrowserTreeItem(file, self
.packages
+ [name
])
for nn
, name
in self
.listmodules(names
):
item
= ModuleBrowserTreeItem(os
.path
.join(self
.dir, name
))
def ispackagedir(self
, file):
if not os
.path
.isdir(file):
init
= os
.path
.join(file, "__init__.py")
return os
.path
.exists(init
)
def listmodules(self
, allnames
):
suffixes
= imp
.get_suffixes()
for suff
, mode
, flag
in suffixes
:
normed_name
= os
.path
.normcase(name
)
if normed_name
[i
:] == suff
:
if not modules
.has_key(mod_name
):
sorted.append((normed_name
, name
))
PathBrowser(PyShell
.flist
)
if sys
.stdin
is sys
.__stdin
__:
if __name__
== "__main__":