def _PostInit(self): self.guiutility = GUIUtility.getInstance() self.SetBackgroundColour(DEFAULT_BACKGROUND) vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.AddStretchSpacer() text = StaticText(self, -1, self.guiutility.utility.lang.get('title')) font = text.GetFont() font.SetPointSize(font.GetPointSize() * 3) font.SetWeight(wx.FONTWEIGHT_BOLD) text.SetForegroundColour((255, 51, 0)) text.SetFont(font) textSizer = wx.FlexGridSizer(2, 2, 3, 7) if sys.platform == 'darwin': # mac self.searchBox = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER) else: self.searchBox = TextCtrlAutoComplete( self, entrycallback=self.parent.top_bg.complete, selectcallback=self.parent.top_bg.OnAutoComplete) font = self.searchBox.GetFont() font.SetPointSize(font.GetPointSize() * 2) self.searchBox.SetFont(font) self.searchBox.Bind(wx.EVT_TEXT_ENTER, self.OnSearchKeyDown) if sys.platform == 'darwin': # mac self.searchBox.SetMinSize( (450, self.searchBox.GetTextExtent('T')[1] + 5)) else: self.searchBox.SetMinSize((450, -1)) self.searchBox.SetFocus() textSizer.Add(text, 0, wx.EXPAND | wx.RIGHT, 7) scalingSizer = wx.BoxSizer(wx.HORIZONTAL) scalingSizer.Add(self.searchBox) if sys.platform == 'darwin': # mac searchButton = wx.Button(self, -1, '\n') searchButton.SetLabel('Search') else: searchButton = wx.Button(self, -1, 'Search') searchButton.Bind(wx.EVT_BUTTON, self.OnClick) scalingSizer.Add(searchButton, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 3) textSizer.Add(scalingSizer, 0, wx.ALIGN_CENTER_VERTICAL) textSizer.AddSpacer((1, 1)) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(StaticText(self, -1, "Take me to ")) channelLink = LinkStaticText(self, "channels", icon=None) channelLink.Bind(wx.EVT_LEFT_UP, self.OnChannels) hSizer.Add(channelLink) hSizer.Add(StaticText(self, -1, " to see what others are sharing")) textSizer.Add(hSizer) vSizer.Add(textSizer, 0, wx.ALIGN_CENTER) vSizer.AddStretchSpacer() buzzpanel = BuzzPanel(self) vSizer.Add(buzzpanel, 0, wx.EXPAND) self.SetSizer(vSizer) self.Layout() self.SearchFocus()
class ChannelHeader(SearchHeader): DESCRIPTION_MAX_HEIGTH = 100 @warnWxThread def GetRightTitlePanel(self, parent): hSizer = SearchHeader.GetRightTitlePanel(self, parent) self.back = wx.Button(parent, wx.ID_BACKWARD, "Go back") hSizer.Add(self.back, 0, wx.LEFT, 5) return hSizer @warnWxThread def GetBelowPanel(self, parent): self.descriptionPanel = ImageScrollablePanel(parent) self.descriptionPanel.SetBackgroundColour(DEFAULT_BACKGROUND) self.description = StaticText(self.descriptionPanel) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.description, 1, wx.EXPAND | wx.ALL, 3) self.descriptionPanel.SetSizer(sizer) self.descriptionPanel.Hide() self.descriptionPanel.Bind(wx.EVT_SIZE, self.SetHeight) self.descriptionPanel.Bind(wx.EVT_SHOW, self.SetHeight) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(self.descriptionPanel, 1, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, self.radius + 3) return hSizer def Reset(self): SearchHeader.Reset(self) self.SetStyle(None) @warnWxThread def SetHeight(self, event): if self.descriptionPanel.IsShown(): dirty = False self.descriptionPanel.SetVirtualSizeHints( -1, -1, maxW=self.descriptionPanel.GetClientSize() [0]) #change to allow for scrollbarwidth self.descriptionPanel.SetupScrolling() bestHeight = self.description.GetVirtualSize()[1] + 6 minHeight = min(self.DESCRIPTION_MAX_HEIGTH, bestHeight) if self.descriptionPanel.GetMinSize()[1] != minHeight: self.descriptionPanel.SetMinSize((-1, minHeight)) dirty = True if dirty: self.Layout() @warnWxThread def SetEvents(self, back): self.back.Bind(wx.EVT_BUTTON, back) @warnWxThread def SetStyle(self, description, font=None, foreground=None, bgImage=None): if description: self.description.SetLabel(description) if font: self.description.SetFont(font) if foreground: self.description.SetForegroundColour(foreground) self.descriptionPanel.SetBitmap(bgImage) self.descriptionPanel.Show() else: self.descriptionPanel.Hide()