blob: 446d33b04c755b962455a79eecb4d4ac9f902811 [file] [log] [blame]
Guido van Rossum2d844d11991-04-07 13:41:50 +00001# DirList -- Directory Listing widget
2
Guido van Rossumac62b9e1991-08-16 13:14:46 +00003# XXX Displays messy paths when following '..'
4
Guido van Rossumaa257d91992-03-31 19:07:25 +00005import os
Guido van Rossum2d844d11991-04-07 13:41:50 +00006import stdwin, rect
7from stdwinevents import *
8from Buttons import PushButton
9from WindowParent import WindowParent
10from HVSplit import HSplit, VSplit
11
Guido van Rossum2f242581991-12-26 13:00:45 +000012class DirList(VSplit):
Guido van Rossum2d844d11991-04-07 13:41:50 +000013 #
Guido van Rossum89a78691992-12-14 12:57:56 +000014 def create(self, parent, dirname):
Guido van Rossum2d844d11991-04-07 13:41:50 +000015 self = VSplit.create(self, parent)
16 names = os.listdir(dirname)
17 for name in names:
Guido van Rossumaa257d91992-03-31 19:07:25 +000018 if os.path.isdir(os.path.join(dirname, name)):
19 fullname = os.path.join(dirname, name)
Guido van Rossum2d844d11991-04-07 13:41:50 +000020 btn = SubdirButton().definetext(self, fullname)
Guido van Rossumbdfcfcc1992-01-01 19:35:13 +000021 elif name[-3:] == '.py':
Guido van Rossum2d844d11991-04-07 13:41:50 +000022 btn = ModuleButton().definetext(self, name)
23 else:
24 btn = FileButton().definetext(self, name)
25 return self
26 #
27
Guido van Rossum2f242581991-12-26 13:00:45 +000028class DirListWindow(WindowParent):
Guido van Rossum2d844d11991-04-07 13:41:50 +000029 #
30 def create(self, dirname):
Guido van Rossumfea2af11993-01-04 09:16:51 +000031 self = WindowParent.create(self, dirname, (0, 0))
Guido van Rossum2d844d11991-04-07 13:41:50 +000032 child = DirList().create(self, dirname)
33 self.realize()
34 return self
35 #
36
Guido van Rossum2f242581991-12-26 13:00:45 +000037class SubdirButton(PushButton):
Guido van Rossum2d844d11991-04-07 13:41:50 +000038 #
39 def drawpict(self, d):
40 PushButton.drawpict(self, d)
41 d.box(rect.inset(self.bounds, (3, 1)))
42 #
43 def up_trigger(self):
44 window = DirListWindow().create(self.text)
45 #
46
Guido van Rossum2f242581991-12-26 13:00:45 +000047class FileButton(PushButton):
Guido van Rossum2d844d11991-04-07 13:41:50 +000048 #
49 def up_trigger(self):
50 stdwin.fleep()
51 #
52
Guido van Rossum2f242581991-12-26 13:00:45 +000053class ModuleButton(FileButton):
Guido van Rossum2d844d11991-04-07 13:41:50 +000054 #
55 def drawpict(self, d):
56 PushButton.drawpict(self, d)
57 d.box(rect.inset(self.bounds, (1, 3)))
58 #