Fixed keypad toggle for XY controls. Defaults to off.

master
Duane Johnson 2011-11-07 22:09:18 -06:00
parent 37cdd32347
commit f4d18e4dff
4 changed files with 50 additions and 70 deletions

View File

@ -144,4 +144,4 @@ class BufferedCanvas(wx.Panel):
self.backbuffer = wx.EmptyBitmapRGBA(w, h, alpha=0)
# Now update the screen
self.update()
self.update()

View File

@ -76,36 +76,14 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
ycol=(180,180,255)
zcol=(180,255,180)
self.cpbuttons=[
# [_("X+100"),("move X 100"),(2,0),xcol,(1,3)],
# [_("X+10"),("move X 10"),(3,0),xcol,(1,3)],
# [_("X+1"),("move X 1"),(4,0),xcol,(1,3)],
# [_("X+0.1"),("move X 0.1"),(5,0),xcol,(1,3)],
# [_("HomeX"),("home X"),(6,0),(205,205,78),(1,3)],
# [_("X-0.1"),("move X -0.1"),(7,0),xcol,(1,3)],
# [_("X-1"),("move X -1"),(8,0),xcol,(1,3)],
# [_("X-10"),("move X -10"),(9,0),xcol,(1,3)],
# [_("X-100"),("move X -100"),(10,0),xcol,(1,3)],
# [_("Y+100"),("move Y 100"),(2,3),ycol,(1,3)],
# [_("Y+10"),("move Y 10"),(3,3),ycol,(1,3)],
# [_("Y+1"),("move Y 1"),(4,3),ycol,(1,3)],
# [_("Y+0.1"),("move Y 0.1"),(5,3),ycol,(1,3)],
# [_("HomeY"),("home Y"),(6,3),(150,150,205),(1,3)],
# [_("Y-0.1"),("move Y -0.1"),(7,3),ycol,(1,3)],
# [_("Y-1"),("move Y -1"),(8,3),ycol,(1,3)],
# [_("Y-10"),("move Y -10"),(9,3),ycol,(1,3)],
# [_("Y-100"),("move Y -100"),(10,3),ycol,(1,3)],
# [_("Motors off"),("M84"),(2,6),(250,250,250),(1,3)],
# [_("Z+10"),("move Z 10"),(3,6),zcol,(1,3)],
# [_("Z+1"),("move Z 1"),(4,6),zcol,(1,3)],
# [_("Z+0.1"),("move Z 0.1"),(5,6),zcol,(1,3)],
# [_("HomeZ"),("home Z"),(6,6),(150,205,150),(1,3)],
# [_("Z-0.1"),("move Z -0.1"),(7,6),zcol,(1,3)],
# [_("Z-1"),("move Z -1"),(8,6),zcol,(1,3)],
# [_("Z-10"),("move Z -10"),(9,6),zcol,(1,3)],
# [_("Home"),("home"),(10,6),(250,250,250),(1,3)],
[_("Check temp"),("M105"),(11,6),(225,200,200),(1,3)],
[_("Extrude"),("extrude"),(13,0),(225,200,200),(1,2)],
[_("Reverse"),("reverse"),(14,0),(225,200,200),(1,2)],
[_("Home"),("home"),(3,0),(250,250,250),(1,2)],
[_("HomeX"),("home X"),(3,2),(205,205,78),(1,2)],
[_("HomeY"),("home Y"),(3,4),(150,150,205),(1,2)],
[_("HomeZ"),("home Z"),(3,6),(150,205,150),(1,2)],
[_("Motors off"),("M84"),(3,8),(250,250,250),(1,2)],
[_("Check temp"),("M105"),(6,6),(225,200,200),(1,3)],
[_("Extrude"),("extrude"),(7,0),(225,200,200),(1,2)],
[_("Reverse"),("reverse"),(8,0),(225,200,200),(1,2)],
]
self.custombuttons=[]
self.btndict={}
@ -388,7 +366,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
portslist += [self.settings.port]
self.serialport = wx.ComboBox(self.panel, -1,
choices=portslist,
style=wx.CB_DROPDOWN|wx.CB_SORT, pos=(50,0))
style=wx.CB_DROPDOWN|wx.CB_SORT|wx.CB_READONLY, pos=(50,0))
try:
if self.settings.port in scan:
self.serialport.SetValue(self.settings.port)
@ -400,7 +378,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
uts.Add(wx.StaticText(self.panel,-1,"@",pos=(250,5)),wx.RIGHT,5)
self.baud = wx.ComboBox(self.panel, -1,
choices=["2400", "9600", "19200", "38400", "57600", "115200"],
style=wx.CB_DROPDOWN|wx.CB_SORT, size=(110,30),pos=(275,0))
style=wx.CB_DROPDOWN|wx.CB_SORT|wx.CB_READONLY, size=(110,30),pos=(275,0))
try:
self.baud.SetValue("115200")
self.baud.SetValue(str(self.settings.baudrate))
@ -480,8 +458,11 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
#lls.Add((200,375))
lls.Add(XYButtons(self.panel, self.moveXY, self.home), pos=(2,0), span=(9,6))
lls.Add(ZButtons(self.panel, self.moveZ, self.home), pos=(2,7), span=(9,2))
xyb = XYButtons(self.panel, self.moveXY)
lls.Add(xyb, pos=(2,0), span=(1,6), flag=wx.ALIGN_CENTER)
zb = ZButtons(self.panel, self.moveZ)
lls.Add(zb, pos=(2,7), span=(1,2), flag=wx.ALIGN_CENTER)
wx.CallAfter(xyb.SetFocus)
for i in self.cpbuttons:
btn=wx.Button(self.panel,-1,i[0])#,size=(60,-1))
@ -494,7 +475,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
lls.Add(btn,pos=i[2],span=i[4])
lls.Add(wx.StaticText(self.panel,-1,_("Heater:"),pos=(0,343)),pos=(11,0),span=(1,1))
lls.Add(wx.StaticText(self.panel,-1,_("Heater:"),pos=(0,343)),pos=(4,0),span=(1,1))
htemp_choices=[self.temps[i]+" ("+i+")" for i in sorted(self.temps.keys(),key=lambda x:self.temps[x])]
if self.settings.last_temperature not in map(float,self.temps.values()):
@ -503,12 +484,12 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
choices=htemp_choices,style=wx.CB_DROPDOWN, size=(90,25),pos=(45,337))
lls.Add(self.htemp,pos=(11,1),span=(1,3))
lls.Add(self.htemp,pos=(4,1),span=(1,3))
self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,335))
self.settbtn.Bind(wx.EVT_BUTTON,self.do_settemp)
self.printerControls.append(self.settbtn)
lls.Add(self.settbtn,pos=(11,4),span=(1,2))
lls.Add(wx.StaticText(self.panel,-1,_("Bed:"),pos=(0,343)),pos=(12,0),span=(1,1))
lls.Add(self.settbtn,pos=(4,4),span=(1,2))
lls.Add(wx.StaticText(self.panel,-1,_("Bed:"),pos=(0,343)),pos=(5,0),span=(1,1))
btemp_choices=[self.bedtemps[i]+" ("+i+")" for i in sorted(self.bedtemps.keys(),key=lambda x:self.temps[x])]
if self.settings.last_bed_temperature not in map(float,self.bedtemps.values()):
btemp_choices = [str(self.settings.last_bed_temperature)] + btemp_choices

