Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 1 | # DirList -- Directory Listing widget |
| 2 | |
Guido van Rossum | ac62b9e | 1991-08-16 13:14:46 +0000 | [diff] [blame] | 3 | # XXX Displays messy paths when following '..' |
| 4 | |
Guido van Rossum | aa257d9 | 1992-03-31 19:07:25 +0000 | [diff] [blame] | 5 | import os |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 6 | import stdwin, rect |
| 7 | from stdwinevents import * |
| 8 | from Buttons import PushButton |
| 9 | from WindowParent import WindowParent |
| 10 | from HVSplit import HSplit, VSplit |
| 11 | |
Guido van Rossum | 2f24258 | 1991-12-26 13:00:45 +0000 | [diff] [blame] | 12 | class DirList(VSplit): |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 13 | # |
Guido van Rossum | 89a7869 | 1992-12-14 12:57:56 +0000 | [diff] [blame] | 14 | def create(self, parent, dirname): |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 15 | self = VSplit.create(self, parent) |
| 16 | names = os.listdir(dirname) |
| 17 | for name in names: |
Guido van Rossum | aa257d9 | 1992-03-31 19:07:25 +0000 | [diff] [blame] | 18 | if os.path.isdir(os.path.join(dirname, name)): |
| 19 | fullname = os.path.join(dirname, name) |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 20 | btn = SubdirButton().definetext(self, fullname) |
Guido van Rossum | bdfcfcc | 1992-01-01 19:35:13 +0000 | [diff] [blame] | 21 | elif name[-3:] == '.py': |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 22 | btn = ModuleButton().definetext(self, name) |
| 23 | else: |
| 24 | btn = FileButton().definetext(self, name) |
| 25 | return self |
| 26 | # |
| 27 | |
Guido van Rossum | 2f24258 | 1991-12-26 13:00:45 +0000 | [diff] [blame] | 28 | class DirListWindow(WindowParent): |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 29 | # |
| 30 | def create(self, dirname): |
Guido van Rossum | fea2af1 | 1993-01-04 09:16:51 +0000 | [diff] [blame] | 31 | self = WindowParent.create(self, dirname, (0, 0)) |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 32 | child = DirList().create(self, dirname) |
| 33 | self.realize() |
| 34 | return self |
| 35 | # |
| 36 | |
Guido van Rossum | 2f24258 | 1991-12-26 13:00:45 +0000 | [diff] [blame] | 37 | class SubdirButton(PushButton): |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 38 | # |
| 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 Rossum | 2f24258 | 1991-12-26 13:00:45 +0000 | [diff] [blame] | 47 | class FileButton(PushButton): |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 48 | # |
| 49 | def up_trigger(self): |
| 50 | stdwin.fleep() |
| 51 | # |
| 52 | |
Guido van Rossum | 2f24258 | 1991-12-26 13:00:45 +0000 | [diff] [blame] | 53 | class ModuleButton(FileButton): |
Guido van Rossum | 2d844d1 | 1991-04-07 13:41:50 +0000 | [diff] [blame] | 54 | # |
| 55 | def drawpict(self, d): |
| 56 | PushButton.drawpict(self, d) |
| 57 | d.box(rect.inset(self.bounds, (1, 3))) |
| 58 | # |