annotate pyntnclick/widgets/filechooser.py @ 803:bcc9277a23e6 pyntnclick

Refactor widget positioning API. Remove unused widgets
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 27 Jan 2013 14:52:16 +0200
parents f5e381e819a1
children
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
803
bcc9277a23e6 Refactor widget positioning API. Remove unused widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 736
diff changeset
12 def __init__(self, pos, gd, size, curdir, ok_callback,
712
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
13 page_length=12, padding=2):
803
bcc9277a23e6 Refactor widget positioning API. Remove unused widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 736
diff changeset
14 super(FileChooser, self).__init__(pos, gd, size)
707
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
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
27 def get_lists(self):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
28 self.dirs = []
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
29 self.files = []
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
30 for entry in sorted(os.listdir(self.curdir)):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
31 path = os.path.join(self.curdir, entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
32 if os.path.isdir(path):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
33 self.dirs.append(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
34 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
35 self.files.append(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
36
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
37 def prepare(self):
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
38 super(FileChooser, self).prepare()
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
39 self.refresh()
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
40
718
ab489f7e87f8 Make filechooser widget presistent, to avoid constantly descending directory trees
Neil Muller <neil@dip.sun.ac.za>
parents: 712
diff changeset
41 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
42 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
43 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
44 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
45 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
46
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
47 def _dir_button(self, entry):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
48 widget = TextButton((0, 0), self.gd, entry + '/',
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
49 fontname=self.gd.constants.bold_font,
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
50 fontsize=10)
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
51 widget.do_prepare()
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
52 widget.add_callback('clicked', self.change_dir, entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
53 return widget
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
54
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
55 def _file_button(self, entry):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
56 if entry == self.selected:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
57 # highlight
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
58 widget = TextButton((0, 0), self.gd, entry,
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
59 fontsize=10, border=2, color='yellow')
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
60 else:
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
61 widget = TextButton((0, 0), self.gd, entry, border=0,
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
62 fontsize=10)
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
63 widget.do_prepare()
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
64 widget.add_callback('clicked', self.change_selection, entry)
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
65 return widget
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
66
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
67 def fill_page(self):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
68 for widget in self.children[:]:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
69 self.remove(widget)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
70 start_page = self.page * self.page_length
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
71 end_page = start_page + self.page_length
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
72 entries = self.dirs + self.files
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
73 top = self.rect.top + self.padding
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
74 left = self.rect.left + self.padding
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
75 # Add current directory at the top
803
bcc9277a23e6 Refactor widget positioning API. Remove unused widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 736
diff changeset
76 widget = LabelWidget((left, top), self.gd, self.curdir[-30:],
bcc9277a23e6 Refactor widget positioning API. Remove unused widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 736
diff changeset
77 color='black')
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
78 widget.do_prepare()
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
79 self.add(widget)
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
80 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
81 self.gd, u'\N{LEFTWARDS ARROW WITH HOOK}Back one level')
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
82 upbut.do_prepare()
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
83 upbut.add_callback('clicked', self.change_dir, os.pardir)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
84 self.add(upbut)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
85 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
86 page_top = top
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
87 page_left = left
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
88 top += self.padding
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
89 for entry in entries[start_page:end_page]:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
90 if entry in self.dirs:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
91 widget = self._dir_button(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
92 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
93 widget = self._file_button(entry)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
94 widget.rect.topleft = (left, top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
95 self.add(widget)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
96 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
97 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
98 # Add page list buttons
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
99 if not self.prev_but:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
100 self.prev_but = TextButton((0, 0), self.gd, u'\N{UPWARDS ARROW}')
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
101 self.prev_but.do_prepare()
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
102 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
103 self.prev_but.rect.topleft = (page_left, page_top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
104 if not self.next_but:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
105 self.next_but = TextButton((0, 0), self.gd, u'\N{DOWNWARDS ARROW}')
736
f5e381e819a1 Update file widget to changed widget init pattern
Neil Muller <neil@mcp.home.test>
parents: 718
diff changeset
106 self.next_but.do_prepare()
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
107 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
108 page_top = max(top - self.next_but.rect.height,
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
109 self.prev_but.rect.bottom + self.padding)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
110 self.next_but.rect.topleft = (page_left, page_top)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
111 if self.page > 0:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
112 self.prev_but.enable()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
113 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
114 self.prev_but.disable()
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
115 if end_page + 1 < len(entries):
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
116 self.next_but.enable()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
117 else:
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
118 self.next_but.disable()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
119 self.add(self.next_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
120 self.add(self.prev_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
121 # Add OK and Cancel buttons
709
d279a7dd166a Fix paging bug. Better widget spacing
Neil Muller <neil@dip.sun.ac.za>
parents: 707
diff changeset
122 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
123 top + 2 * self.padding)
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
124 ok_but = TextButton((left, top), self.gd, 'OK')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
125 ok_but.add_callback('clicked', self.ok)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
126 self.add(ok_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
127 cancel_but = TextButton(
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
128 (left + ok_but.rect.width + 4 * self.padding, top),
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
129 self.gd, 'Cancel')
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
130 cancel_but.add_callback('clicked', self.cancel)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
131 self.add(cancel_but)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
132
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
133 def change_page(self, ev, widget, change):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
134 self.page += change
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
135 self.fill_page()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
136 return True
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_dir(self, ev, widget, newdir):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
139 """Change directory and refresh the widget."""
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
140 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
141 self.page = 0
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
142 self.selected = None
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
143 self.get_lists()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
144 self.fill_page()
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
145
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
146 def change_selection(self, ev, widget, entry):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
147 """Update selection"""
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
148 self.selected = entry
710
d4f97c8e0dbe Fix selection display
Neil Muller <neil@dip.sun.ac.za>
parents: 709
diff changeset
149 self.fill_page()
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
150
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
151 def cancel(self, ev, widget):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
152 if hasattr(self.parent, 'paused'):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
153 self.parent.paused = False
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
154 self.parent.remove(self)
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
155 return True
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
156
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
157 def ok(self, ev, widget):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
158 if hasattr(self.parent, 'paused'):
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
159 self.parent.paused = False
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
160 self.parent.remove(self)
712
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
161 if self.selected:
f33dd2093f77 Hook up image drawing code again
Neil Muller <neil@dip.sun.ac.za>
parents: 710
diff changeset
162 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
163 self.selected)))
707
6b8fa2248ee1 Hack'ish filechooser widget
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
164 return True