class SubTitleHeader(TitleHeader): @warnWxThread def GetSubTitlePanel(self, parent): self.subtitle = StaticText(parent) return self.subtitle @warnWxThread def SetSubTitle(self, subtitle): if subtitle != self.subtitle.GetLabel(): self.Freeze() self.subtitle.SetLabel(subtitle) self.subtitle.Refresh() self.Thaw()
class TitleHeader(ListHeader): def __init__(self, parent, parent_list, columns, font_increment=2, fontweight=wx.FONTWEIGHT_BOLD, radius=LIST_RADIUS, spacers=[0, 0]): self.font_increment = font_increment self.fontweight = fontweight ListHeader.__init__(self, parent, parent_list, columns, radius=radius, spacers=spacers) @warnWxThread def AddComponents(self, columns, spacers): vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.AddSpacer((-1, 3)) self.title = StaticText(self) _set_font(self.title, self.font_increment, self.fontweight) titlePanel = self.GetTitlePanel(self) subtitlePanel = self.GetSubTitlePanel(self) righttitlePanel = self.GetRightTitlePanel(self) belowPanel = self.GetBelowPanel(self) if titlePanel: subSizer = wx.BoxSizer(wx.HORIZONTAL) subSizer.Add(self.title) subSizer.Add(titlePanel, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 3) titlePanel = subSizer else: titlePanel = self.title if subtitlePanel: subSizer = wx.BoxSizer(wx.VERTICAL) subSizer.Add(titlePanel, 0, wx.BOTTOM, 3) subSizer.Add(subtitlePanel) subtitlePanel = subSizer else: subtitlePanel = titlePanel subSizer = wx.BoxSizer(wx.HORIZONTAL) subSizer.Add(subtitlePanel) if righttitlePanel: subSizer.Add(righttitlePanel, 1, wx.LEFT, 3) righttitlePanel = subSizer vSizer.Add(righttitlePanel, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, self.radius + spacers[0]) if belowPanel: vSizer.Add(belowPanel, 1, wx.EXPAND | wx.TOP, 3) vSizer.AddSpacer((-1, 3)) if len(columns) > 0: hSizer = wx.BoxSizer(wx.HORIZONTAL) self.AddColumns(hSizer, self, columns) vSizer.Add(hSizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, self.radius + spacers[0]) self.SetSizer(vSizer) def GetTitlePanel(self, parent): pass def GetSubTitlePanel(self, parent): pass def GetRightTitlePanel(self, parent): pass def GetBelowPanel(self, parent): pass @warnWxThread def SetTitle(self, title): if title != self.title.GetLabel(): self.Freeze() self.title.SetLabel(title) self.title.Refresh() self.Layout() self.Thaw() @warnWxThread def SetToolTip(self, tooltip): self.title.SetToolTipString(tooltip)