summaryrefslogtreecommitdiffstats
path: root/Lib/lib-stdwin/DirList.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/lib-stdwin/DirList.py')
-rw-r--r--Lib/lib-stdwin/DirList.py63
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)))
+ #