mirror of https://github.com/python/cpython
66 lines
1.4 KiB
Python
66 lines
1.4 KiB
Python
# DirList -- Directory Listing widget
|
|
|
|
# XXX Displays messy paths when following '..'
|
|
|
|
try:
|
|
import posix, path
|
|
os = posix
|
|
except NameError:
|
|
import mac, macpath
|
|
os = mac
|
|
path = macpath
|
|
|
|
import stdwin, rect
|
|
from stdwinevents import *
|
|
from Buttons import PushButton
|
|
from WindowParent import WindowParent
|
|
from HVSplit import HSplit, VSplit
|
|
|
|
class DirList() = VSplit():
|
|
#
|
|
def create(self, (parent, dirname)):
|
|
self = VSplit.create(self, parent)
|
|
names = os.listdir(dirname)
|
|
for name in names:
|
|
if path.isdir(path.join(dirname, name)):
|
|
fullname = path.join(dirname, name)
|
|
btn = SubdirButton().definetext(self, fullname)
|
|
elif name[-3:] = '.py':
|
|
btn = ModuleButton().definetext(self, name)
|
|
else:
|
|
btn = FileButton().definetext(self, name)
|
|
return self
|
|
#
|
|
|
|
class DirListWindow() = WindowParent():
|
|
#
|
|
def create(self, dirname):
|
|
self = WindowParent.create(self, (dirname, (0, 0)))
|
|
child = DirList().create(self, dirname)
|
|
self.realize()
|
|
return self
|
|
#
|
|
|
|
class SubdirButton() = PushButton():
|
|
#
|
|
def drawpict(self, d):
|
|
PushButton.drawpict(self, d)
|
|
d.box(rect.inset(self.bounds, (3, 1)))
|
|
#
|
|
def up_trigger(self):
|
|
window = DirListWindow().create(self.text)
|
|
#
|
|
|
|
class FileButton() = PushButton():
|
|
#
|
|
def up_trigger(self):
|
|
stdwin.fleep()
|
|
#
|
|
|
|
class ModuleButton() = FileButton():
|
|
#
|
|
def drawpict(self, d):
|
|
PushButton.drawpict(self, d)
|
|
d.box(rect.inset(self.bounds, (1, 3)))
|
|
#
|