home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 June / maximum-cd-2009-06.iso / DiscContents / digsby_setup.exe / lib / gui / toolbox / texthistory.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-02-26  |  2.9 KB  |  102 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import wx
  5. from util import roset, strip_html2
  6. from util.lrucache import lru_cache
  7. strip_html2 = lru_cache(80)(strip_html2)
  8.  
  9. class TextHistory(object):
  10.     
  11.     def __init__(self, ctrl = None, backlog = None):
  12.         self.history = roset()
  13.         self.clip = ''
  14.         self.index = 0
  15.         self.backlog = backlog
  16.         if ctrl is not None:
  17.             self.bind_textctrl(ctrl)
  18.         
  19.  
  20.     
  21.     def commit(self, val):
  22.         if not val:
  23.             return None
  24.         
  25.         self.history.add(val)
  26.         if self.clip == val:
  27.             self.clip = ''
  28.         
  29.  
  30.     
  31.     def prev(self):
  32.         val = self.get()
  33.         clip = self.clip
  34.         if not (self.index) and clip and clip != val:
  35.             self.set(clip)
  36.         elif self.history and abs(self.index) < len(self.history):
  37.             self.index -= 1
  38.             self.set(self.history[self.index])
  39.         elif self.backlog is not None:
  40.             
  41.             try:
  42.                 messageobj = self.backlog.next()
  43.                 message = getattr(messageobj, 'message', None)
  44.                 if message is not None:
  45.                     message = strip_html2(message)
  46.             except StopIteration:
  47.                 self.backlog = None
  48.  
  49.             if message is not None:
  50.                 self.history.insert(0, message)
  51.                 self.prev()
  52.             
  53.         
  54.  
  55.     
  56.     def next(self):
  57.         val = self.get()
  58.         if self.index:
  59.             self.index += 1
  60.             if self.index:
  61.                 self.set(self.history[self.index])
  62.             elif self.clip:
  63.                 self.set(self.clip)
  64.             else:
  65.                 self.set('')
  66.         elif val:
  67.             self.clip = val
  68.             self.set('')
  69.         
  70.  
  71.     
  72.     def ParadoxCheck(self):
  73.         present = self.get()
  74.         past = self.history[self.index]
  75.         if present != past:
  76.             self.index = 0
  77.         
  78.  
  79.     
  80.     def bind_textctrl(self, ctrl):
  81.         ctrl.Bind(wx.EVT_KEY_DOWN, self.keydown)
  82.         self.set = ctrl.SetValue
  83.         self.get = ctrl.GetValue
  84.  
  85.     
  86.     def keydown(self, e, WXK_DOWN = wx.WXK_DOWN, WXK_UP = wx.WXK_UP):
  87.         c = e.KeyCode
  88.         if e.GetModifiers() == wx.MOD_CMD:
  89.             if c == WXK_DOWN:
  90.                 return self.next()
  91.             elif c == WXK_UP:
  92.                 return self.prev()
  93.             elif self.index:
  94.                 self.ParadoxCheck()
  95.             
  96.         elif self.index:
  97.             self.ParadoxCheck()
  98.         
  99.         e.Skip()
  100.  
  101.  
  102.