From b3658bfe79f5d8c8c11009b06cee47ad74c01c35 Mon Sep 17 00:00:00 2001 From: Duane Johnson Date: Fri, 11 Nov 2011 18:22:03 -0600 Subject: [PATCH] Added visual indication to highlight XY and Z increment values on mouse over --- xybuttons.py | 21 ++++++++++++++++++--- zbuttons.py | 16 +++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/xybuttons.py b/xybuttons.py index e1dbe40..335b723 100644 --- a/xybuttons.py +++ b/xybuttons.py @@ -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 @@ -31,7 +37,7 @@ class XYButtons(BufferedCanvas): self.corner = None self.moveCallback = moveCallback self.cornerCallback = cornerCallback - self.enabled = False + self.enabled = True BufferedCanvas.__init__(self, parent, ID) @@ -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 ## diff --git a/zbuttons.py b/zbuttons.py index 1d72cd7..d268a89 100644 --- a/zbuttons.py +++ b/zbuttons.py @@ -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: