home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-01-04 | 1.3 KB | 59 lines | [TEXT/R*ch] |
- # DirList -- Directory Listing widget
-
- # XXX Displays messy paths when following '..'
-
- import os
- 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 os.path.isdir(os.path.join(dirname, name)):
- fullname = os.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)))
- #
-