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

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import wx
  5. import wx.lib.sized_controls as sc
  6. from gui.uberwidgets.UberCombo import UberCombo
  7. from gui.uberwidgets.simplemenu import SimpleMenuItem
  8. from gui.imwin import begin_conversation
  9. from gui.toolbox import persist_window_pos
  10. from gui.validators import LengthLimit
  11. from common import profile
  12. from util.primitives.structures import oset
  13.  
  14. def ShowNewIMDialog():
  15.     NewIMDialog.MakeOrShow()
  16.  
  17.  
  18. class NewIMDialog(sc.SizedDialog):
  19.     
  20.     def __init__(self):
  21.         sc.SizedDialog.__init__(self, None, -1, _('New IM'), style = wx.DEFAULT_DIALOG_STYLE | wx.FRAME_FLOAT_ON_PARENT)
  22.         self.Name = 'New IM Dialog'
  23.         p = self.GetContentsPane()
  24.         p.SetSizerType('form')
  25.         R_CENTER = dict(halign = 'right', valign = 'center')
  26.         
  27.         Text = lambda t: wx.StaticText(p, -1, t)
  28.         Text(_('To')).SetSizerProps(**R_CENTER)
  29.         toctrl.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
  30.         toctrl.SetSizerProps(expand = True)
  31.         Text(_('From')).SetSizerProps(**R_CENTER)
  32.         fromcombo.SetItems(self.UpdateAccountItems(), 0)
  33.         fromcombo.SetSizerProps(expand = True)
  34.         self.SetButtonSizer(self.CreateButtonSizer(wx.OK | wx.CANCEL))
  35.         sendbutton.SetLabel(_('IM'))
  36.         sendbutton.Enable(False)
  37.         sendbutton.Bind(wx.EVT_BUTTON, self.OnAccept)
  38.         profile.account_manager.connected_accounts.add_observer(self.WhenOnlineAcctsChange)
  39.         Bind = self.Bind
  40.         Bind(wx.EVT_CLOSE, self.OnClose)
  41.         Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
  42.         persist_window_pos(self, defaultPos = 'center', position_only = True)
  43.         self.Fit()
  44.         self.SetSize((300, self.BestSize.height))
  45.  
  46.     
  47.     def WhenOnlineAcctsChange(self, *a):
  48.         fromcombo = self.fromcombo
  49.         fromcombo.SetItems(self.UpdateAccountItems())
  50.         if fromcombo.Value not in fromcombo:
  51.             if len(fromcombo):
  52.                 fromcombo.SetSelection(0)
  53.             else:
  54.                 fromcombo.Value = _('No Connections')
  55.         
  56.         self.UpdateButtonState()
  57.  
  58.     
  59.     def UpdateAccountItems(self):
  60.         if not hasattr(self, 'acctitems'):
  61.             self.acctitems = oset()
  62.         
  63.         acctitems = self.acctitems
  64.         accounts = oset(profile.account_manager.connected_accounts)
  65.         accts = set((lambda .0: for item in .0:
  66. item.id)(acctitems))
  67.         newaccts = accounts - accts
  68.         oldaccts = accts - accounts
  69.         for item in set(acctitems):
  70.             if item.id in oldaccts:
  71.                 acctitems.remove(item)
  72.                 continue
  73.         
  74.         for account in newaccts:
  75.             if account.allow_contact_add:
  76.                 acctitems.add(SimpleMenuItem([
  77.                     account.serviceicon.Resized(16),
  78.                     account.username], id = account))
  79.                 continue
  80.         
  81.         return list(acctitems)
  82.  
  83.     
  84.     def OnKeyDown(self, event):
  85.         ctrl = event.ControlDown()
  86.         key = event.GetKeyCode()
  87.         if ctrl and key == wx.WXK_DOWN:
  88.             self.fromcombo.SelectNextItem(True)
  89.         elif ctrl and key == wx.WXK_UP:
  90.             self.fromcombo.SelectPrevItem(True)
  91.         elif key == wx.WXK_ESCAPE:
  92.             self.Close()
  93.         elif key == wx.WXK_RETURN and bool(self.toctrl.Value) and len(self.fromcombo):
  94.             self.OnAccept()
  95.         else:
  96.             event.Skip()
  97.         self.UpdateButtonState()
  98.  
  99.     
  100.     def UpdateButtonState(self):
  101.         (wx.CallAfter,)((lambda : if bool(self.toctrl.Value):
  102. passself.sendbutton.Enable(len(self.fromcombo))))
  103.  
  104.     
  105.     def OnAccept(self, event = None):
  106.         self.Hide()
  107.         proto = self.fromcombo.Value.id.connection
  108.         begin_conversation(proto.get_buddy(self.toctrl.Value), forceproto = True)
  109.         self.Close()
  110.  
  111.     
  112.     def OnClose(self, event):
  113.         profile.account_manager.connected_accounts.remove_observer(self.WhenOnlineAcctsChange)
  114.         self.Show(False)
  115.         type(self).new_im_instance = None
  116.         self.Destroy()
  117.  
  118.     
  119.     def MakeOrShow(cls):
  120.         if not hasattr(cls, 'new_im_instance'):
  121.             cls.new_im_instance = None
  122.         
  123.         if cls.new_im_instance:
  124.             cls.new_im_instance.Show(True)
  125.         else:
  126.             cls.new_im_instance = NewIMDialog()
  127.             cls.new_im_instance.Show(True)
  128.         cls.new_im_instance.ReallyRaise()
  129.  
  130.     MakeOrShow = classmethod(MakeOrShow)
  131.  
  132.