CVS: anygui/lib/anygui/dialogs OpenFileDialog.py,1.1,1.2
"Dallas T. Johnston" <[email protected]> Sat, 16 Nov 2002 08:45:01 -0800
| Newsgroups | gmane.comp.python.anygui.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/anygui/anygui/lib/anygui/dialogs
In directory usw-pr-cvs1:/tmp/cvs-serv9861/lib/anygui/dialogs
Modified Files:
OpenFileDialog.py
Log Message:
things are looking pretty good now.
i decided to just make the file selection ('open') a callback
via link & send. the client has to specify the link, of course.
we still need to figure out a way to fix tkinter's focus deal.
Index: OpenFileDialog.py
===================================================================
RCS file: /cvsroot/anygui/anygui/lib/anygui/dialogs/OpenFileDialog.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** OpenFileDialog.py 16 Nov 2002 12:41:10 -0000 1.1
--- OpenFileDialog.py 16 Nov 2002 16:44:59 -0000 1.2
***************
*** 1,257 ****
! from __future__ import nested_scopes
!
! from anygui import Window, Label, Button, TextArea, ListBox, Frame, TextField
! from anygui import application, link
! from anygui.Models import ListModel
! from anygui.LayoutManagers import SimpleGridManager
!
! from UserList import UserList
! import re
! import sys, glob, os
!
! PATH_SEPAR=''
! ROOT_PATH=''
! if sys.platform in ['win32', 'dos', 'ms-dos']:
! PATH_SEPAR = '\\'
! ROOT_PATH = '[a-zA-Z]:\\\\(?!.)'
! else:
! PATH_SEPAR = '/'
! ROOT_PATH = '/(?!.)'
!
! # === SORT_RULES === #
!
! ALPHABETICAL=0
! # uses cmp
!
! DIRS_FIRST=1
! def sort_dirs_first(x, y):
! if x.endswith(PATH_SEPAR) and y.endswith(PATH_SEPAR):
! pass
! elif x.endswith(PATH_SEPAR):
! return -1
! elif y.endswith(PATH_SEPAR):
! return 1
! return cmp(x, y)
!
! FILES_FIRST=2
! def sort_files_first(x, y):
! if x.endswith(PATH_SEPAR) and y.endswith(PATH_SEPAR):
! pass
! elif x.endswith(PATH_SEPAR):
! return 1
! elif y.endswith(PATH_SEPAR):
! return -1
! return cmp(x, y)
!
SORT_RULES={ALPHABETICAL: cmp, DIRS_FIRST: sort_dirs_first,\
! FILES_FIRST: sort_files_first}
!
! # == END SORT_RULES == #
!
! class DirListModel(ListModel):
!
! def __init__(self, *arg, **kw):
! try:
! self.sortRule = kw['sort_rule']
! except:
! self.sortRule = DIRS_FIRST
! assert kw.has_key('filter'), \
! '!! cannot create a DirListModel without a filter.'
! ListModel.__init__(self, **kw)
!
! def setValue(self, value):
! value.sort(SORT_RULES[self.sortRule])
! self.data = value
! self.send()
!
! class DirListNode:
!
! def __init__(self, dir_list):
! self.dirList = dir_list
! self.prev = None
! self.next = None
!
! def __repr__(self):
! return str(self)
!
! def __str__(self):
! return str(self.dirList)
!
! class TripanedDoublyLinkedList:
!
! def __init__(self, dirs):
! assert isintance(dirs, list) and len(dirs)>=1, \
! '!! must construct with at least one dir.'
! tripane = self.tripane = [None,None,None]
! self.head = tripane[0] = DirListNode(dirs[0])
! try:
! node = tripane[1] = DirListNode(dirs[1])
! self.appendNode(node)
! except:
! return
! try:
! node = tripane[2] = DirListNode(dirs[2])
! self.appendNode(node)
! except:
! return
!
! def __str__(self):
! nlist = []
! node = self.head
! while node:
! if node in self.tripane:
! nlist.append([node])
! else:
! nlist.append(node)
! node = node.next
! return str(nlist)
!
! def prepend(self, dir):
! node = DirListNode(dir)
! self.prependNode(node)
!
! def prependNode(self, node):
! head = self.head
! head.prev = node
! node.next = head
! self.head = node
! if not hasattr(self, 'tail'):
! self.tail = head
!
! def append(self, dir):
! node = DirListNode(dir)
! self.appendNode(node)
!
! def appendNode(self, node):
! if hasattr(self, 'tail'):
! tail = self.tail
! tail.next = node
! node.prev = tail
! self.tail = node
! if self.tripane[2] is None:
! self.tripane[2] = node
else:
! self.tripane[1] = self.tail = node
! self.head.next = node
! node.prev = self.head
!
! def pop(self):
! assert hasattr(self, 'tail'), '!! cannot pop last node.'
! if self.tail.prev == self.head:
! tail = self.tail
! del self.tail
! tail.prev = None
! self.head.next = None
! if tail in self.tripane:
! self.tripane[self.tripane.index(tail)] = None
! return tail
! tail = self.tail
! self.tail = tail.prev
! self.tail.next = None
! tail.prev = None
! if tail in self.tripane:
! self.tripane[self.tripane.index(tail)] = None
! return tail
!
! def count(self):
! node = self.head
! count = 0
! while node:
! count += 1
! node = node.next
! return count
!
! def shiftPaneBack(self, nbr):
! for i in range(nbr):
! try:
! self.tripane[0] = self.tripane[0].prev
! self.tripane[1] = self.tripane[1].prev
! self.tripane[2] = self.tripane[2].prev
! except:
! break
!
! def shiftPaneFwd(self, nbr):
! for i in range(nbr):
! try:
! self.tripane[0] = self.tripane[0].next
! self.tripane[1] = self.tripane[1].next
! self.tripane[2] = self.tripane[2].next
! except:
! break
!
! class DirManager:
!
! def __init__(self, dir, filter, sort_rule=DIRS_FIRST):
! print '>> dir -> ', dir
! print '>> filter -> ', filter
! assert os.path.isdir(dir), '!! DirManager: ' + dir + ' is not a directory.'
! if not dir.endswith(PATH_SEPAR):
! dir += PATH_SEPAR
! self.currDir = dir
! self.filter = filter
! self.sortRule = sort_rule
!
! self.currDirCache = []
! self.oneDirUp = ''
! self.oneDirUpCache = []
! self.twoDirUp = ''
! self.twoDirUpCache = []
! self._genDirCaches()
!
! def update(self):
! self._genDirCaches()
!
! def isRootDir(self, dir):
! if dir == ROOT_PATH or re.match(ROOT_PATH, dir):
! return 1
! else:
! return 0
!
! def currDirIsRoot(self):
! return self.isRootDir(self.currDir)
!
! def dirUp(self, dir):
! return dir[:dir[:-1].rfind(PATH_SEPAR)+1]
!
! def goDirUp():
! self.currDir = self.oneDirUp
! self._genDirCaches()
!
! def globDir(self, dir):
! if self.filter == '':
! self.filter = '*'
! cache = glob.glob(dir + self.filter)
! objCache = [ obj[obj.rfind(PATH_SEPAR)+1:] for obj in cache ]
! for i in range(len(cache)):
! if os.path.isdir(cache[i]):
! objCache[i] += PATH_SEPAR
! objCache.sort(SORT_RULES[self.sortRule])
! return objCache
!
! def _genDirCaches(self):
! print '>> self.currDir -> ', self.currDir
! self.currDirCache = self.globDir(self.currDir)
! # now generate cache for self.dir/..
! if not self.currDirIsRoot():
! self.oneDirUp = self.dirUp(self.currDir)
! print '>> self.oneDirUp -> ', self.oneDirUp
! self.oneDirUpCache = self.globDir(self.oneDirUp)
! # and the same for self.dir/../..
! if not self.isRootDir(self.oneDirUp):
! self.twoUpDir = self.dirUp(self.oneDirUp)
! print '>> self.twoDirUp -> ', self.twoDirUp
! self.twoDirUpCache = self.globDir(self.twoDirUp)
!
! class OpenFileDialog(Window):
!
! def __init__(self, dir, filter, sort_rule=DIRS_FIRST):
Window.__init__(self, title='Open File - ' + \
! application().name + '-' + application().version, \
! geometry=(250, 200, 420, 350))
! self._updating = 0
! dirMngr = self.dirMngr = DirManager(dir, filter, sort_rule)
self._priorSelections = []
! #self.createTripaneDirList()
! self.initWidgets()
#def createTripaneDirList(self):
--- 1,127 ----
! from __future__ import nested_scopes
!
! from anygui import Window, Label, Button, TextArea, ListBox, Frame, TextField, ComboBox
! from anygui import application, link, send
! from anygui.Models import ListModel
! from anygui.LayoutManagers import SimpleGridManager
!
! from UserList import UserList
! import re
! import sys, glob, os
! import traceback
!
! PATH_SEPAR=''
! ROOT_PATH=''
! if sys.platform in ['win32', 'dos', 'ms-dos']:
! PATH_SEPAR = '\\'
! ROOT_PATH = '[a-zA-Z]:\\\\(?!.)'
! else:
! PATH_SEPAR = '/'
! ROOT_PATH = '/(?!.)'
!
! # === SORT_RULES === #
!
! ALPHABETICAL=0
! # uses cmp
!
! DIRS_FIRST=1
! def sort_dirs_first(x, y):
! if x.endswith(PATH_SEPAR) and y.endswith(PATH_SEPAR):
! pass
! elif x.endswith(PATH_SEPAR):
! return -1
! elif y.endswith(PATH_SEPAR):
! return 1
! return cmp(x, y)
!
! FILES_FIRST=2
! def sort_files_first(x, y):
! if x.endswith(PATH_SEPAR) and y.endswith(PATH_SEPAR):
! pass
! elif x.endswith(PATH_SEPAR):
! return 1
! elif y.endswith(PATH_SEPAR):
! return -1
! return cmp(x, y)
!
SORT_RULES={ALPHABETICAL: cmp, DIRS_FIRST: sort_dirs_first,\
! FILES_FIRST: sort_files_first}
!
! # == END SORT_RULES == #
!
! class DirManager:
!
! def __init__(self, dir, filter, sort_rule=DIRS_FIRST):
! #print '>> dir -> ', dir
! #print '>> filter -> ', filter
! assert os.path.isdir(dir), '!! DirManager: ' + dir + ' is not a directory.'
! if not dir.endswith(PATH_SEPAR):
! dir += PATH_SEPAR
! self.currDir = dir
! self.filter = filter
! self.sortRule = sort_rule
!
! self.currDirCache = []
! self.oneDirUp = ''
! self.oneDirUpCache = []
! self.twoDirUp = ''
! self.twoDirUpCache = []
! self._genDirCaches()
!
! def update(self):
! self._genDirCaches()
!
! def isRootDir(self, dir):
! if dir == ROOT_PATH or re.match(ROOT_PATH, dir):
! return 1
else:
! return 0
!
! def currDirIsRoot(self):
! return self.isRootDir(self.currDir)
!
! def dirUp(self, dir):
! return dir[:dir[:-1].rfind(PATH_SEPAR)+1]
!
! def goDirUp():
! self.currDir = self.oneDirUp
! self._genDirCaches()
!
! def globDir(self, dir):
! if self.filter == '':
! self.filter = '*'
! cache = glob.glob(dir + self.filter)
! objCache = [ obj[obj.rfind(PATH_SEPAR)+1:] for obj in cache ]
! for i in range(len(cache)):
! if os.path.isdir(cache[i]):
! objCache[i] += PATH_SEPAR
! objCache.sort(SORT_RULES[self.sortRule])
! return objCache
!
! def _genDirCaches(self):
! #print '>> self.currDir -> ', self.currDir
! self.currDirCache = self.globDir(self.currDir)
! # now generate cache for self.dir/..
! if not self.currDirIsRoot():
! self.oneDirUp = self.dirUp(self.currDir)
! #print '>> self.oneDirUp -> ', self.oneDirUp
! self.oneDirUpCache = self.globDir(self.oneDirUp)
! # and the same for self.dir/../..
! if not self.isRootDir(self.oneDirUp):
! self.twoUpDir = self.dirUp(self.oneDirUp)
! #print '>> self.twoDirUp -> ', self.twoDirUp
! self.twoDirUpCache = self.globDir(self.twoDirUp)
!
! class OpenFileDialog(Window):
!
! def __init__(self, dir, filters, sort_rule=DIRS_FIRST):
Window.__init__(self, title='Open File - ' + \
! application().name + '-' + application().version, \
! geometry=(250, 200, 420, 350))
! self._updating = 0
! self.dirMngr = DirManager(dir, filters[0], sort_rule)
self._priorSelections = []
! #self.createTripaneDirList()
! self.initWidgets(filters)
#def createTripaneDirList(self):
***************
*** 262,401 ****
# if not dirMngr.isRootDir(dirMngr.oneDirUp):
# self.dirList.prepend(dirMngr.twoDirUpCache)
!
! def initWidgets(self):
!
! dirMngr = self.dirMngr
!
! btnDirBack = self.btnDirBack = Button(text='<', size=(50,25))
! if dirMngr.currDirIsRoot():
! btnDirBack.enabled = 0
! self.add(btnDirBack, left=10, top=10)
! link(btnDirBack, self.goDirBack)
!
! btnDirFwd = self.btnDirFwd = Button(text='>', size=(50,25))
! btnDirFwd.enabled = 0
! self.add(btnDirFwd, left=(btnDirBack, 5), top=10)
! link(btnDirFwd, self.goDirFwd)
!
! frmDirs = self.frmDirs = Frame()
! frmDirs.layout = SimpleGridManager(3,1)
self.add(frmDirs, left=10, rigth=10, top=(btnDirBack, 5), \
! bottom=75, vstretch=1, hstretch=1)
!
! lbxDirOne = self.lbxDirOne = ListBox()
#lbxDirOne.items = self.dirList.tripane[0]
! lbxDirOne.items = self.dirMngr.currDirCache
! frmDirs.add(lbxDirOne)
! link(lbxDirOne, self.lbxSelect)
!
! lbxDirTwo = self.lbxDirTwo = ListBox()
! frmDirs.add(lbxDirTwo)
! link(lbxDirTwo, self.lbxSelect)
!
! lbxDirThree = self.lbxDirThree = ListBox()
! frmDirs.add(lbxDirThree)
! link(lbxDirThree, self.lbxSelect)
!
! btnCancel = self.btnCancel = Button(text='Cancel')
! self.add(btnCancel, right=10, top=(frmDirs, 5), hmove=1, vmove=1)
! link(self.btnCancel, self.close)
!
! btnOpen = self.btnOpen = Button(text='Open')
! self.add(btnOpen, right=10, top=(btnCancel, 5), hmove=1, vmove=1)
! link(self.btnOpen, self.open)
!
! lblLocation = self.lblLocation = Label(text='Location:', width=55)
! self.add(lblLocation, left=10, top=(frmDirs, 18), vmove=1)
!
! lblFilter = self.lblFilter = Label(text='Filter:', width=55)
! self.add(lblFilter, left=10, top=(lblLocation, 20), vmove=1)
!
! txtLocation = self.txtLocation = TextField(text=dirMngr.currDir)
self.add(txtLocation, left=(lblLocation, 5), right=100, top=(frmDirs, 8), \
! hstretch=1, vmove=1)
! link(txtLocation, self.changeDirs)
!
! txtFilter = self.txtFilter = TextField(text=dirMngr.filter)
! self.add(txtFilter, left=(lblFilter, 5), right=100, top=(txtLocation, 10), \
! hstretch=1, vmove=1)
! link(txtFilter, self.applyFilter)
!
! def open(self, event):
! print ">> Got event: ", event
! print ">> event dict: ", event.__dict__
!
! def close(self, event):
! self.destroy()
!
! def lbxSelect(self, event):
! if self._updating: return
! self_updating = 1
! source = event.source
! if source is self.lbxDirOne:
! self.handleLbxDirOneEvent()
! elif source is self.lbxDirTwo:
! self.handleLbxDirTwoEvent()
! elif source is self.lbxDirThree:
self.handleLbxDirThreeEvent()
! self.btnDirFwd.enabled = 0
! self._updating = 0
!
! def handleLbxDirOneEvent(self):
! print '>> handling lbxDirOne event'
! dirMngr = self.dirMngr
! s = self._state()
! obj = dirMngr.currDir + s.dirOne
! if os.path.isdir(obj):
! dirMngr.filter = self.txtFilter.text
! result = dirMngr.globDir(obj)
! try:
! s.lbxTwo.items = result
! s.lbxThree.items = []
! except (AttributeError):
! pass
! else:
! try:
! s.lbxTwo.items = []
! s.lbxThree.items = []
! except (AttributeError):
! pass
! self.txtLocation.text = obj
!
! def handleLbxDirTwoEvent(self):
! print '>> handling lbxDirTwo event'
! dirMngr = self.dirMngr
! s = self._state()
! obj = dirMngr.currDir + s.dirOne + s.dirTwo
! if os.path.isdir(obj):
! dirMngr.filter = self.txtFilter.text
! result = dirMngr.globDir(obj)
! s.lbxThree.items = result
! else:
! s.lbxThree.items = []
! self.txtLocation.text = obj
!
! def handleLbxDirThreeEvent(self):
! print '>> handling lbxDirThree event'
! dirMngr = self.dirMngr
! s = self._state()
! obj = dirMngr.currDir + s.dirOne + s.dirTwo + s.dirThree
!
! if os.path.isdir(obj):
! dirMngr.currDir += s.dirOne
! dirMngr.update()
! s.lbxOne.items = dirMngr.currDirCache
! s.lbxOne.selection = s.selTwo
! dirMngr.filter = self.txtFilter.text
! s.lbxTwo.items = dirMngr.globDir(dirMngr.currDir + s.dirTwo)
! s.lbxTwo.selection = s.selThree
! s.lbxThree.items = dirMngr.globDir(obj)
! self.btnDirBack.enabled = 1
!
! self.txtLocation.text = obj
!
! def goDirFwd(self, event):
! print ">> Got event: ", event
! print ">> event dict: ", event.__dict__
! self._updating = 1
self.handleLbxDirThreeEvent()
if self._priorSelections:
--- 132,273 ----
# if not dirMngr.isRootDir(dirMngr.oneDirUp):
# self.dirList.prepend(dirMngr.twoDirUpCache)
!
! def initWidgets(self, filters):
!
! dirMngr = self.dirMngr
!
! btnDirBack = self.btnDirBack = Button(text='<', size=(50,25))
! if dirMngr.currDirIsRoot():
! btnDirBack.enabled = 0
! self.add(btnDirBack, left=10, top=10)
! link(btnDirBack, self.goDirBack)
!
! btnDirFwd = self.btnDirFwd = Button(text='>', size=(50,25))
! btnDirFwd.enabled = 0
! self.add(btnDirFwd, left=(btnDirBack, 5), top=10)
! link(btnDirFwd, self.goDirFwd)
!
! frmDirs = self.frmDirs = Frame()
! frmDirs.layout = SimpleGridManager(3,1)
self.add(frmDirs, left=10, rigth=10, top=(btnDirBack, 5), \
! bottom=75, vstretch=1, hstretch=1)
!
! lbxDirOne = self.lbxDirOne = ListBox()
#lbxDirOne.items = self.dirList.tripane[0]
! lbxDirOne.items = self.dirMngr.currDirCache
! lbxDirOne.selection = 0
! frmDirs.add(lbxDirOne)
! link(lbxDirOne, self.lbxSelect)
!
! lbxDirTwo = self.lbxDirTwo = ListBox()
! frmDirs.add(lbxDirTwo)
! link(lbxDirTwo, self.lbxSelect)
!
! lbxDirThree = self.lbxDirThree = ListBox()
! frmDirs.add(lbxDirThree)
! link(lbxDirThree, self.lbxSelect)
!
! btnCancel = self.btnCancel = Button(text='Cancel')
! self.add(btnCancel, right=10, top=(frmDirs, 5), hmove=1, vmove=1)
! link(self.btnCancel, self.close)
!
! btnOpen = self.btnOpen = Button(text='Open')
! self.add(btnOpen, right=10, top=(btnCancel, 5), hmove=1, vmove=1)
! link(self.btnOpen, self.open)
!
! lblLocation = self.lblLocation = Label(text='Location:', width=55)
! self.add(lblLocation, left=10, top=(frmDirs, 18), vmove=1)
!
! lblFilter = self.lblFilter = Label(text='Filter:', width=55)
! self.add(lblFilter, left=10, top=(lblLocation, 20), vmove=1)
!
! txtLocation = self.txtLocation = TextField(text=dirMngr.currDir)
self.add(txtLocation, left=(lblLocation, 5), right=100, top=(frmDirs, 8), \
! hstretch=1, vmove=1)
! link(txtLocation, self.changeDirs)
!
! cbxFilter = self.cbxFilter = ComboBox(items=filters)
! #txtFilter = self.txtFilter = TextField(text=dirMngr.filter)
! self.add(cbxFilter, left=(lblFilter, 5), right=100, top=(txtLocation, 10), \
! hstretch=1, vmove=1)
! link(cbxFilter, self.applyFilter)
!
! def open(self, event):
! send(self, 'open', file=self.txtLocation.text)
! self.destroy()
!
! def close(self, event):
! self.destroy()
!
! def lbxSelect(self, event):
! if self._updating: return
! self_updating = 1
! source = event.source
! if source is self.lbxDirOne:
! self.handleLbxDirOneEvent()
! elif source is self.lbxDirTwo:
! self.handleLbxDirTwoEvent()
! elif source is self.lbxDirThree:
self.handleLbxDirThreeEvent()
! self.btnDirFwd.enabled = 0
! self._updating = 0
!
! def handleLbxDirOneEvent(self):
! #print '>> handling lbxDirOne event'
! dirMngr = self.dirMngr
! s = self._state()
! obj = dirMngr.currDir + s.dirOne
! if os.path.isdir(obj):
! dirMngr.filter = self.cbxFilter.text
! result = dirMngr.globDir(obj)
! try:
! s.lbxTwo.items = result
! s.lbxThree.items = []
! except (AttributeError):
! pass
! else:
! try:
! s.lbxTwo.items = []
! s.lbxThree.items = []
! except (AttributeError):
! pass
! self.txtLocation.text = obj
!
! def handleLbxDirTwoEvent(self):
! #print '>> handling lbxDirTwo event'
! dirMngr = self.dirMngr
! s = self._state()
! obj = dirMngr.currDir + s.dirOne + s.dirTwo
! if os.path.isdir(obj):
! dirMngr.filter = self.cbxFilter.text
! result = dirMngr.globDir(obj)
! s.lbxThree.items = result
! else:
! s.lbxThree.items = []
! self.txtLocation.text = obj
!
! def handleLbxDirThreeEvent(self):
! #print '>> handling lbxDirThree event'
! dirMngr = self.dirMngr
! s = self._state()
! obj = dirMngr.currDir + s.dirOne + s.dirTwo + s.dirThree
!
! if os.path.isdir(obj):
! dirMngr.currDir += s.dirOne
! dirMngr.update()
! s.lbxOne.items = dirMngr.currDirCache
! s.lbxOne.selection = s.selTwo
! dirMngr.filter = self.cbxFilter.text
! s.lbxTwo.items = dirMngr.globDir(dirMngr.currDir + s.dirTwo)
! s.lbxTwo.selection = s.selThree
! s.lbxThree.items = dirMngr.globDir(obj)
! self.btnDirBack.enabled = 1
!
! self.txtLocation.text = obj
!
! def goDirFwd(self, event):
! #print ">> Got event: ", event
! #print ">> event dict: ", event.__dict__
! self._updating = 1
self.handleLbxDirThreeEvent()
if self._priorSelections:
***************
*** 405,516 ****
if not self._priorSelections:
self.btnDirFwd.enabled = 0
!
! self._updating = 0
!
!
! def goDirBack(self, event):
! print ">> Got event: ", event
! print ">> event dict: ", event.__dict__
!
! self._updating = 1
!
! dirMngr = self.dirMngr
! s = self._state()
!
! backDir = dirMngr.currDir
! currDir = dirMngr.currDir = dirMngr.oneDirUp
! dirMngr.update()
!
! s.lbxOne.items = dirMngr.currDirCache
! s.lbxOne.selection = dirMngr.currDirCache.index(\
! backDir[backDir[:-1].rfind(PATH_SEPAR)+1:]\
! )
!
! s.lbxTwo.items = s.itemsOne
! s.lbxTwo.selection = s.selOne
!
! s.lbxThree.items = s.itemsTwo
s.lbxThree.selection = s.selTwo
! self._priorSelections.append(s.selThree)
! self.btnDirFwd.enabled = 1
! if dirMngr.currDirIsRoot():
! self.btnDirBack.enabled = 0
!
! s = self._state()
! self.txtLocation.text = currDir + s.dirOne + s.dirTwo + s.dirThree
!
! self._updating = 0
!
! def changeDirs(self, event):
! print ">> Got event: ", event
! print ">> event dict: ", event.__dict__
!
! def applyFilter(self, event):
! print ">> Got event: ", event
! print ">> event dict: ", event.__dict__
! self._update = 1
!
! dirMngr = self.dirMngr
! s = self._state()
!
! try:
! s.dirThree
! print '>> filtering lbxThree'
! self.handleLbxDirTwoEvent()
! return
! except (AttributeError):
! pass
!
! try:
! s.dirTwo
! print '>> filtering lbxTwo'
! self.handleLbxDirOneEvent()
! return
! except (AttributeError):
! pass
!
! print '>> filtering lbxOne'
! dirMngr.filter = self.txtFilter.text
! dirMngr.update()
!
! s.lbxOne.items = dirMngr.currDirCache
! try:
! selection = s.lbxOne.selection = dirMngr.currDirCache.index(s.dirOne)
! self.txtLocation.text = dirMngr.currDir + dirMngr.currDirCache[selection]
! except (AttributeError, ValueError):
self.txtLocation.text = dirMngr.currDir
! self.btnDirFwd.enabled = 0
!
! self._update = 0
!
! def _state(self):
!
! class State:
! def __str__(self):
! return str(self.__dict__)
! pass
!
! s = State()
!
! s.lbxOne = self.lbxDirOne
! s.itemsOne = s.lbxOne.items
! s.selOne = s.lbxOne.selection
!
! try:
! s.dirOne = s.lbxOne.items[s.selOne]
!
! s.lbxTwo = self.lbxDirTwo
! s.itemsTwo = s.lbxTwo.items
! s.selTwo = s.lbxTwo.selection
! s.dirTwo = s.lbxTwo.items[s.selTwo]
!
! s.lbxThree = self.lbxDirThree
! s.itemsThree = s.lbxThree.items
! s.selThree = s.lbxThree.selection
! s.dirThree = s.lbxThree.items[s.selThree]
! except (IndexError):
! pass
!
! return s
--- 277,389 ----
if not self._priorSelections:
self.btnDirFwd.enabled = 0
!
! self._updating = 0
!
!
! def goDirBack(self, event):
! #print ">> Got event: ", event
! #print ">> event dict: ", event.__dict__
!
! self._updating = 1
!
! dirMngr = self.dirMngr
! s = self._state()
!
! backDir = dirMngr.currDir
! currDir = dirMngr.currDir = dirMngr.oneDirUp
! dirMngr.update()
!
! s.lbxOne.items = dirMngr.currDirCache
! s.lbxOne.selection = dirMngr.currDirCache.index(\
! backDir[backDir[:-1].rfind(PATH_SEPAR)+1:]\
! )
!
! s.lbxTwo.items = s.itemsOne
! s.lbxTwo.selection = s.selOne
!
! s.lbxThree.items = s.itemsTwo
s.lbxThree.selection = s.selTwo
! self._priorSelections.append(s.selThree)
! self.btnDirFwd.enabled = 1
! if dirMngr.currDirIsRoot():
! self.btnDirBack.enabled = 0
!
! s = self._state()
! self.txtLocation.text = currDir + s.dirOne + s.dirTwo + s.dirThree
!
! self._updating = 0
!
! def changeDirs(self, event):
! print ">> Got event: ", event
! print ">> event dict: ", event.__dict__
!
! def applyFilter(self, event):
! #print ">> Got event: ", event
! #print ">> event dict: ", event.__dict__
! self._update = 1
!
! dirMngr = self.dirMngr
! s = self._state()
!
! try:
! s.dirThree
! #print '>> filtering lbxThree'
! self.handleLbxDirTwoEvent()
! return
! except (AttributeError):
! pass
!
! try:
! s.dirTwo
! #print '>> filtering lbxTwo'
! self.handleLbxDirOneEvent()
! return
! except (AttributeError):
! pass
!
! #print '>> filtering lbxOne'
! dirMngr.filter = self.cbxFilter.text
! dirMngr.update()
!
! s.lbxOne.items = dirMngr.currDirCache
! try:
! selection = s.lbxOne.selection = dirMngr.currDirCache.index(s.dirOne)
! self.txtLocation.text = dirMngr.currDir + dirMngr.currDirCache[selection]
! except (AttributeError, ValueError):
! traceback.print_exc()
self.txtLocation.text = dirMngr.currDir
! self.btnDirFwd.enabled = 0
!
! self._update = 0
!
! def _state(self):
!
! class State:
! def __str__(self):
! return str(self.__dict__)
! pass
!
! s = State()
!
! s.lbxOne = self.lbxDirOne
! s.itemsOne = s.lbxOne.items
! s.selOne = s.lbxOne.selection
!
! try:
! s.dirOne = s.lbxOne.items[s.selOne]
!
! s.lbxTwo = self.lbxDirTwo
! s.itemsTwo = s.lbxTwo.items
! s.selTwo = s.lbxTwo.selection
! s.dirTwo = s.lbxTwo.items[s.selTwo]
!
! s.lbxThree = self.lbxDirThree
! s.itemsThree = s.lbxThree.items
! s.selThree = s.lbxThree.selection
! s.dirThree = s.lbxThree.items[s.selThree]
! except (IndexError):
! pass
!
! return s
-------------------------------------------------------
This sf.net email is sponsored by: To learn the basics of securing
your web site with SSL, click here to get a FREE TRIAL of a Thawte
Server Certificate: http://www.gothawte.com/rd524.html