- allow to define a 'Focus' colour as an alternative to the pulse on focus

This commit is contained in:
Werner F Bruhin
2014-05-28 11:41:48 +02:00
parent a22e09b786
commit a0971ef719
3 changed files with 33 additions and 1 deletions

View File

@@ -39,6 +39,7 @@ class AquaButtonDemo(wx.Panel):
self.backColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetBackgroundColour()) self.backColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetBackgroundColour())
self.hoverColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetHoverColour()) self.hoverColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetHoverColour())
self.focusColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetHoverColour())
self.textColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetForegroundColour()) self.textColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetForegroundColour())
self.pulseCheck = wx.CheckBox(self.mainPanel, -1, "Pulse On Focus") self.pulseCheck = wx.CheckBox(self.mainPanel, -1, "Pulse On Focus")
@@ -52,7 +53,7 @@ class AquaButtonDemo(wx.Panel):
mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.FlexGridSizer(2, 2, 15, 15) btnSizer = wx.FlexGridSizer(2, 2, 15, 15)
colourSizer = wx.FlexGridSizer(2, 3, 1, 10) colourSizer = wx.FlexGridSizer(2, 4, 1, 10)
btnSizer.Add(self.btn1, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL) btnSizer.Add(self.btn1, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL)
btnSizer.Add(self.pulseCheck, 0, wx.ALIGN_CENTER_VERTICAL) btnSizer.Add(self.pulseCheck, 0, wx.ALIGN_CENTER_VERTICAL)
@@ -61,14 +62,17 @@ class AquaButtonDemo(wx.Panel):
labelBack = wx.StaticText(self.mainPanel, -1, "Background Colour") labelBack = wx.StaticText(self.mainPanel, -1, "Background Colour")
labelHover = wx.StaticText(self.mainPanel, -1, "Hover Colour") labelHover = wx.StaticText(self.mainPanel, -1, "Hover Colour")
labelFocus = wx.StaticText(self.mainPanel, -1, "Focus Colour")
labelText = wx.StaticText(self.mainPanel, -1, "Text Colour") labelText = wx.StaticText(self.mainPanel, -1, "Text Colour")
colourSizer.Add(labelBack) colourSizer.Add(labelBack)
colourSizer.Add(labelHover) colourSizer.Add(labelHover)
colourSizer.Add(labelFocus)
colourSizer.Add(labelText) colourSizer.Add(labelText)
colourSizer.Add(self.backColour, 0, wx.EXPAND) colourSizer.Add(self.backColour, 0, wx.EXPAND)
colourSizer.Add(self.hoverColour, 0, wx.EXPAND) colourSizer.Add(self.hoverColour, 0, wx.EXPAND)
colourSizer.Add(self.focusColour, 0, wx.EXPAND)
colourSizer.Add(self.textColour, 0, wx.EXPAND) colourSizer.Add(self.textColour, 0, wx.EXPAND)
btnSizer.Add(colourSizer, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL) btnSizer.Add(colourSizer, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL)
@@ -112,6 +116,8 @@ class AquaButtonDemo(wx.Panel):
self.btn2.SetBackgroundColour(colour) self.btn2.SetBackgroundColour(colour)
elif obj == self.hoverColour: elif obj == self.hoverColour:
self.btn2.SetHoverColour(colour) self.btn2.SetHoverColour(colour)
elif obj == self.focusColour:
self.btn2.SetFocusColour(colour)
else: else:
self.btn2.SetForegroundColour(colour) self.btn2.SetForegroundColour(colour)

View File

@@ -35,6 +35,7 @@ class lib_agw_aquabutton_Tests(wtc.WidgetTestCase):
btn2.SetShadowColour(wx.Colour('grey')) btn2.SetShadowColour(wx.Colour('grey'))
btn2.SetRectColour(wx.WHITE) btn2.SetRectColour(wx.WHITE)
btn2.SetHoverColour(wx.BLACK) btn2.SetHoverColour(wx.BLACK)
btn2.SetFocusColour(wx.GREEN)
btn3 = AB.AquaToggleButton(self.frame, -1, None, 'Toggle') btn3 = AB.AquaToggleButton(self.frame, -1, None, 'Toggle')
btn3.SetToggle(True) btn3.SetToggle(True)

View File

@@ -222,6 +222,7 @@ class AquaButton(wx.Control):
else: else:
self._backColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION) self._backColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION)
self._hoverColour = self.LightColour(self._backColour, 30) self._hoverColour = self.LightColour(self._backColour, 30)
self._focusColour = self.LightColour(self._backColour, 40)
self._disableColour = self.LightColour(self._backColour, 70) self._disableColour = self.LightColour(self._backColour, 70)
self._textColour = wx.WHITE self._textColour = wx.WHITE
self._shadowColour = wx.Colour("grey") self._shadowColour = wx.Colour("grey")
@@ -294,6 +295,9 @@ class AquaButton(wx.Control):
elif self._mouseAction == HOVER: elif self._mouseAction == HOVER:
clr = self._hoverColour clr = self._hoverColour
elif self._hasFocus:
clr = self._focusColour
elif not self.IsEnabled(): elif not self.IsEnabled():
clr = self._disableColour clr = self._disableColour
@@ -827,6 +831,27 @@ class AquaButton(wx.Control):
return self._textColour return self._textColour
def SetFocusColour(self, colour):
"""
Sets the button colour when the button has focus.
:param `colour`: a valid :class:`Colour` object.
"""
self._focusColour = colour
self.Invalidate()
def GetFocusColour(self):
"""
Returns the button colour when the button has focus.
:return: An instance of :class:`Colour`.
"""
return self._hoverColour
def Invalidate(self): def Invalidate(self):
""" Invalidate the saved bitmap and refresh the button. """ """ Invalidate the saved bitmap and refresh the button. """