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

@ -76,36 +76,14 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
ycol=(180,180,255) ycol=(180,180,255)
zcol=(180,255,180) zcol=(180,255,180)
self.cpbuttons=[ self.cpbuttons=[
# [_("X+100"),("move X 100"),(2,0),xcol,(1,3)], [_("Home"),("home"),(3,0),(250,250,250),(1,2)],
# [_("X+10"),("move X 10"),(3,0),xcol,(1,3)], [_("HomeX"),("home X"),(3,2),(205,205,78),(1,2)],
# [_("X+1"),("move X 1"),(4,0),xcol,(1,3)], [_("HomeY"),("home Y"),(3,4),(150,150,205),(1,2)],
# [_("X+0.1"),("move X 0.1"),(5,0),xcol,(1,3)], [_("HomeZ"),("home Z"),(3,6),(150,205,150),(1,2)],
# [_("HomeX"),("home X"),(6,0),(205,205,78),(1,3)], [_("Motors off"),("M84"),(3,8),(250,250,250),(1,2)],
# [_("X-0.1"),("move X -0.1"),(7,0),xcol,(1,3)], [_("Check temp"),("M105"),(6,6),(225,200,200),(1,3)],
# [_("X-1"),("move X -1"),(8,0),xcol,(1,3)], [_("Extrude"),("extrude"),(7,0),(225,200,200),(1,2)],
# [_("X-10"),("move X -10"),(9,0),xcol,(1,3)], [_("Reverse"),("reverse"),(8,0),(225,200,200),(1,2)],
# [_("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)],
] ]
self.custombuttons=[] self.custombuttons=[]
self.btndict={} self.btndict={}
@ -388,7 +366,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
portslist += [self.settings.port] portslist += [self.settings.port]
self.serialport = wx.ComboBox(self.panel, -1, self.serialport = wx.ComboBox(self.panel, -1,
choices=portslist, 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: try:
if self.settings.port in scan: if self.settings.port in scan:
self.serialport.SetValue(self.settings.port) 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) uts.Add(wx.StaticText(self.panel,-1,"@",pos=(250,5)),wx.RIGHT,5)
self.baud = wx.ComboBox(self.panel, -1, self.baud = wx.ComboBox(self.panel, -1,
choices=["2400", "9600", "19200", "38400", "57600", "115200"], 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: try:
self.baud.SetValue("115200") self.baud.SetValue("115200")
self.baud.SetValue(str(self.settings.baudrate)) self.baud.SetValue(str(self.settings.baudrate))
@ -480,8 +458,11 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
#lls.Add((200,375)) #lls.Add((200,375))
lls.Add(XYButtons(self.panel, self.moveXY, self.home), pos=(2,0), span=(9,6)) xyb = XYButtons(self.panel, self.moveXY)
lls.Add(ZButtons(self.panel, self.moveZ, self.home), pos=(2,7), span=(9,2)) 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: for i in self.cpbuttons:
btn=wx.Button(self.panel,-1,i[0])#,size=(60,-1)) 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(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])] 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()): 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)) 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=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,335))
self.settbtn.Bind(wx.EVT_BUTTON,self.do_settemp) self.settbtn.Bind(wx.EVT_BUTTON,self.do_settemp)
self.printerControls.append(self.settbtn) self.printerControls.append(self.settbtn)
lls.Add(self.settbtn,pos=(11,4),span=(1,2)) lls.Add(self.settbtn,pos=(4,4),span=(1,2))
lls.Add(wx.StaticText(self.panel,-1,_("Bed:"),pos=(0,343)),pos=(12,0),span=(1,1)) 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])] 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()): if self.settings.last_bed_temperature not in map(float,self.bedtemps.values()):
btemp_choices = [str(self.settings.last_bed_temperature)] + btemp_choices 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] concentric_circle_radii = [15, 55, 86, 117, 142]
center = (166, 164) 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.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_bmp = wx.Image(imagefile("arrow_keys.png"),wx.BITMAP_TYPE_PNG).ConvertToBitmap()
self.keypad_idx = 0 self.keypad_idx = -1
self.orderOfMagnitudeIdx = 0
self.quadrant = None self.quadrant = None
self.concentric = None self.concentric = None
self.moveCallback = moveCallback self.moveCallback = moveCallback
self.homeCallback = homeCallback
BufferedCanvas.__init__(self, parent, ID) BufferedCanvas.__init__(self, parent, ID)
@ -38,26 +36,27 @@ class XYButtons(BufferedCanvas):
self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown)
self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_MOTION, self.OnMotion)
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) 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): def onKey(self, evt):
if evt.GetKeyCode() == wx.WXK_TAB: if self.keypad_idx >= 0:
self.setKeypadIndex(self.rotateKeypadIndex()) if evt.GetKeyCode() == wx.WXK_TAB:
elif evt.GetKeyCode() == wx.WXK_UP: self.setKeypadIndex(self.rotateKeypadIndex())
self.quadrant = 1 elif evt.GetKeyCode() == wx.WXK_UP:
elif evt.GetKeyCode() == wx.WXK_DOWN: self.quadrant = 1
self.quadrant = 3 elif evt.GetKeyCode() == wx.WXK_DOWN:
elif evt.GetKeyCode() == wx.WXK_LEFT: self.quadrant = 3
self.quadrant = 2 elif evt.GetKeyCode() == wx.WXK_LEFT:
elif evt.GetKeyCode() == wx.WXK_RIGHT: self.quadrant = 2
self.quadrant = 0 elif evt.GetKeyCode() == wx.WXK_RIGHT:
else: self.quadrant = 0
evt.Skip() else:
return evt.Skip()
if self.moveCallback: return False
self.concentric = self.keypad_idx if self.moveCallback:
x, y = self.getMovement() self.concentric = self.keypad_idx
self.moveCallback(x, y) x, y = self.getMovement()
self.moveCallback(x, y)
def rotateKeypadIndex(self): def rotateKeypadIndex(self):
@ -135,7 +134,10 @@ class XYButtons(BufferedCanvas):
if self.moveCallback: if self.moveCallback:
self.moveCallback(x, y) self.moveCallback(x, y)
else: else:
self.setKeypadIndex(idx) if self.keypad_idx == idx:
self.setKeypadIndex(-1)
else:
self.setKeypadIndex(idx)
def OnLeaveWindow(self, evt): def OnLeaveWindow(self, evt):
self.quadrant = None self.quadrant = None
@ -208,7 +210,8 @@ class XYButtons(BufferedCanvas):
if self.quadrant != None and self.concentric != None: if self.quadrant != None and self.concentric != None:
self.highlightQuadrant(dc, self.quadrant, self.concentric) self.highlightQuadrant(dc, self.quadrant, self.concentric)
pos = XYButtons.keypad_positions[self.keypad_idx] if self.keypad_idx >= 0:
dc.DrawBitmap(self.keypad_bmp, pos[0], pos[1]) pos = XYButtons.keypad_positions[self.keypad_idx]
dc.DrawBitmap(self.keypad_bmp, pos[0], pos[1])
return True return True

View File

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