annotate pyntnclick/widgets/filechooser.py @ 718:ab489f7e87f8 pyntnclick

Make filechooser widget presistent, to avoid constantly descending directory trees
author Neil Muller <neil@dip.sun.ac.za>
date Mon, 06 Aug 2012 11:17:27 +0200
parents f33dd2093f77
children f5e381e819a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
1 # Display a paged lsit of files and directories
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
2 # Allow moving up and down directory trees
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
3
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
4 import os
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
5
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
6 from pyntnclick.widgets.base import Box
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
7 from pyntnclick.widgets.text import TextButton, LabelWidget
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
8
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
9
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
10 class FileChooser(Box):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
11
712
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
12 def __init__(self, rect, gd, curdir, ok_callback,
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
13 page_length=12, padding=2):
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
14 super(FileChooser, self).__init__(rect, gd)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
15 self.page_length = page_length
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
16 self.page = 0
712
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
17 self.ok_callback = ok_callback
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
18 self.curdir = os.path.realpath(os.path.normpath(curdir))
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
19 self.selected = None
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
20 self.padding = padding
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
21 self.dirs = []
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
22 self.files = []
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
23 self.modal = True
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
24 self.prev_but = None
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
25 self.next_but = None
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
26 self.get_lists()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
27 self.fill_page()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
28
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
29 def get_lists(self):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
30 self.dirs = []
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
31 self.files = []
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
32 for entry in sorted(os.listdir(self.curdir)):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
33 path = os.path.join(self.curdir, entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
34 if os.path.isdir(path):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
35 self.dirs.append(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
36 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
37 self.files.append(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
38
718
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
39 def refresh(self):
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
40 self.page = 0
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
41 self.selected = None
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
42 self.get_lists()
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
43 self.fill_page()
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
44
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
45 def _dir_button(self, entry):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
46 widget = TextButton((0, 0), self.gd, entry + '/',
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
47 fontname=self.gd.constants.bold_font,
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
48 fontsize=10)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
49 widget.add_callback('clicked', self.change_dir, entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
50 return widget
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
51
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
52 def _file_button(self, entry):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
53 if entry == self.selected:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
54 # highlight
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
55 widget = TextButton((0, 0), self.gd, entry,
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
56 fontsize=10, border=2, color='yellow')
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
57 else:
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
58 widget = TextButton((0, 0), self.gd, entry, border=0,
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
59 fontsize=10)
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
60 widget.add_callback('clicked', self.change_selection, entry)
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
61 return widget
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
62
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
63 def fill_page(self):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
64 for widget in self.children[:]:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
65 self.remove(widget)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
66 start_page = self.page * self.page_length
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
67 end_page = start_page + self.page_length
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
68 entries = self.dirs + self.files
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
69 top = self.rect.top + self.padding
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
70 left = self.rect.left + self.padding
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
71 # Add current directory at the top
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
72 widget = LabelWidget((0, 0), self.gd, self.curdir[-30:], color='black')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
73 widget.rect.topleft = (left, top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
74 self.add(widget)
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
75 upbut = TextButton((left + 2 * self.padding + widget.rect.width, top),
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
76 self.gd, u'\N{LEFTWARDS ARROW WITH HOOK}Back one level')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
77 upbut.add_callback('clicked', self.change_dir, os.pardir)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
78 self.add(upbut)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
79 top += max(widget.rect.height, upbut.rect.height) + 4 * self.padding
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
80 page_top = top
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
81 page_left = left
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
82 top += self.padding
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
83 for entry in entries[start_page:end_page]:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
84 if entry in self.dirs:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
85 widget = self._dir_button(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
86 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
87 widget = self._file_button(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
88 widget.rect.topleft = (left, top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
89 self.add(widget)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
90 top += widget.rect.height + self.padding
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
91 page_left = max(page_left, left + widget.rect.width + self.padding)
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
92 # Add page list buttons
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
93 if not self.prev_but:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
94 self.prev_but = TextButton((0, 0), self.gd, u'\N{UPWARDS ARROW}')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
95 self.prev_but.add_callback('clicked', self.change_page, -1)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
96 self.prev_but.rect.topleft = (page_left, page_top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
97 if not self.next_but:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
98 self.next_but = TextButton((0, 0), self.gd, u'\N{DOWNWARDS ARROW}')
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
99 self.next_but.add_callback('clicked', self.change_page, +1)
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
100 page_top = max(top - self.next_but.rect.height,
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
101 self.prev_but.rect.bottom + self.padding)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
102 self.next_but.rect.topleft = (page_left, page_top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
103 if self.page > 0:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
104 self.prev_but.enable()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
105 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
106 self.prev_but.disable()
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
107 if end_page + 1 < len(entries):
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
108 self.next_but.enable()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
109 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
110 self.next_but.disable()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
111 self.add(self.next_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
112 self.add(self.prev_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
113 # Add OK and Cancel buttons
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
114 top = max(self.prev_but.rect.bottom + self.padding,
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
115 top + 2 * self.padding)
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
116 ok_but = TextButton((left, top), self.gd, 'OK')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
117 ok_but.add_callback('clicked', self.ok)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
118 self.add(ok_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
119 cancel_but = TextButton(
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
120 (left + ok_but.rect.width + 4 * self.padding, top),
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
121 self.gd, 'Cancel')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
122 cancel_but.add_callback('clicked', self.cancel)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
123 self.add(cancel_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
124
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
125 def change_page(self, ev, widget, change):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
126 self.page += change
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
127 self.fill_page()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
128 return True
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
129
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
130 def change_dir(self, ev, widget, newdir):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
131 """Change directory and refresh the widget."""
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
132 self.curdir = os.path.normpath(os.path.join(self.curdir, newdir))
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
133 self.page = 0
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
134 self.selected = None
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
135 self.get_lists()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
136 self.fill_page()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
137
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
138 def change_selection(self, ev, widget, entry):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
139 """Update selection"""
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
140 self.selected = entry
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
141 self.fill_page()
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
142
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
143 def cancel(self, ev, widget):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
144 if hasattr(self.parent, 'paused'):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
145 self.parent.paused = False
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
146 self.parent.remove(self)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
147 return True
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
148
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
149 def ok(self, ev, widget):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
150 if hasattr(self.parent, 'paused'):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
151 self.parent.paused = False
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
152 self.parent.remove(self)
712
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
153 if self.selected:
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
154 self.ok_callback(os.path.normpath(os.path.join(self.curdir,
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
155 self.selected)))
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
156 return True