| # DirList -- Directory Listing widget |
| |
| 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.cat(dirname, name)): |
| fullname = path.cat(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))) |
| # |