home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / gui / toolbox / texthistory.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  3.0 KB  |  106 lines

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