Merge pull request #84 from canadaduane/master

Added visual indicator for increment values on mouseover
master
kliment 2011-11-12 01:12:15 -08:00
commit 8eb89b20a8
2 changed files with 32 additions and 3 deletions

View File

@ -18,6 +18,12 @@ class XYButtons(BufferedCanvas):
}
corner_size = (49, 49)
corner_inset = (8, 6)
label_overlay_positions = {
0: (142, 105, 11),
1: (160, 85, 13),
2: (179, 65, 15),
3: (201, 42, 16)
}
concentric_circle_radii = [11, 45, 69, 94, 115]
center = (124, 121)
spacer = 7
@ -206,14 +212,23 @@ class XYButtons(BufferedCanvas):
pos = XYButtons.keypad_positions[self.keypad_idx]
pos = (pos[0] - padw/2 - 3, pos[1] - padh/2 - 3)
gc.DrawBitmap(self.keypad_bmp, pos[0], pos[1], padw, padh)
# Draw label overlays
gc.SetPen(wx.Pen(wx.Colour(255,255,255,128), 1))
gc.SetBrush(wx.Brush(wx.Colour(255,255,255,128+64)))
for idx, kpos in XYButtons.label_overlay_positions.items():
if idx != self.concentric:
r = kpos[2]
gc.DrawEllipse(kpos[0]-r, kpos[1]-r, r*2, r*2)
else:
gc.SetPen(wx.Pen(wx.Colour(255,255,255,0), 4))
gc.SetBrush(wx.Brush(wx.Colour(255,255,255,128)))
gc.DrawRectangle(0, 0, w, h)
# Used to check exact position of keypad dots, should we ever resize the bg image
# for idx, kpos in XYButtons.keypad_positions.items():
# dc.DrawCircle(kpos[0], kpos[1], 6)
# for idx, kpos in XYButtons.label_overlay_positions.items():
# dc.DrawCircle(kpos[0], kpos[1], kpos[2])
## ------ ##
## Events ##

View File

@ -12,6 +12,12 @@ def sign(n):
class ZButtons(BufferedCanvas):
button_ydistances = [7, 30, 55, 83, 112]
center = (30, 118)
label_overlay_positions = {
0: (1, 18, 11),
1: (1, 41, 13),
2: (1, 67, 15),
3: None
}
def __init__(self, parent, moveCallback=None, ID=-1):
self.bg_bmp = wx.Image(imagefile("control_z.png"),wx.BITMAP_TYPE_PNG).ConvertToBitmap()
@ -74,9 +80,17 @@ class ZButtons(BufferedCanvas):
gc.DrawBitmap(self.bg_bmp, 0, 0, w, h)
if self.enabled:
# Draw label overlays
gc.SetPen(wx.Pen(wx.Colour(255,255,255,128), 1))
gc.SetBrush(wx.Brush(wx.Colour(255,255,255,128+64)))
for idx, kpos in ZButtons.label_overlay_positions.items():
if kpos and idx != self.range:
r = kpos[2]
gc.DrawEllipse(ZButtons.center[0]-kpos[0]-r, ZButtons.center[1]-kpos[1]-r, r*2, r*2)
# Top 'layer' is the mouse-over highlights
gc.SetPen(wx.Pen(wx.Colour(100,100,100,172), 4))
gc.SetBrush(wx.Brush(wx.Colour(0,0,0,128)))
if self.range != None and self.direction != None:
self.highlight(gc, self.range, self.direction)
else: