Skip to content

Commit

Permalink
- Tk doesn't accept unicode characters as data in event_genrate
Browse files Browse the repository at this point in the history
  Encoded every string with utf-8
- Added Tabs and groups in internationalization
  Still missing the ":"
  • Loading branch information
vlachoudis committed Jan 1, 2016
1 parent 1030932 commit 0f97de2
Show file tree
Hide file tree
Showing 15 changed files with 1,330 additions and 1,399 deletions.
2 changes: 1 addition & 1 deletion CNC.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,6 @@ def scan(self):
# Add a probed point to the list and the 3D matrix
#----------------------------------------------------------------------
def add(self, x,y,z):
self.points.append([x,y,z])
i = round((x-self.xmin) / self._xstep)
if i<0.0 or i>self.xn: return

Expand All @@ -294,6 +293,7 @@ def add(self, x,y,z):

try:
self.matrix[int(j)][int(i)] = z
self.points.append([x,y,z])
except IndexError:
pass

Expand Down
28 changes: 15 additions & 13 deletions CNCCanvas.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -255,42 +255,44 @@ def actionCancel(self, event=None):
# ----------------------------------------------------------------------
def setActionSelect(self, event=None):
self.setAction(ACTION_SELECT)
self.event_generate("<<Status>>", data=_("Select objects with mouse"))
self.event_generate("<<Status>>", data=_("Select objects with mouse").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionPan(self, event=None):
self.setAction(ACTION_PAN)
self.event_generate("<<Status>>",data=_("Pan viewport"))
self.event_generate("<<Status>>",data=_("Pan viewport").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionOrigin(self, event=None):
self.setAction(ACTION_ORIGIN)
self.event_generate("<<Status>>",data=_("Click to set the origin (zero)"))
self.event_generate("<<Status>>",data=_("Click to set the origin (zero)").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionMove(self, event=None):
self.setAction(ACTION_MOVE)
self.event_generate("<<Status>>",data=_("Move graphically objects"))
self.event_generate("<<Status>>",data=_("Move graphically objects").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionGantry(self, event=None):
self.setAction(ACTION_GANTRY)
self.event_generate("<<Status>>",data=_("Move CNC gantry to mouse location"))
self.event_generate("<<Status>>",data=_("Move CNC gantry to mouse location").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionSetPos(self, event=None):
self.setAction(ACTION_SET_POS)
self.event_generate("<<Status>>",data=_("Set mouse location as current machine position (X/Y only)"))
self.event_generate("<<Status>>",
data=_("Set mouse location as current machine position (X/Y only)").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionRuler(self, event=None):
self.setAction(ACTION_RULER)
self.event_generate("<<Status>>",data=_("Drag a ruler to measure distances"))
self.event_generate("<<Status>>",
data=_("Drag a ruler to measure distances").encode("utf-8"))

# ----------------------------------------------------------------------
def setActionAddTab(self, event=None):
self.setAction(ACTION_ADDTAB)
self.event_generate("<<Status>>",data=_("Draw a square tab"))
self.event_generate("<<Status>>",data=_("Draw a square tab").encode("utf-8"))

# ----------------------------------------------------------------------
def actionGantry(self, x, y):
Expand Down Expand Up @@ -463,9 +465,9 @@ def buttonMotion(self, event):
dy=self._vy1-self._vy0
dz=self._vz1-self._vz0
self.event_generate("<<Status>>",
data=_("dx=%g dy=%g dz=%g length=%g angle=%g")\
data=(_("dx=%g dy=%g dz=%g length=%g angle=%g")\
% (dx,dy,dz,math.sqrt(dx**2+dy**2+dz**2),
math.degrees(math.atan2(dy,dx))))
math.degrees(math.atan2(dy,dx)))).encode("utf-8"))

elif self._mouseAction == ACTION_PAN:
self.pan(event)
Expand Down Expand Up @@ -540,8 +542,9 @@ def release(self, event):
dx=self._vx1-self._vx0
dy=self._vy1-self._vy0
dz=self._vz1-self._vz0
self.event_generate("<<Status>>", data=_("Move by %g, %g, %g")%(dx,dy,dz))
self.app.insertCommand(_("move %g %g %g")%(dx,dy,dz),True)
self.event_generate("<<Status>>",
data=(_("Move by %g, %g, %g")%(dx,dy,dz)).encode("utf-8"))
self.app.insertCommand(("move %g %g %g")%(dx,dy,dz),True)

elif self._mouseAction == ACTION_PAN:
self.panRelease(event)
Expand Down Expand Up @@ -1488,7 +1491,6 @@ def createCanvasToolbar(self, toolbar):
value=ACTION_PAN,
command=self.canvas.setActionPan)
tkExtra.Balloon.set(b, _("Pan viewport [X]"))
self.addWidget(b)
b.pack(side=LEFT)

b = Radiobutton(toolbar, image=Utils.icons["gantry"],
Expand Down
14 changes: 7 additions & 7 deletions CNCList.py
Original file line number Diff line number Diff line change
Expand Up @@ -557,16 +557,16 @@ def toggleExpand(self, event=None):
# ----------------------------------------------------------------------
def _toggleEnable(self, enable=None):
if not self._items: return None
items = list(map(int,self.curselection()))
active = self.index(ACTIVE)
ypos = self.yview()[0]
items = list(map(int,self.curselection()))
active = self.index(ACTIVE)
ypos = self.yview()[0]
undoinfo = []
#blocks = []
blocks = []
for i in items:
bid,lid = self._items[i]
#if lid is not None:
# if bid in blocks: continue
#blocks.append(bid)
if lid is not None:
if bid in blocks: continue
blocks.append(bid)
block = self.gcode[bid]
if block.name() in ("Header", "Footer"): continue
if enable is None: enable = not block.enable
Expand Down
12 changes: 7 additions & 5 deletions ControlPage.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#===============================================================================
class ConnectionGroup(CNCRibbon.ButtonMenuGroup):
def __init__(self, master, app):
CNCRibbon.ButtonMenuGroup.__init__(self, master, "Connection", app,
CNCRibbon.ButtonMenuGroup.__init__(self, master, N_("Connection"), app,
[(_("Hard Reset"), "reset", app.hardReset)
])
self.grid2rows()
Expand Down Expand Up @@ -347,7 +347,7 @@ def _wcsSet(self, x, y, z):
if z is not None: cmd += "Z"+str(z)
self.sendGrbl(cmd+"\n$#\n")
self.event_generate("<<Status>>",
data=_("Set workspace %s to X%s Y%s Z%s")%(WCS[p],str(x),str(y),str(z)))
data=(_("Set workspace %s to X%s Y%s Z%s")%(WCS[p],str(x),str(y),str(z))).encode("utf-8"))
self.event_generate("<<CanvasFocus>>")

#----------------------------------------------------------------------
Expand Down Expand Up @@ -647,10 +647,12 @@ def go2origin(self, event=None):
def setStep(self, s, zs=None):
self.step.set("%.4g"%(s))
if self.zstep is self.step or zs is None:
self.event_generate("<<Status>>",data=_("Step: %g")%(s))
self.event_generate("<<Status>>",
data=(_("Step: %g")%(s)).encode("utf-8"))
else:
self.zstep.set("%.4g"%(zs))
self.event_generate("<<Status>>",data=_("Step: %g Zstep:%g ")%(s,zs))
self.event_generate("<<Status>>",
data=(_("Step: %g Zstep:%g ")%(s,zs)).encode("utf-8"))

#----------------------------------------------------------------------
@staticmethod
Expand Down Expand Up @@ -1030,7 +1032,7 @@ def wcsChange(self):
class ControlPage(CNCRibbon.Page):
"""CNC communication and control"""

_name_ = "Control"
_name_ = N_("Control")
_icon_ = "control"

#----------------------------------------------------------------------
Expand Down
14 changes: 7 additions & 7 deletions EditorPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#===============================================================================
class ClipboardGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Clipboard", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Clipboard"), app)
self.grid2rows()

# ---
Expand Down Expand Up @@ -69,7 +69,7 @@ def __init__(self, master, app):
#===============================================================================
class SelectGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Select", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Select"), app)
self.grid3rows()

# ---
Expand Down Expand Up @@ -113,7 +113,7 @@ def __init__(self, master, app):
#===============================================================================
class EditGroup(CNCRibbon.ButtonMenuGroup):
def __init__(self, master, app):
CNCRibbon.ButtonMenuGroup.__init__(self, master, "Edit", app,
CNCRibbon.ButtonMenuGroup.__init__(self, master, N_("Edit"), app,
[(_("Import"), "load", lambda a=app:a.insertCommand("IMPORT",True)),
(_("Inkscape"), "inkscape", lambda a=app:a.insertCommand("INKSCAPE all",True)),
(_("Round"), "digits", lambda s=app:s.insertCommand("ROUND", True)),
Expand Down Expand Up @@ -213,7 +213,7 @@ def __init__(self, master, app):
#===============================================================================
class MoveGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Move", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Move"), app)
self.grid3rows()

# ===
Expand Down Expand Up @@ -373,7 +373,7 @@ def __init__(self, master, app):
#===============================================================================
class OrderGroup(CNCRibbon.ButtonMenuGroup):
def __init__(self, master, app):
CNCRibbon.ButtonMenuGroup.__init__(self, master, "Order", app,
CNCRibbon.ButtonMenuGroup.__init__(self, master, N_("Order"), app,
[(_("Optimize"), "optimize", lambda a=app:a.insertCommand("OPTIMIZE",True)),
])
self.grid2rows()
Expand Down Expand Up @@ -419,7 +419,7 @@ def __init__(self, master, app):
#===============================================================================
class TransformGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Transform", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Transform"), app)
self.grid3rows()

# ---
Expand Down Expand Up @@ -524,7 +524,7 @@ def __init__(self, master, app):
class EditorPage(CNCRibbon.Page):
"""GCode editor"""

_name_ = "Editor"
_name_ = N_("Editor")
_icon_ = "edit"

#----------------------------------------------------------------------
Expand Down
10 changes: 5 additions & 5 deletions FilePage.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def createMenu(self):
#===============================================================================
class FileGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "File", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("File"), app)
self.grid3rows()

# ---
Expand Down Expand Up @@ -112,7 +112,7 @@ def __init__(self, master, app):
#===============================================================================
class OptionsGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Options", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Options"), app)
self.grid3rows()

# # ---
Expand Down Expand Up @@ -169,7 +169,7 @@ def __init__(self, master, app):
#===============================================================================
class PendantGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Pendant", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Pendant"), app)
self.grid3rows()

col,row=0,0
Expand Down Expand Up @@ -199,7 +199,7 @@ def __init__(self, master, app):
#===============================================================================
class CloseGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Close", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Close"), app)

# ---
b = Ribbon.LabelButton(self.frame,
Expand Down Expand Up @@ -283,7 +283,7 @@ def saveConfig(self):
#===============================================================================
class FilePage(CNCRibbon.Page):
"""File I/O and configuration"""
_name_ = "File"
_name_ = N_("File")
_icon_ = "new"

#----------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion ProbePage.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#===============================================================================
class ProbeTabGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Probe", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Probe"), app)

