~nacl/wicd/aqua-curses

« back to all changes in this revision

Viewing changes to wicd/ui/curses/filechooser.py

  • Committer: Andrew Psaltis
  • Date: 2009-07-04 17:52:40 UTC
  • Revision ID: ampsaltis@gmail.com-20090704175240-t72owrxjnjrbtltt
Improved spacing on the lower columns and fixed support for the delete and backspace keys.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import urwid
21
21
import urwid.raw_display
22
22
import os
 
23
import os.path
23
24
import sys
24
25
 
25
26
#import logging
110
111
 
111
112
    def reindex(self):
112
113
        try:
113
 
            print "Reindexing", self.get_edit_text()
114
 
            self._files = os.listdir(self.path)
115
 
            print self._files
 
114
            #print "Reindexing", self.get_edit_text()
 
115
            self._files = os.listdir(os.path.dirname(self.get_edit_text()))
 
116
            #print self._files
116
117
            self.new_rescan = True
117
 
            self.path = self.get_edit_text()
 
118
            #self.path = self.get_edit_text()
118
119
        except:
119
120
            self._files = []
120
121
            #raise
121
122
 
122
123
    def keypress(self,size,key):
123
124
        do_rescan = False
 
125
        path = self.get_edit_text()
 
126
        charat = path[self.edit_pos] if self.edit_pos != len(path) else None
 
127
        charbefore = path[self.edit_pos-1] if len(path) != 0 else None
 
128
        
124
129
        self.__super.keypress(size,key)
125
130
        #if key == 'backspace' or key == 'delete' or key == '/':
126
131
        do_reindex = True
127
132
        self.new_rescan = True
128
 
        self.path = self.get_edit_text()
129
 
        #    if self.get_edit_text()[self._edit_pos-1] == '/':
 
133
        #self.path = self.get_edit_text()
 
134
        if charbefore != None and ( key == 'backspace' and charbefore == '/'):
 
135
            self.reindex()
 
136
        elif charat != None and (key == 'delete' and charat == '/'):
 
137
            self.reindex()
 
138
        elif key not in ['right','left','up','down'] and self._edit_pos != len(self.get_edit_text()):
 
139
            self.reindex()
 
140
        #    if  == '/':
130
141
        #        do_rescan = True
131
142
        #else:
132
143
        #    self.new_rescan = False
133
144
        #if key == '/':
134
145
        #    do_rescan == True
135
146
        #if do_rescan:
136
 
        if key == '/':
 
147
        elif key == '/':
137
148
            self.reindex()
138
149
        return key
139
150
 
147
158
    Press enter to enter the 'list mode', and 'enter' again to leave it.
148
159
    '''
149
160
 
150
 
 
151
 
    def __init__(self, caption, path='/', numrows=4, numcols=2):
 
161
    def __init__(self, caption, path='/', numrows=3, numcols=2):
152
162
        self.path = path
153
163
        self._numrows = numrows
154
164
        self._numcols = numcols
167
177
                if not f.startswith(beg):
168
178
                    print "Removing",f
169
179
                    flist.remove(f)
 
180
        while i < len(flist):
 
181
            if os.path.isdir(self.path+flist[i]):
 
182
                flist[i]+='/'
 
183
            #elif o
 
184
            i+=1
170
185
        
171
186
        fclist = [self.theEdit]
 
187
        i = 0
172
188
        while i < len(flist):
173
189
            colParts = []
174
190
            for f in flist[i:i+self._numrows]:
175
 
                colParts.append(urwid.Text(f))
176
 
            fclist.append(urwid.Columns(colParts))
 
191
                colParts.append(urwid.Text(f,wrap='clip'))
 
192
            fclist.append(urwid.Columns(colParts,1))
177
193
            i+=self._numrows
178
194
        return urwid.SimpleListWalker(fclist)
 
195
 
179
196
    def keypress(self,size,key):
180
197
        self.lbox.keypress(size,key)
181
 
        #if key == '/':
 
198
        if key == '/':
 
199
            self.path = self.theEdit.get_edit_text()
182
200
        #    self.theEdit.reindex()
183
201
 
184
202
        if key not in ['right','left','up','down']:
185
203
            before,sep,text = self.theEdit.get_edit_text().rpartition('/')
186
204
            self.lbox.body = self.gen_walker(text)
187
 
            if not self.theEdit.new_rescan: 
188
 
                self.frame.get_footer().set_text(self.theEdit.get_edit_text())
189
 
            else:
190
 
                self.frame.get_footer().set_text("new rescan "+self.theEdit.get_edit_text())
 
205
        self.frame.get_footer().set_text(str(self.theEdit.edit_pos)+ " " + str(len(self.theEdit.get_edit_text())))
191
206
 
192
207
        #return key
193
208