home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1488 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  2.1 KB  |  62 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
  6. __docformat__ = 'restructuredtext en'
  7. from collections import deque
  8.  
  9. class History(object):
  10.     
  11.     def __init__(self, current, entries):
  12.         self.entries = deque(entries, maxlen = max(2000, len(entries)))
  13.         self.index = len(self.entries) - 1
  14.         self.current = self.default = current
  15.         self.last_was_back = False
  16.  
  17.     
  18.     def back(self, amt = 1):
  19.         if self.entries:
  20.             oidx = self.index
  21.             ans = self.entries[self.index]
  22.             self.index = max(0, self.index - amt)
  23.             self.last_was_back = self.index != oidx
  24.             return ans
  25.  
  26.     
  27.     def forward(self, amt = 1):
  28.         if self.entries:
  29.             d = self.index
  30.             if self.last_was_back:
  31.                 d += 1
  32.             
  33.             if d >= len(self.entries) - 1:
  34.                 self.index = len(self.entries) - 1
  35.                 self.last_was_back = False
  36.                 return self.current
  37.             if self.last_was_back:
  38.                 amt += 1
  39.             
  40.             self.index = min(len(self.entries) - 1, self.index + amt)
  41.             self.last_was_back = False
  42.             return self.entries[self.index]
  43.  
  44.     
  45.     def enter(self, x):
  46.         
  47.         try:
  48.             self.entries.remove(x)
  49.         except ValueError:
  50.             pass
  51.  
  52.         self.entries.append(x)
  53.         self.index = len(self.entries) - 1
  54.         self.current = self.default
  55.         self.last_was_back = False
  56.  
  57.     
  58.     def serialize(self):
  59.         return list(self.entries)
  60.  
  61.  
  62.