View File

@ -19,15 +19,13 @@ class XYButtons(BufferedCanvas):
concentric_circle_radii = [15, 55, 86, 117, 142]
center = (166, 164)
def __init__(self, parent, moveCallback=None, homeCallback=None, ID=-1):
def __init__(self, parent, moveCallback=None, ID=-1):
self.bg_bmp = wx.Image(imagefile("control_xy.png"),wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.keypad_bmp = wx.Image(imagefile("arrow_keys.png"),wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.keypad_idx = 0
self.orderOfMagnitudeIdx = 0
self.keypad_idx = -1
self.quadrant = None
self.concentric = None
self.moveCallback = moveCallback
self.homeCallback = homeCallback
BufferedCanvas.__init__(self, parent, ID)
@ -38,26 +36,27 @@ class XYButtons(BufferedCanvas):
self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown)
self.Bind(wx.EVT_MOTION, self.OnMotion)
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
parent.Bind(wx.EVT_CHAR_HOOK, self.onKey)
wx.GetTopLevelParent(self).Bind(wx.EVT_CHAR_HOOK, self.onKey)
def onKey(self, evt):
if evt.GetKeyCode() == wx.WXK_TAB:
self.setKeypadIndex(self.rotateKeypadIndex())
elif evt.GetKeyCode() == wx.WXK_UP:
self.quadrant = 1
elif evt.GetKeyCode() == wx.WXK_DOWN:
self.quadrant = 3
elif evt.GetKeyCode() == wx.WXK_LEFT:
self.quadrant = 2
elif evt.GetKeyCode() == wx.WXK_RIGHT:
self.quadrant = 0
else:
evt.Skip()
return
if self.moveCallback:
self.concentric = self.keypad_idx
x, y = self.getMovement()
self.moveCallback(x, y)
if self.keypad_idx >= 0:
if evt.GetKeyCode() == wx.WXK_TAB:
self.setKeypadIndex(self.rotateKeypadIndex())
elif evt.GetKeyCode() == wx.WXK_UP:
self.quadrant = 1
elif evt.GetKeyCode() == wx.WXK_DOWN:
self.quadrant = 3
elif evt.GetKeyCode() == wx.WXK_LEFT:
self.quadrant = 2
elif evt.GetKeyCode() == wx.WXK_RIGHT:
self.quadrant = 0
else:
evt.Skip()
return False
if self.moveCallback:
self.concentric = self.keypad_idx
x, y = self.getMovement()
self.moveCallback(x, y)
def rotateKeypadIndex(self):
@ -135,7 +134,10 @@ class XYButtons(BufferedCanvas):
if self.moveCallback:
self.moveCallback(x, y)
else:
self.setKeypadIndex(idx)
if self.keypad_idx == idx:
self.setKeypadIndex(-1)
else:
self.setKeypadIndex(idx)
def OnLeaveWindow(self, evt):
self.quadrant = None
@ -207,8 +209,9 @@ class XYButtons(BufferedCanvas):
if self.quadrant != None and self.concentric != None:
self.highlightQuadrant(dc, self.quadrant, self.concentric)
pos = XYButtons.keypad_positions[self.keypad_idx]
dc.DrawBitmap(self.keypad_bmp, pos[0], pos[1])
if self.keypad_idx >= 0:
pos = XYButtons.keypad_positions[self.keypad_idx]
dc.DrawBitmap(self.keypad_bmp, pos[0], pos[1])
return True

View File

@ -13,13 +13,12 @@ class ZButtons(BufferedCanvas):
button_ydistances = [8, 30, 56, 84, 118]
center = (32, 146)
def __init__(self, parent, moveCallback=None, homeCallback=None, ID=-1):
def __init__(self, parent, moveCallback=None, ID=-1):
self.bg_bmp = wx.Image(imagefile("control_z.png"),wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.range = None
self.direction = None
self.orderOfMagnitudeIdx = 0 # 0 means '1', 1 means '10', 2 means '100', etc.
self.moveCallback = moveCallback
self.homeCallback = homeCallback
BufferedCanvas.__init__(self, parent, ID)
@ -73,9 +72,6 @@ class ZButtons(BufferedCanvas):
value = math.pow(10, self.orderOfMagnitudeIdx) * math.pow(10, r - 1) * d
if self.moveCallback:
self.moveCallback(value)
else:
if self.homeCallback:
self.homeCallback()
def OnLeaveWindow(self, evt):
self.range = None