diff options
Diffstat (limited to 'Lib/lib-stdwin/DirList.py')
-rw-r--r-- | Lib/lib-stdwin/DirList.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Lib/lib-stdwin/DirList.py b/Lib/lib-stdwin/DirList.py new file mode 100644 index 0000000..fb0ae99 --- /dev/null +++ b/Lib/lib-stdwin/DirList.py @@ -0,0 +1,63 @@ +# 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))) + # |