self.tab = StringVar()
self.tab.set("Probe")
Expand Down
4 changes: 2 additions & 2 deletions Ribbon.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def __init__(self, master, name, command=None, **kw):
pady=0,
compound=RIGHT)
else:
self.label = Label(self, text=name,
self.label = Label(self, text=_(name),
font = _FONT,
foreground = _FOREGROUND_GROUP,
background = _BACKGROUND_GROUP,
Expand Down Expand Up @@ -551,7 +551,7 @@ def addPage(self, page, side=LEFT):
self.pages[page.name] = page
page._tab = TabButton(self._tabFrame,
image = page._icon,
text = page.name,
text = _(page.name),
compound = LEFT,
value = page.name,
variable = self.activePage,
Expand Down
6 changes: 5 additions & 1 deletion Sender.py
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ def _wcsSet(self, x, y, z):
if z is not None and abs(z)<10000.0: cmd += "Z"+str(z)
self.sendGrbl(cmd+"\n$#\n")
self.event_generate("<<Status>>",
data=_("Set workspace %s to X%s Y%s Z%s")%(WCS[p],str(x),str(y),str(z)))
data=(_("Set workspace %s to X%s Y%s Z%s")%(WCS[p],str(x),str(y),str(z))).encode("utf-8"))
self.event_generate("<<CanvasFocus>>")

#----------------------------------------------------------------------
Expand Down Expand Up @@ -620,6 +620,7 @@ def serialIO(self):
if isinstance(tosend, tuple):
# Count executed commands as well
self._gcount += 1
#print "gcount tuple=",self._gcount
# wait to empty the grbl buffer
if tosend[0] == WAIT:
wait = True
Expand Down Expand Up @@ -648,6 +649,7 @@ def serialIO(self):
else:
# Count executed commands as well
self._gcount += 1
#print "gcount str=",self._gcount
#print "+++ eval=",repr(tosend),type(tosend)
except:
self.log.put((True,sys.exc_info()[1]))
Expand Down Expand Up @@ -757,6 +759,7 @@ def serialIO(self):
uline = line.upper()
if uline.find("ERROR")==0 or uline.find("ALARM")==0:
self._gcount += 1
#print "gcount ERROR=",self._gcount
if cline: del cline[0]
if sline: CNC.vars["errline"] = sline.pop(0)
if not self._alarm: self._posUpdate = True
Expand All @@ -772,6 +775,7 @@ def serialIO(self):

elif line.find("ok")>=0:
self._gcount += 1
#print "gcount OK=",self._gcount
if cline: del cline[0]
if sline: del sline[0]

Expand Down
6 changes: 3 additions & 3 deletions TerminalPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#===============================================================================
class TerminalGroup(CNCRibbon.ButtonGroup):
def __init__(self, master, app):
CNCRibbon.ButtonGroup.__init__(self, master, "Terminal", app)
CNCRibbon.ButtonGroup.__init__(self, master, N_("Terminal"), app)

b = Ribbon.LabelButton(self.frame, self, "<<TerminalClear>>",
image=Utils.icons["clean32"],
Expand All @@ -37,7 +37,7 @@ def __init__(self, master, app):
#===============================================================================
class CommandsGroup(CNCRibbon.ButtonMenuGroup):
def __init__(self, master, app):
CNCRibbon.ButtonMenuGroup.__init__(self, master, "Commands", app,
CNCRibbon.ButtonMenuGroup.__init__(self, master, N_("Commands"), app,
[(_("Restore Settings"), "grbl_settings", app.grblRestoreSettings),
(_("Restore Workspace"), "grbl_params", app.grblRestoreWCS),
(_("Restore All"), "reset", app.grblRestoreAll),
Expand Down Expand Up @@ -137,7 +137,7 @@ def __init__(self, master, app):
#===============================================================================
class TerminalFrame(CNCRibbon.PageFrame):
def __init__(self, master, app):
CNCRibbon.PageFrame.__init__(self, master, "Terminal", app)
CNCRibbon.PageFrame.__init__(self, master, N_("Terminal"), app)
self.terminal = Text(self,
background="White",
width=20,
Expand Down
Loading

0 comments on commit 0f97de2

Please sign in to comment.