historyBuffer.py (1752B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\historyBuffer.py 2 import collections 3 import blue 4 5 class HistoryBuffer: 6 7 def __init__(self, maxLen = None): 8 self.maxLen = maxLen 9 self.Reset() 10 11 def Reset(self): 12 self.deque = collections.deque(maxlen=self.maxLen) 13 self.idx = None 14 15 def Append(self, data): 16 if len(self.deque) and self.idx is not None: 17 self.deque = collections.deque(list(self.deque)[:self.idx + 1], maxlen=self.maxLen) 18 if self.ShouldAppend(data): 19 self.deque.append(data) 20 self.idx = len(self.deque) - 1 21 22 def ShouldAppend(self, data): 23 if not len(self.deque): 24 return True 25 try: 26 if data != self.deque[-1]: 27 return True 28 except TypeError: 29 return True 30 31 def GoBack(self): 32 if self.IsBackEnabled(): 33 self.idx -= 1 34 return self.GetCurrent() 35 36 def GetPrevious(self): 37 if self.IsBackEnabled(): 38 return self.deque[self.idx - 1] 39 40 def GetNext(self): 41 if self.IsForwardEnabled(): 42 return self.deque[self.idx + 1] 43 44 def GoForward(self): 45 if self.IsForwardEnabled(): 46 self.idx += 1 47 return self.GetCurrent() 48 49 def GetCurrent(self): 50 return self.deque[self.idx] 51 52 def IsBackEnabled(self): 53 return len(self.deque) > 1 and self.idx > 0 54 55 def IsForwardEnabled(self): 56 return len(self.deque) > 1 and self.idx < len(self.deque) - 1 57 58 def UpdateCurrent(self, value): 59 if self.idx is not None: 60 self.deque[self.idx] = value 61 62 def IsEmpty(self): 63 return len(self.deque) == 0