def __init__(self, parent): wx.VListBox.__init__(self, parent) import common.favicons common.favicons.on_icon += self.OnFaviconReceived self.emails = [] self.account = None self.itemheight = 0 self.preview_offset = 0 self.preview_timer = wx.PyTimer(self.on_preview_timer) self.marquee_timer = wx.PyTimer(self.on_marquee) self.SetItemCount(len(self.emails)) self.linkage = PseudoSizer() self.linkage.Show(False) self.errorlink = None self.UpdateSkin() #links as (object name, String to be displayed, # callback in self.account fitting this call callback(email)) links = [('olink', 'Open', 'OnClickEmail'), ('rlink', 'Mark as Read', 'markAsRead'), ('alink', 'Archive', 'archive'), ('dlink', 'Delete', 'delete'), ('slink', 'Report Spam', 'reportSpam')] # Use the above list to generate ClearLink objects for attr, text, method in links: link = ClearLink(self, -1, text, method, style=wx.NO_BORDER | wx.HL_ALIGN_CENTRE) link.NormalColour = link.HoverColour = link.VisitedColour = self.hoverlinkfc link.Font = self.linkfont setattr(self, attr, link) self.linkage.Add(link) self.BBind(HYPERLINK=self.OnLink, MOTION=self.OnMouseMotion, LEFT_DCLICK=self.OnDblClick, LEAVE_WINDOW=self.OnMouseOut, MOUSEWHEEL=self.OnMouseWheel, PAINT=self.OnPaint, SHOW=self.OnShow) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
def __init__(self, parent): wx.VListBox.__init__(self, parent) import common.favicons common.favicons.on_icon += self.OnFaviconReceived self.emails = [] self.account = None self.itemheight = 0 self.preview_offset = 0 self.preview_timer = wx.PyTimer(self.on_preview_timer) self.marquee_timer = wx.PyTimer(self.on_marquee) self.SetItemCount(len(self.emails)) self.linkage = PseudoSizer() self.linkage.Show(False) self.errorlink=None self.UpdateSkin() #links as (object name, String to be displayed, # callback in self.account fitting this call callback(email)) links = [('olink', 'Open', 'OnClickEmail'), ('rlink', 'Mark as Read', 'markAsRead'), ('alink', 'Archive', 'archive'), ('dlink', 'Delete', 'delete'), ('slink', 'Report Spam', 'reportSpam')] # Use the above list to generate ClearLink objects for attr, text, method in links: link = ClearLink(self, -1, text, method, style = wx.NO_BORDER | wx.HL_ALIGN_CENTRE) link.NormalColour=link.HoverColour=link.VisitedColour=self.hoverlinkfc link.Font=self.linkfont setattr(self, attr, link) self.linkage.Add(link) self.BBind(HYPERLINK = self.OnLink, MOTION = self.OnMouseMotion, LEFT_DCLICK = self.OnDblClick, LEAVE_WINDOW = self.OnMouseOut, MOUSEWHEEL = self.OnMouseWheel, PAINT = self.OnPaint, SHOW = self.OnShow) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
def SetAccount(self, account): """ Set an account to the header Handles unloading the previous acount and setting up the links and observer callbacks for the new account """ if account is self.account: return if self.account is not None: try: self.account.unobserve_count(self.Refreshxor) except NotImplementedError: pass try: self.account.unobserve_state(self.Refreshxor) except NotImplementedError: pass self.account = account self.icon = account.icon.Resized(16) # Construct action links self.linkage.Clear(True) for linkfunc in account.header_funcs: link = ClearLink(self, -1, linkfunc[0], lambda l=linkfunc: self.do_link(l), style=link_style, pos=(-400, -400)) link.NormalColour = link.HoverColour = link.VisitedColour = self.linkfc link.Font = self.linkfont self.linkage.Add(link) self.linkage.Layout() if self.extralinkage: self.extralinkage.Show(False) self.extralinkage.Destroy() self.extralinkage = None if getattr(account, 'extra_header_func', None) is not None: self.extralinkage = elink = ClearLink( self, -1, account.extra_header_func[0], lambda l=account.extra_header_func: self.do_link(l), style=link_style, pos=(-400, -400)) elink.NormalColour = elink.HoverColour = elink.VisitedColour = self.linkfc elink.Font = self.elinkfont self.ExtraLinkLayout() try: self._unbound_cbs.clear() except AttributeError: pass try: account.observe_count(self.Refreshxor) except NotImplementedError: pass try: account.observe_state(self.Refreshxor) except NotImplementedError: pass self.Refresh(False)
def SetAccount(self, account): """ Set an account to the header Handles unloading the previous acount and setting up the links and observer callbacks for the new account """ if account is self.account: return if self.account is not None: try: self.account.unobserve_count(self.Refreshxor) except NotImplementedError: pass try: self.account.unobserve_state(self.Refreshxor) except NotImplementedError: pass self.account = account self.icon = account.icon.Resized(16) # Construct action links self.linkage.Clear(True) for linkfunc in account.header_funcs: link = ClearLink(self, -1, linkfunc[0], lambda l=linkfunc: self.do_link(l), style = link_style, pos = (-400, -400)) link.NormalColour = link.HoverColour = link.VisitedColour = self.linkfc link.Font = self.linkfont self.linkage.Add(link) self.linkage.Layout() if self.extralinkage: self.extralinkage.Show(False) self.extralinkage.Destroy() self.extralinkage = None if getattr(account, 'extra_header_func', None) is not None: self.extralinkage = elink = ClearLink(self, -1, account.extra_header_func[0], lambda l=account.extra_header_func: self.do_link(l), style = link_style, pos = (-400, -400)) elink.NormalColour = elink.HoverColour = elink.VisitedColour = self.linkfc elink.Font = self.elinkfont self.ExtraLinkLayout() try: self._unbound_cbs.clear() except AttributeError: pass try: account.observe_count(self.Refreshxor) except NotImplementedError: pass try: account.observe_state(self.Refreshxor) except NotImplementedError: pass self.Refresh(False)