def chdir(self, newpath): if newpath is None: return False if not newpath.startswith(self.directory): return False try: if self.area is None: oldsel = 0 oldpath = self.directory else: oldsel = self.area.selected oldpath = self.area.abspath oldcontainer = self.container oldchecked = self.checked if newpath in self.visited: newsel, newcontainer, newchecked = self.visited[newpath] else: newcontainer, newchecked = \ self.identify_container_and_checked(newpath) if newcontainer is None: return False newsel = 0 self.visited[oldpath] = [oldsel, oldcontainer, oldchecked] logging.info(u"OLD - {0} - {1} - {2}".format( oldpath, oldsel, oldcontainer.__class__.__name__ )) logging.info(u"NEW - {0} - {1} - {2}".format( newpath, newsel, newcontainer.__class__.__name__ )) h, w = self.stdscr.getmaxyx() self.container = newcontainer self.checked = newchecked def show_unreadable_error(path, name): if isinstance(name, unicode): error_str = name.encode('utf8', errors='replace') else: error_str = name logging.info("Unreadable file name: {0} (in '{1}')".format( error_str, path )) errorwin = TextWin(self) errorwin.show("Unreadable file name:\n{0}\n\nPress ESC to close.".format(error_str)) self.area = ViewArea( newpath, h, newcontainer, show_unreadable_error, self.show_hiddens ) self.header( "{0}".format( self.container.__class__.__name__ ), self.area.abspath ) self.area.set_params(h, offset=newsel) self.refresh_scr() return True except OutOfRange: logging.error("OutOfRange .. {0}".format(newpath)) curses.flash()