# 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))) #