diff --git a/README.cleanup b/README.cleanup new file mode 100644 index 0000000..55a4a8a --- /dev/null +++ b/README.cleanup @@ -0,0 +1,18 @@ +Some cleanup commands : + +To add a space after each comma : +sed -e "s/\(\w\),\(\w\)/\1, \2/g" -i *.py printrun/*.py printrun/svg/*.py + +To add spaces around each = : +sed -e "s/\(\w\)=\(\w\)/\1 = \2/g" -i *.py printrun/*.py printrun/svg/*.py +sed -e "s/\(\w\)=\(\"\)/\1 = \2/g" -i *.py printrun/*.py printrun/svg/*.py +sed -e "s/\(\w\)=\((\)/\1 = \2/g" -i *.py printrun/*.py printrun/svg/*.py + +To add spaces around each == : +sed -e "s/\(\w\)==\(\w\)/\1 == \2/g" -i *.py printrun/*.py printrun/svg/*.py +sed -e "s/\(\w\)==\(\"\)/\1 == \2/g" -i *.py printrun/*.py printrun/svg/*.py +sed -e "s/\(\w\)==\((\)/\1 == \2/g" -i *.py printrun/*.py printrun/svg/*.py +sed -e "s/\()\)==\(\w\)/\1 == \2/g" -i *.py printrun/*.py printrun/svg/*.py +sed -e "s/\()\)==\((\)/\1 == \2/g" -i *.py printrun/*.py printrun/svg/*.py + +Obviously this is not a perfect solution, it WILL break the code. Juste check the diff and fix what's wrong before commiting. diff --git a/plater.py b/plater.py index aa3d82e..176d33c 100755 --- a/plater.py +++ b/plater.py @@ -46,7 +46,7 @@ def evalme(s): class stlwrap: - def __init__(self, obj, name=None): + def __init__(self, obj, name = None): self.obj = obj self.name = name if name is None: @@ -58,7 +58,7 @@ class stlwrap: class showstl(wx.Window): def __init__(self, parent, size, pos): - wx.Window.__init__(self, parent, size=size, pos=pos) + wx.Window.__init__(self, parent, size = size, pos = pos) #self.SetBackgroundColour((0, 0, 0)) #wx.FutureCall(200, self.paint) self.i = 0 @@ -141,7 +141,7 @@ class showstl(wx.Window): self.i += angle if not self.triggered: self.triggered = 1 - threading.Thread(target=self.cr).start() + threading.Thread(target = self.cr).start() def keypress(self, event): """gets keypress events and moves/rotates acive shape""" @@ -200,9 +200,9 @@ class showstl(wx.Window): def repaint(self, event): dc = wx.PaintDC(self) - self.paint(dc=dc) + self.paint(dc = dc) - def paint(self, coord1="x", coord2="y", dc=None): + def paint(self, coord1 = "x", coord2 = "y", dc = None): coords = {"x": 0, "y": 1, "z": 2} if dc is None: dc = wx.ClientDC(self) @@ -231,7 +231,7 @@ class showstl(wx.Window): bm = wx.BitmapFromImage(im) dcs.SelectObject(bm) bsz = bm.GetSize() - dc.Blit(scale * m.offsets[0] - bsz[0] / 2, 400 - (scale * m.offsets[1] + bsz[1] / 2), bsz[0], bsz[1], dcs, 0, 0, useMask=1) + dc.Blit(scale * m.offsets[0] - bsz[0] / 2, 400 - (scale * m.offsets[1] + bsz[1] / 2), bsz[0], bsz[1], dcs, 0, 0, useMask = 1) #for i in m.facets:#random.sample(m.facets, min(100000, len(m.facets))): # dc.DrawPolygon([wx.Point(offset[0]+scale*m.offsets[0]+scale*p[0], 400-(offset[1]+scale*m.offsets[1]+scale*p[1])) for p in i[1]]) #if(time.time()-t)>5: @@ -242,29 +242,29 @@ class showstl(wx.Window): class stlwin(wx.Frame): - def __init__(self, size=(800, 580), callback=None, parent=None): - wx.Frame.__init__(self, parent, title=_("Plate building tool"), size=size) + def __init__(self, size = (800, 580), callback = None, parent = None): + wx.Frame.__init__(self, parent, title = _("Plate building tool"), size = size) self.SetIcon(wx.Icon(pixmapfile("plater.ico"), wx.BITMAP_TYPE_ICO)) self.mainsizer = wx.BoxSizer(wx.HORIZONTAL) - self.panel = wx.Panel(self, -1, size=(150, 600), pos=(0, 0)) + self.panel = wx.Panel(self, -1, size = (150, 600), pos = (0, 0)) #self.panel.SetBackgroundColour((10, 10, 10)) - self.l = wx.ListBox(self.panel, size=(300, 180), pos=(0, 30)) - self.cl = wx.Button(self.panel, label=_("Clear"), pos=(0, 205)) - self.lb = wx.Button(self.panel, label=_("Load"), pos=(0, 0)) + self.l = wx.ListBox(self.panel, size = (300, 180), pos = (0, 30)) + self.cl = wx.Button(self.panel, label = _("Clear"), pos = (0, 205)) + self.lb = wx.Button(self.panel, label = _("Load"), pos = (0, 0)) if(callback is None): - self.eb = wx.Button(self.panel, label=_("Export"), pos=(100, 0)) + self.eb = wx.Button(self.panel, label = _("Export"), pos = (100, 0)) self.eb.Bind(wx.EVT_BUTTON, self.export) else: - self.eb = wx.Button(self.panel, label=_("Export"), pos=(200, 205)) + self.eb = wx.Button(self.panel, label = _("Export"), pos = (200, 205)) self.eb.Bind(wx.EVT_BUTTON, self.export) - self.edb = wx.Button(self.panel, label=_("Done"), pos=(100, 0)) + self.edb = wx.Button(self.panel, label = _("Done"), pos = (100, 0)) self.edb.Bind(wx.EVT_BUTTON, lambda e: self.done(e, callback)) - self.eb = wx.Button(self.panel, label=_("Cancel"), pos=(200, 0)) + self.eb = wx.Button(self.panel, label = _("Cancel"), pos = (200, 0)) self.eb.Bind(wx.EVT_BUTTON, lambda e: self.Destroy()) - self.sb = wx.Button(self.panel, label=_("Snap to Z = 0"), pos=(00, 255)) - self.cb = wx.Button(self.panel, label=_("Put at 100, 100"), pos=(0, 280)) - self.db = wx.Button(self.panel, label=_("Delete"), pos=(0, 305)) - self.ab = wx.Button(self.panel, label=_("Auto"), pos=(0, 330)) + self.sb = wx.Button(self.panel, label = _("Snap to Z = 0"), pos = (00, 255)) + self.cb = wx.Button(self.panel, label = _("Put at 100, 100"), pos = (0, 280)) + self.db = wx.Button(self.panel, label = _("Delete"), pos = (0, 305)) + self.ab = wx.Button(self.panel, label = _("Auto"), pos = (0, 330)) self.cl.Bind(wx.EVT_BUTTON, self.clear) self.lb.Bind(wx.EVT_BUTTON, self.right) self.sb.Bind(wx.EVT_BUTTON, self.snap) @@ -368,7 +368,7 @@ class stlwin(wx.Frame): self.Destroy() def export(self, event): - dlg = wx.FileDialog(self, _("Pick file to save to"), self.basedir, style=wx.FD_SAVE) + dlg = wx.FileDialog(self, _("Pick file to save to"), self.basedir, style = wx.FD_SAVE) dlg.SetWildcard(_("STL files (;*.stl;*.STL;)")) if(dlg.ShowModal() == wx.ID_OK): name = dlg.GetPath() @@ -393,7 +393,7 @@ class stlwin(wx.Frame): print _("wrote %s") % name def right(self, event): - dlg = wx.FileDialog(self, _("Pick file to load"), self.basedir, style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) + dlg = wx.FileDialog(self, _("Pick file to load"), self.basedir, style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) dlg.SetWildcard(_("STL files (;*.stl;*.STL;)|*.stl|OpenSCAD files (;*.scad;)|*.scad")) if(dlg.ShowModal() == wx.ID_OK): name = dlg.GetPath() @@ -443,7 +443,7 @@ class stlwin(wx.Frame): self.Refresh() #print time.time()-t - def load_stl_into_model(self, path, name, offset=[0, 0, 0], rotation=0, scale=[1.0, 1.0, 1.0]): + def load_stl_into_model(self, path, name, offset=[0, 0, 0], rotation = 0, scale=[1.0, 1.0, 1.0]): newname = os.path.split(name.lower())[1] c = 1 while newname in self.models: diff --git a/printcore.py b/printcore.py index 93413ec..d0671df 100755 --- a/printcore.py +++ b/printcore.py @@ -83,7 +83,7 @@ class printcore(): self.online = False self.printing = False - def connect(self,port=None,baud=None): + def connect(self, port = None, baud = None): """Set port and baudrate if given, then connect to printer """ if self.printer: @@ -96,7 +96,7 @@ class printcore(): disable_hup(self.port) self.printer = Serial(port = self.port, baudrate = self.baud, timeout = 0.25) self.stop_read_thread = False - self.read_thread = Thread(target=self._listen) + self.read_thread = Thread(target = self._listen) self.read_thread.start() def reset(self): @@ -183,7 +183,7 @@ class printcore(): self.clear = True def _checksum(self, command): - return reduce(lambda x,y:x^y, map(ord, command)) + return reduce(lambda x, y:x^y, map(ord, command)) def startprint(self, data, startindex = 0): """Start a print, data is an array of gcode commands. @@ -289,7 +289,7 @@ class printcore(): self.clear = True return if self.resendfrom < self.lineno and self.resendfrom > -1: - self._send(self.sentlines[self.resendfrom],self.resendfrom,False) + self._send(self.sentlines[self.resendfrom],self.resendfrom, False) self.resendfrom += 1 return self.resendfrom = -1 @@ -369,7 +369,7 @@ if __name__ == '__main__': try: if statusreport: - p.loud=False + p.loud = False sys.stdout.write("Progress: 00.0%") sys.stdout.flush() while p.printing: diff --git a/printrun/SkeinforgeQuickEditDialog.py b/printrun/SkeinforgeQuickEditDialog.py index 0135ffa..aaafa9e 100644 --- a/printrun/SkeinforgeQuickEditDialog.py +++ b/printrun/SkeinforgeQuickEditDialog.py @@ -35,7 +35,7 @@ class SkeinforgeQuickEditDialog(wx.Dialog): 'speed':['Main Feed Rate (mm/s):','Main Flow Rate (scaler):','Perimeter Feed Rate (mm/s):','Perimeter Flow Rate (scaler):','Travel Feed Rate (mm/s):'] } - self.scrollbarPanel = wx.ScrolledWindow(self, -1, style=wx.TAB_TRAVERSAL) + self.scrollbarPanel = wx.ScrolledWindow(self, -1, style = wx.TAB_TRAVERSAL) self.settingsSizer = self.getProfileSettings() self.scrollbarPanel.SetSizer(self.settingsSizer) @@ -67,7 +67,7 @@ class SkeinforgeQuickEditDialog(wx.Dialog): self.Layout() def getProfileSettings(self): - settingsSizer = wx.GridBagSizer(hgap=2, vgap=1) + settingsSizer = wx.GridBagSizer(hgap = 2, vgap = 1) settingsRow = 0 for craftName in sorted(self.moduleSettingsMap.keys()): @@ -86,28 +86,28 @@ class SkeinforgeQuickEditDialog(wx.Dialog): for setting in settings.getReadRepository(repo).preferences: if setting.name in self.moduleSettingsMap[craftName]: - settingSizer = wx.GridBagSizer(hgap=2, vgap=2) + settingSizer = wx.GridBagSizer(hgap = 2, vgap = 2) settingSizer.AddGrowableCol(0) settingRow = 0 settingLabel = wx.StaticText(self.scrollbarPanel, -1, setting.name) settingLabel.Wrap(400) - settingSizer.Add(settingLabel, pos=(settingRow, 0)) + settingSizer.Add(settingLabel, pos = (settingRow, 0)) if (isinstance(setting.value, bool)): checkbox = wx.CheckBox(self.scrollbarPanel) checkbox.SetName(craftName + '.' + setting.name) checkbox.SetValue(setting.value) - settingSizer.Add(checkbox, pos=(settingRow, 1)) - settingSizer.AddSpacer((25, -1), pos=(settingRow, 2)) + settingSizer.Add(checkbox, pos = (settingRow, 1)) + settingSizer.AddSpacer((25, -1), pos = (settingRow, 2)) else: - textCtrl = wx.TextCtrl(self.scrollbarPanel, value=str(setting.value), size=(50, -1)) + textCtrl = wx.TextCtrl(self.scrollbarPanel, value = str(setting.value), size = (50, -1)) textCtrl.SetName(craftName + '.' + setting.name) - settingSizer.Add(textCtrl, pos=(settingRow, 1)) + settingSizer.Add(textCtrl, pos = (settingRow, 1)) craftStaticBoxSizer.Add(settingSizer, 1, wx.EXPAND, 0) settingRow += 1 col = settingsRow % 2 - settingsSizer.Add(craftStaticBoxSizer, pos=(settingsRow - col, col)) + settingsSizer.Add(craftStaticBoxSizer, pos = (settingsRow - col, col)) settingsRow += 1 return settingsSizer diff --git a/printrun/bmpDisplay.py b/printrun/bmpDisplay.py index 25415aa..99a4f5b 100644 --- a/printrun/bmpDisplay.py +++ b/printrun/bmpDisplay.py @@ -11,7 +11,7 @@ import shutil class MyFrame(wx.Frame): def __init__(self, parent, mysize): - wx.Frame.__init__(self, parent, wx.ID_ANY, size=mysize) + wx.Frame.__init__(self, parent, wx.ID_ANY, size = mysize) self.SetBackgroundColour('black') # milliseconds per frame @@ -49,7 +49,7 @@ class MyFrame(wx.Frame): if self.mytmpdir: shutil.rmtree(self.mytmpdir) - def onPaint(self, event=None): + def onPaint(self, event = None): # this is the wxPython drawing surface/canvas dc = wx.PaintDC(self) while self.loops: @@ -59,7 +59,7 @@ class MyFrame(wx.Frame): w, h = bmp.GetSize() info = "%s %dx%d" % (self.name_list[ix], w, h) self.SetTitle(info) - #self.SetSize((w,h)) + #self.SetSize((w, h)) # draw the image dc.DrawBitmap(bmp, 0, 0, True) wx.MilliSleep(self.delay) diff --git a/printrun/bufferedcanvas.py b/printrun/bufferedcanvas.py index af8602f..283962a 100644 --- a/printrun/bufferedcanvas.py +++ b/printrun/bufferedcanvas.py @@ -66,10 +66,10 @@ class BufferedCanvas(wx.Panel): def __init__(self, parent, ID=-1, - pos=wx.DefaultPosition, - size=wx.DefaultSize, - style=wx.NO_FULL_REPAINT_ON_RESIZE|wx.WANTS_CHARS): - wx.Panel.__init__(self,parent,ID,pos,size,style) + pos = wx.DefaultPosition, + size = wx.DefaultSize, + style = wx.NO_FULL_REPAINT_ON_RESIZE|wx.WANTS_CHARS): + wx.Panel.__init__(self, parent, ID, pos, size, style) # Bind events self.Bind(wx.EVT_PAINT, self.onPaint) @@ -83,7 +83,7 @@ class BufferedCanvas(wx.Panel): ## General methods ## - def draw(self,dc): + def draw(self, dc): """ Stub: called when the canvas needs to be re-drawn. """ @@ -96,7 +96,7 @@ class BufferedCanvas(wx.Panel): self.Refresh() def getWidthHeight(self): - width,height = self.GetClientSizeTuple() + width, height = self.GetClientSizeTuple() if width == 0: width = 1 if height == 0: diff --git a/printrun/calibrateextruder.py b/printrun/calibrateextruder.py index 71025b3..3692543 100644 --- a/printrun/calibrateextruder.py +++ b/printrun/calibrateextruder.py @@ -2,36 +2,36 @@ #Interactive RepRap e axis calibration program #(C) Nathan Zadoks 2011 #Licensed under CC-BY-SA or GPLv2 and higher - Pick your poison. -s=300 #Extrusion speed (mm/min) -n=100 #Default length to extrude +s = 300 #Extrusion speed (mm/min) +n = 100 #Default length to extrude m= 0 #User-entered measured extrusion length -k=300 #Default amount of steps per mm +k = 300 #Default amount of steps per mm port='/dev/ttyUSB0' #Default serial port to connect to printer -temp=210 #Default extrusion temperature +temp = 210 #Default extrusion temperature -tempmax=250 #Maximum extrusion temperature +tempmax = 250 #Maximum extrusion temperature -t=int(n*60)/s #Time to wait for extrusion +t = int(n*60)/s #Time to wait for extrusion try: from printdummy import printcore except ImportError: from printcore import printcore -import time,getopt,sys,os +import time, getopt, sys, os def float_input(prompt=''): import sys - f=None - while f==None: - s=raw_input(prompt) + f = None + while f == None: + s = raw_input(prompt) try: - f=float(s) + f = float(s) except ValueError: sys.stderr.write("Not a valid floating-point number.\n") sys.stderr.flush() return f -def wait(t,m=''): - import time,sys +def wait(t, m=''): + import time, sys sys.stdout.write(m+'['+(' '*t)+']\r'+m+'[') sys.stdout.flush() for i in range(t): @@ -45,19 +45,19 @@ def w(s): sys.stdout.flush() -def heatup(p,temp,s=0): - curtemp=gettemp(p) +def heatup(p, temp, s = 0): + curtemp = gettemp(p) p.send_now('M109 S%03d'%temp) - p.temp=0 + p.temp = 0 if not s: w("Heating extruder up..") - f=False + f = False while curtemp<=(temp-1): p.send_now('M105') time.sleep(0.5) if not f: time.sleep(1.5) - f=True - curtemp=gettemp(p) + f = True + curtemp = gettemp(p) if curtemp: w(u"\rHeating extruder up.. %3d \xb0C"%curtemp) if s: print else: print "\nReady." @@ -67,47 +67,47 @@ def gettemp(p): except: setattr(p,'logl',0) try: p.temp except: setattr(p,'temp',0) - for n in range(p.logl,len(p.log)): - line=p.log[n] + for n in range(p.logl, len(p.log)): + line = p.log[n] if 'T:' in line: try: setattr(p,'temp',int(line.split('T:')[1].split()[0])) except: print line - p.logl=len(p.log) + p.logl = len(p.log) return p.temp if not os.path.exists(port): - port=0 + port = 0 #Parse options -help=u""" +help = u""" %s [ -l DISTANCE ] [ -s STEPS ] [ -t TEMP ] [ -p PORT ] -l --length Length of filament to extrude for each calibration step (default: %d mm) -s --steps Initial amount of steps to use (default: %d steps) -t --temp Extrusion temperature in degrees Celsius (default: %d \xb0C, max %d \xb0C) -p --port Serial port the printer is connected to (default: %s) -h --help This cruft. -"""[1:-1].encode('utf-8')%(sys.argv[0],n,k,temp,tempmax,port if port else 'auto') +"""[1:-1].encode('utf-8')%(sys.argv[0],n, k,temp, tempmax, port if port else 'auto') try: - opts,args=getopt.getopt(sys.argv[1:],"hl:s:t:p:",["help","length=","steps=","temp=","port="]) -except getopt.GetoptError,err: + opts, args = getopt.getopt(sys.argv[1:],"hl:s:t:p:",["help","length = ","steps = ","temp = ","port = "]) +except getopt.GetoptError, err: print str(err) print help sys.exit(2) -for o,a in opts: +for o, a in opts: if o in ('-h','--help'): print help sys.exit() elif o in ('-l','--length'): - n=float(a) + n = float(a) elif o in ('-s','--steps'): - k=int(a) + k = int(a) elif o in ('-t','--temp'): - temp=int(a) + temp = int(a) if temp>=tempmax: print (u'%d \xb0C? Are you insane?'.encode('utf-8')%temp)+(" That's over nine thousand!" if temp>9000 else '') sys.exit(255) elif o in ('-p','--port'): - port=a + port = a #Show initial parameters print "Initial parameters" @@ -116,12 +116,12 @@ print "Length extruded: %3d mm"%n print print "Serial port: %s"%(port if port else 'auto') -p=None +p = None try: #Connect to printer w("Connecting to printer..") try: - p=printcore(port,115200) + p = printcore(port, 115200) except: print 'Error.' raise @@ -130,18 +130,18 @@ try: w('.') print " connected." - heatup(p,temp) + heatup(p, temp) #Calibration loop while n!=m: - heatup(p,temp,True) + heatup(p, temp, True) p.send_now("G92 E0") #Reset e axis - p.send_now("G1 E%d F%d"%(n,s)) #Extrude length of filament + p.send_now("G1 E%d F%d"%(n, s)) #Extrude length of filament wait(t,'Extruding.. ') - m=float_input("How many millimeters of filament were extruded? ") - if m==0: continue + m = float_input("How many millimeters of filament were extruded? ") + if m == 0: continue if n!=m: - k=(n/m)*k + k = (n/m)*k p.send_now("M92 E%d"%int(round(k))) #Set new step count print "Steps per mm: %3d steps"%k #Tell user print 'Calibration completed.' #Yay! diff --git a/printrun/gcview.py b/printrun/gcview.py index 912bb87..f97103f 100755 --- a/printrun/gcview.py +++ b/printrun/gcview.py @@ -19,8 +19,8 @@ import threading class GLPanel(wx.Panel): '''A simple class for using OpenGL with wxPython.''' - def __init__(self, parent, id, pos=wx.DefaultPosition, - size=wx.DefaultSize, style=0): + def __init__(self, parent, id, pos = wx.DefaultPosition, + size = wx.DefaultSize, style = 0): # Forcing a no full repaint to stop flickering style = style | wx.NO_FULL_REPAINT_ON_RESIZE #call super function @@ -33,7 +33,7 @@ class GLPanel(wx.Panel): glcanvas.WX_GL_DEPTH_SIZE, 24) # 24 bit # Create the canvas self.sizer = wx.BoxSizer(wx.HORIZONTAL) - self.canvas = glcanvas.GLCanvas(self, attribList=attribList) + self.canvas = glcanvas.GLCanvas(self, attribList = attribList) self.sizer.Add(self.canvas, 1, wx.EXPAND) self.SetSizer(self.sizer) #self.sizer.Fit(self) @@ -200,7 +200,7 @@ def _dist(dist): class gcpoint(object): """gcode point stub for first line""" - def __init__(self, x=0,y=0,z=0,e=0): + def __init__(self, x = 0, y = 0, z = 0, e = 0): self.x = x self.y = y self.z = z @@ -210,10 +210,10 @@ class gcpoint(object): class gcline(object): """gcode move line - Once initialised,it knows its position, length and extrusion ratio + Once initialised, it knows its position, length and extrusion ratio Returns lines into gcview batch() """ - def __init__(self, x=None, y=None, z=None, e=None, f=None, prev_gcline=None, orgline = False): + def __init__(self, x = None, y = None, z = None, e = None, f = None, prev_gcline = None, orgline = False): if prev_gcline is None: self.prev_gcline = gcpoint() else: @@ -255,7 +255,7 @@ class gcline(object): self.orgline, ) - def calc_delta(self, prev_gcline=None): + def calc_delta(self, prev_gcline = None): if prev_gcline is None: prev_gcline = self.prev_gcline if self.prev_gcline is not None: @@ -290,7 +290,7 @@ class gcline(object): ] def glcolor(self, upper_limit = None, lower_limit = 0, max_feedrate = 0): if self.extrusion_ratio == 0: - return [255,255,255,0,0,0] + return [255, 255, 255, 0,0, 0] else: blue_color = 0 green_color = 0 @@ -312,7 +312,7 @@ class gcline(object): blue_color = 255 if blue_color < 0: blue_color = 0 - return[255,green_color,blue_color,128,green_color,blue_color/4] + return[255, green_color, blue_color, 128, green_color, blue_color/4] def float_from_line(axe, line): @@ -340,7 +340,7 @@ class gcview(object): """gcode visualiser Holds opengl objects for all layers """ - def __init__(self, lines, batch, w=0.5, h=0.5): + def __init__(self, lines, batch, w = 0.5, h = 0.5): if len(lines) == 0: return print "Loading %s lines" % (len(lines)) @@ -430,7 +430,7 @@ class gcview(object): else: self.lastf = cur[4] - r = gcline(x=cur[0], y=cur[1], z=cur[2],e=cur[3], f=cur[4], prev_gcline=self.prev, orgline=orgline) + r = gcline(x = cur[0], y = cur[1], z = cur[2],e = cur[3], f = cur[4], prev_gcline = self.prev, orgline = orgline) self.prev = r return r return None @@ -524,7 +524,7 @@ def mulquat(q1, rq): class TestGlPanel(GLPanel): - def __init__(self, parent, size, id=wx.ID_ANY): + def __init__(self, parent, size, id = wx.ID_ANY): super(TestGlPanel, self).__init__(parent, id, wx.DefaultPosition, size, 0) self.batches = [] self.rot = 0 @@ -553,7 +553,7 @@ class TestGlPanel(GLPanel): def forceresize(self): self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] + 1)) self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] - 1)) - threading.Thread(target=self.update).start() + threading.Thread(target = self.update).start() self.initialized = 0 def move_shape(self, delta): @@ -605,7 +605,7 @@ class TestGlPanel(GLPanel): p1y = -(float(p1[1]) - sz[1] / 2) / (sz[1] / 2) p2x = (float(p2[0]) - sz[0] / 2) / (sz[0] / 2) p2y = -(float(p2[1]) - sz[1] / 2) / (sz[1] / 2) - #print p1x,p1y,p2x,p2y + #print p1x, p1y, p2x, p2y quat = trackball(p1x, p1y, p2x, p2y, -self.transv[2] / 250.0) if self.rot: self.basequat = mulquat(self.basequat, quat) @@ -768,7 +768,7 @@ class TestGlPanel(GLPanel): def drawmodel(self, m, n): batch = pyglet.graphics.Batch() - stl = stlview(m.facets, batch=batch) + stl = stlview(m.facets, batch = batch) m.batch = batch m.animoffset = 300 #print m @@ -907,8 +907,8 @@ class TestGlPanel(GLPanel): class GCFrame(wx.Frame): '''A simple class for using OpenGL with wxPython.''' - def __init__(self, parent, ID, title, pos=wx.DefaultPosition, - size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE): + def __init__(self, parent, ID, title, pos = wx.DefaultPosition, + size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE): super(GCFrame, self).__init__(parent, ID, title, pos, (size[0] + 150, size[1]), style) class d: @@ -921,7 +921,7 @@ class GCFrame(wx.Frame): m.curlayer = -1 m.scale = [1.0, 1.0, 1.0] m.batch = pyglet.graphics.Batch() - m.gc = gcview([], batch=m.batch) + m.gc = gcview([], batch = m.batch) self.models = {"GCODE": m} self.l = d() self.modelindex = 0 @@ -929,14 +929,14 @@ class GCFrame(wx.Frame): def addfile(self, gcode=[]): self.models["GCODE"].gc.delete() - self.models["GCODE"].gc = gcview(gcode, batch=self.models["GCODE"].batch) + self.models["GCODE"].gc = gcview(gcode, batch = self.models["GCODE"].batch) self.setlayerindex(None) def clear(self): self.models["GCODE"].gc.delete() - self.models["GCODE"].gc = gcview([], batch=self.models["GCODE"].batch) + self.models["GCODE"].gc = gcview([], batch = self.models["GCODE"].batch) - def Show(self, arg=True): + def Show(self, arg = True): wx.Frame.Show(self, arg) self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] + 1)) self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] - 1)) @@ -975,8 +975,8 @@ class GCFrame(wx.Frame): def main(): - app = wx.App(redirect=False) - frame = GCFrame(None, wx.ID_ANY, 'Gcode view, shift to move view, mousewheel to set layer', size=(400, 400)) + app = wx.App(redirect = False) + frame = GCFrame(None, wx.ID_ANY, 'Gcode view, shift to move view, mousewheel to set layer', size = (400, 400)) import sys for filename in sys.argv: if ".gcode" in filename: @@ -985,8 +985,8 @@ def main(): #TODO: add stl here pass - #frame = wx.Frame(None, -1, "GL Window", size=(400, 400)) - #panel = TestGlPanel(frame, size=(300,300)) + #frame = wx.Frame(None, -1, "GL Window", size = (400, 400)) + #panel = TestGlPanel(frame, size = (300, 300)) frame.Show(True) app.MainLoop() app.Destroy() diff --git a/printrun/graph.py b/printrun/graph.py index 4e6c885..4b1c105 100644 --- a/printrun/graph.py +++ b/printrun/graph.py @@ -22,8 +22,8 @@ from bufferedcanvas import * class Graph(BufferedCanvas): '''A class to show a Graph with Pronterface.''' - def __init__(self, parent, id, pos=wx.DefaultPosition, - size=wx.DefaultSize, style=0): + def __init__(self, parent, id, pos = wx.DefaultPosition, + size = wx.DefaultSize, style = 0): # Forcing a no full repaint to stop flickering style = style | wx.NO_FULL_REPAINT_ON_RESIZE #call super function @@ -53,7 +53,7 @@ class Graph(BufferedCanvas): #self.sizer = wx.BoxSizer(wx.HORIZONTAL) - #self.sizer.Add(wx.Button(self, -1, "Button1", (0,0))) + #self.sizer.Add(wx.Button(self, -1, "Button1", (0, 0))) #self.SetSizer(self.sizer) @@ -78,23 +78,23 @@ class Graph(BufferedCanvas): def drawgrid(self, dc, gc): - #cold,medium,hot = wx.Colour(0,167,223),wx.Colour(239,233,119),wx.Colour(210,50.100) - #col1 = wx.Colour(255,0,0, 255) - #col2 = wx.Colour(255,255,255, 128) + #cold, medium, hot = wx.Colour(0, 167, 223),wx.Colour(239, 233, 119),wx.Colour(210, 50.100) + #col1 = wx.Colour(255, 0,0, 255) + #col2 = wx.Colour(255, 255, 255, 128) #b = gc.CreateLinearGradientBrush(0, 0, w, h, col1, col2) - gc.SetPen(wx.Pen(wx.Colour(255,0,0,0), 4)) - #gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(245,245,255,252)))) + gc.SetPen(wx.Pen(wx.Colour(255, 0,0, 0), 4)) + #gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(245, 245, 255, 252)))) #gc.SetBrush(b) gc.DrawRectangle(0, 0, self.width, self.height) - #gc.SetBrush(wx.Brush(wx.Colour(245,245,255,52))) + #gc.SetBrush(wx.Brush(wx.Colour(245, 245, 255, 52))) - #gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(0,0,0,255)))) - #gc.SetPen(wx.Pen(wx.Colour(255,0,0,0), 4)) + #gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(0, 0,0, 255)))) + #gc.SetPen(wx.Pen(wx.Colour(255, 0,0, 0), 4)) - #gc.DrawLines(wx.Point(0,0), wx.Point(50,10)) + #gc.DrawLines(wx.Point(0, 0), wx.Point(50, 10)) #path = gc.CreatePath() #path.MoveToPoint(0.0, 0.0) @@ -107,34 +107,34 @@ class Graph(BufferedCanvas): font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD) - gc.SetFont(font, wx.Colour(23,44,44)) + gc.SetFont(font, wx.Colour(23, 44, 44)) - dc.SetPen(wx.Pen(wx.Colour(225,225,225), 1)) + dc.SetPen(wx.Pen(wx.Colour(225, 225, 225), 1)) for x in range(self.xbars): dc.DrawLine(x*(float(self.width)/self.xbars), 0, x*(float(self.width)/self.xbars), self.height) - dc.SetPen(wx.Pen(wx.Colour(225,225,225), 1)) + dc.SetPen(wx.Pen(wx.Colour(225, 225, 225), 1)) for y in range(self.ybars): y_pos = y*(float(self.height)/self.ybars) - dc.DrawLine(0,y_pos, self.width,y_pos) + dc.DrawLine(0, y_pos, self.width, y_pos) gc.DrawText(unicode(int(self.maxyvalue - (y * (self.maxyvalue/self.ybars)))), 1, y_pos - (font.GetPointSize() / 2)) if self.timer.IsRunning() == False: font = wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD) - gc.SetFont(font, wx.Colour(3,4,4)) + gc.SetFont(font, wx.Colour(3, 4,4)) gc.DrawText("Graph offline", self.width/2 - (font.GetPointSize() * 3), self.height/2 - (font.GetPointSize() * 1)) - #dc.DrawCircle(50,50, 1) + #dc.DrawCircle(50, 50, 1) - #gc.SetPen(wx.Pen(wx.Colour(255,0,0,0), 1)) - #gc.DrawLines([[20,30], [10,53]]) - #dc.SetPen(wx.Pen(wx.Colour(255,0,0,0), 1)) + #gc.SetPen(wx.Pen(wx.Colour(255, 0,0, 0), 1)) + #gc.DrawLines([[20, 30], [10, 53]]) + #dc.SetPen(wx.Pen(wx.Colour(255, 0,0, 0), 1)) def drawtemperature(self, dc, gc, temperature_list, text, text_xoffset, r, g, b, a): if self.timer.IsRunning() == False: - dc.SetPen(wx.Pen(wx.Colour(128,128,128,128), 1)) + dc.SetPen(wx.Pen(wx.Colour(128, 128, 128, 128), 1)) else: - dc.SetPen(wx.Pen(wx.Colour(r,g,b,a), 1)) + dc.SetPen(wx.Pen(wx.Colour(r, g,b, a), 1)) x_add = float(self.width)/self.xsteps x_pos = float(0.0) @@ -143,7 +143,7 @@ class Graph(BufferedCanvas): for temperature in (temperature_list): y_pos = int((float(self.height-self.y_offset)/self.maxyvalue)*temperature) + self.y_offset if (x_pos > 0.0): # One need 2 points to draw a line. - dc.DrawLine(lastxvalue,self.height-self._lastyvalue, x_pos, self.height-y_pos) + dc.DrawLine(lastxvalue, self.height-self._lastyvalue, x_pos, self.height-y_pos) lastxvalue = x_pos x_pos = float(x_pos) + x_add @@ -153,9 +153,9 @@ class Graph(BufferedCanvas): font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD) #font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL) if self.timer.IsRunning() == False: - gc.SetFont(font, wx.Colour(128,128,128)) + gc.SetFont(font, wx.Colour(128, 128, 128)) else: - gc.SetFont(font, wx.Colour(r,g,b)) + gc.SetFont(font, wx.Colour(r, g,b)) #gc.DrawText(text, self.width - (font.GetPointSize() * ((len(text) * text_xoffset + 1))), self.height - self._lastyvalue - (font.GetPointSize() / 2)) gc.DrawText(text, x_pos - x_add - (font.GetPointSize() * ((len(text) * text_xoffset + 1))), self.height - self._lastyvalue - (font.GetPointSize() / 2)) @@ -163,24 +163,24 @@ class Graph(BufferedCanvas): def drawbedtemp(self, dc, gc): - self.drawtemperature(dc, gc, self.bedtemps, "Bed",2, 255,0,0, 128) + self.drawtemperature(dc, gc, self.bedtemps, "Bed",2, 255, 0,0, 128) def drawbedtargettemp(self, dc, gc): - self.drawtemperature(dc, gc, self.bedtargettemps, "Bed Target",2, 255,120,0, 128) + self.drawtemperature(dc, gc, self.bedtargettemps, "Bed Target",2, 255, 120, 0, 128) def drawextruder0temp(self, dc, gc): - self.drawtemperature(dc, gc, self.extruder0temps, "Ex0",1, 0,155,255, 128) + self.drawtemperature(dc, gc, self.extruder0temps, "Ex0",1, 0, 155, 255, 128) def drawextruder0targettemp(self, dc, gc): - self.drawtemperature(dc, gc, self.extruder0targettemps, "Ex0 Target",2, 0,5,255, 128) + self.drawtemperature(dc, gc, self.extruder0targettemps, "Ex0 Target",2, 0, 5,255, 128) def drawextruder1temp(self, dc, gc): - self.drawtemperature(dc, gc, self.extruder1temps, "Ex1",3, 55,55,0, 128) + self.drawtemperature(dc, gc, self.extruder1temps, "Ex1",3, 55, 55, 0, 128) def drawextruder1targettemp(self, dc, gc): - self.drawtemperature(dc, gc, self.extruder1targettemps, "Ex1 Target",2, 55,55,0, 128) + self.drawtemperature(dc, gc, self.extruder1targettemps, "Ex1 Target",2, 55, 55, 0, 128) def SetBedTemperature(self, value): diff --git a/printrun/gviz.py b/printrun/gviz.py index 3310a72..e6933d7 100755 --- a/printrun/gviz.py +++ b/printrun/gviz.py @@ -12,45 +12,45 @@ # # You should have received a copy of the GNU General Public License # along with Printrun. If not, see . -import wx,time +import wx, time from printrun_utils import imagefile ID_ABOUT = 101 ID_EXIT = 110 class window(wx.Frame): - def __init__(self,f,size=(600,600),build_dimensions=[200,200,100,0,0,0],grid=(10,50),extrusion_width=0.5): - wx.Frame.__init__(self,None,title="Gcode view, shift to move view, mousewheel to set layer",size=(size[0],size[1])) - self.p=gviz(self,size=size,build_dimensions=build_dimensions,grid=grid,extrusion_width=extrusion_width) + def __init__(self, f,size = (600, 600),build_dimensions=[200, 200, 100, 0,0, 0],grid = (10, 50),extrusion_width = 0.5): + wx.Frame.__init__(self, None, title = "Gcode view, shift to move view, mousewheel to set layer",size = (size[0],size[1])) + self.p = gviz(self, size = size, build_dimensions = build_dimensions, grid = grid, extrusion_width = extrusion_width) vbox = wx.BoxSizer(wx.VERTICAL) - toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL | wx.NO_BORDER) + toolbar = wx.ToolBar(self, -1, style = wx.TB_HORIZONTAL | wx.NO_BORDER) toolbar.AddSimpleTool(1, wx.Image(imagefile('zoom_in.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Zoom In [+]', '') toolbar.AddSimpleTool(2, wx.Image(imagefile('zoom_out.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Zoom Out [-]', '') toolbar.AddSeparator() toolbar.AddSimpleTool(3, wx.Image(imagefile('arrow_up.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Move Up a Layer [U]', '') toolbar.AddSimpleTool(4, wx.Image(imagefile('arrow_down.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Move Down a Layer [D]', '') - toolbar.AddSimpleTool(5, wx.EmptyBitmap(16,16), 'Reset view', '') + toolbar.AddSimpleTool(5, wx.EmptyBitmap(16, 16), 'Reset view', '') toolbar.AddSeparator() #toolbar.AddSimpleTool(5, wx.Image('./images/inject.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Insert Code at start of this layer', '') toolbar.Realize() - vbox.Add(toolbar, 0, border=5) + vbox.Add(toolbar, 0, border = 5) self.SetSizer(vbox) - self.Bind(wx.EVT_TOOL, lambda x:self.p.zoom(200,200,1.2), id=1) - self.Bind(wx.EVT_TOOL, lambda x:self.p.zoom(200,200,1/1.2), id=2) - self.Bind(wx.EVT_TOOL, lambda x:self.p.layerup(), id=3) - self.Bind(wx.EVT_TOOL, lambda x:self.p.layerdown(), id=4) - self.Bind(wx.EVT_TOOL, self.resetview, id=5) - #self.Bind(wx.EVT_TOOL, lambda x:self.p.inject(), id=5) + self.Bind(wx.EVT_TOOL, lambda x:self.p.zoom(200, 200, 1.2), id = 1) + self.Bind(wx.EVT_TOOL, lambda x:self.p.zoom(200, 200, 1/1.2), id = 2) + self.Bind(wx.EVT_TOOL, lambda x:self.p.layerup(), id = 3) + self.Bind(wx.EVT_TOOL, lambda x:self.p.layerdown(), id = 4) + self.Bind(wx.EVT_TOOL, self.resetview, id = 5) + #self.Bind(wx.EVT_TOOL, lambda x:self.p.inject(), id = 5) self.CreateStatusBar(1); self.SetStatusText("Layer number and Z position show here when you scroll"); - #self.bu=wx.Button(self.p,-1,"U",pos=(0,100),size=(40,140)) - #self.bd=wx.Button(self.p,-1,"D",pos=(0,140),size=(40,140)) - #self.bi=wx.Button(self.p,-1,"+",pos=(40,100),size=(40,140)) - #self.bo=wx.Button(self.p,-1,"-",pos=(40,140),size=(40,140)) - #self.bs=wx.Button(self.p, -1, "Inject", pos=(85, 103), size=(50, 20)) + #self.bu = wx.Button(self.p,-1,"U",pos = (0, 100),size = (40, 140)) + #self.bd = wx.Button(self.p,-1,"D",pos = (0, 140),size = (40, 140)) + #self.bi = wx.Button(self.p,-1,"+",pos = (40, 100),size = (40, 140)) + #self.bo = wx.Button(self.p,-1,"-",pos = (40, 140),size = (40, 140)) + #self.bs = wx.Button(self.p, -1, "Inject", pos = (85, 103), size = (50, 20)) #self.bu.SetToolTip(wx.ToolTip("Move up one layer")) #self.bd.SetToolTip(wx.ToolTip("Move down one layer")) @@ -58,41 +58,41 @@ class window(wx.Frame): #self.bo.SetToolTip(wx.ToolTip("Zoom view out")) #self.bs.SetToolTip(wx.ToolTip("Insert Code at start of this layer")) - #self.bu.Bind(wx.EVT_BUTTON,lambda x:self.p.layerup()) - #self.bd.Bind(wx.EVT_BUTTON,lambda x:self.p.layerdown()) - #self.bi.Bind(wx.EVT_BUTTON,lambda x:self.p.zoom(200,200,1.2)) - #self.bo.Bind(wx.EVT_BUTTON,lambda x:self.p.zoom(200,200,1/1.2)) - #self.bs.Bind(wx.EVT_BUTTON,lambda x:self.p.inject()) + #self.bu.Bind(wx.EVT_BUTTON, lambda x:self.p.layerup()) + #self.bd.Bind(wx.EVT_BUTTON, lambda x:self.p.layerdown()) + #self.bi.Bind(wx.EVT_BUTTON, lambda x:self.p.zoom(200, 200, 1.2)) + #self.bo.Bind(wx.EVT_BUTTON, lambda x:self.p.zoom(200, 200, 1/1.2)) + #self.bs.Bind(wx.EVT_BUTTON, lambda x:self.p.inject()) - s=time.time() + s = time.time() #print time.time()-s - self.initpos=[0,0] - self.p.Bind(wx.EVT_KEY_DOWN,self.key) - #self.bu.Bind(wx.EVT_KEY_DOWN,self.key) - #self.bd.Bind(wx.EVT_KEY_DOWN,self.key) - #self.bi.Bind(wx.EVT_KEY_DOWN,self.key) - #self.bo.Bind(wx.EVT_KEY_DOWN,self.key) - self.Bind(wx.EVT_KEY_DOWN,self.key) - self.p.Bind(wx.EVT_MOUSEWHEEL,self.zoom) - self.Bind(wx.EVT_MOUSEWHEEL,self.zoom) - self.p.Bind(wx.EVT_MOUSE_EVENTS,self.mouse) - self.Bind(wx.EVT_MOUSE_EVENTS,self.mouse) + self.initpos=[0, 0] + self.p.Bind(wx.EVT_KEY_DOWN, self.key) + #self.bu.Bind(wx.EVT_KEY_DOWN, self.key) + #self.bd.Bind(wx.EVT_KEY_DOWN, self.key) + #self.bi.Bind(wx.EVT_KEY_DOWN, self.key) + #self.bo.Bind(wx.EVT_KEY_DOWN, self.key) + self.Bind(wx.EVT_KEY_DOWN, self.key) + self.p.Bind(wx.EVT_MOUSEWHEEL, self.zoom) + self.Bind(wx.EVT_MOUSEWHEEL, self.zoom) + self.p.Bind(wx.EVT_MOUSE_EVENTS, self.mouse) + self.Bind(wx.EVT_MOUSE_EVENTS, self.mouse) - def resetview(self,event): - self.p.translate=[0.0,0.0] - self.p.scale=self.p.basescale - self.p.zoom(0,0,1.0) + def resetview(self, event): + self.p.translate=[0.0, 0.0] + self.p.scale = self.p.basescale + self.p.zoom(0, 0,1.0) - def mouse(self,event): + def mouse(self, event): if event.ButtonUp(wx.MOUSE_BTN_LEFT): if(self.initpos is not None): - self.initpos=None + self.initpos = None elif event.Dragging(): - e=event.GetPositionTuple() + e = event.GetPositionTuple() if self.initpos is None or not hasattr(self,"basetrans"): - self.initpos=e - self.basetrans=self.p.translate - #print self.p.translate,e,self.initpos + self.initpos = e + self.basetrans = self.p.translate + #print self.p.translate, e,self.initpos self.p.translate = [ self.basetrans[0]+(e[0]-self.initpos[0]), self.basetrans[1]+(e[1]-self.initpos[1]) ] self.p.repaint() @@ -107,31 +107,31 @@ class window(wx.Frame): kdo=[68, 317] # Down Keys kzi=[388, 316, 61] # Zoom In Keys kzo=[390, 314, 45] # Zoom Out Keys - x=event.GetKeyCode() + x = event.GetKeyCode() #print "Key event - "+str(x) #if event.ShiftDown(): - cx,cy=self.p.translate - # if x==wx.WXK_UP: - # self.p.zoom(cx,cy,1.2) - # if x==wx.WXK_DOWN: - # self.p.zoom(cx,cy,1/1.2) + cx, cy = self.p.translate + # if x == wx.WXK_UP: + # self.p.zoom(cx, cy, 1.2) + # if x == wx.WXK_DOWN: + # self.p.zoom(cx, cy, 1/1.2) #else: - # if x==wx.WXK_UP: + # if x == wx.WXK_UP: # self.p.layerup() - # if x==wx.WXK_DOWN: + # if x == wx.WXK_DOWN: # self.p.layerdown() if x in kup: self.p.layerup() if x in kdo: self.p.layerdown() if x in kzi: - self.p.zoom(cx,cy,1.2) + self.p.zoom(cx, cy, 1.2) if x in kzo: self.p.zoom(cx, cy, 1/1.2) #print p.lines.keys() def zoom(self, event): - z=event.GetWheelRotation() + z = event.GetWheelRotation() if event.ShiftDown(): if z > 0: self.p.layerdown() elif z < 0: self.p.layerup() @@ -140,38 +140,38 @@ class window(wx.Frame): elif z < 0: self.p.zoom(event.GetX(),event.GetY(),1/1.2) class gviz(wx.Panel): - def __init__(self,parent,size=(200,200),build_dimensions=[200,200,100,0,0,0],grid=(10,50),extrusion_width=0.5): - wx.Panel.__init__(self,parent,-1,size=(size[0],size[1])) - self.parent=parent - self.size=size - self.build_dimensions=build_dimensions - self.grid=grid - self.lastpos=[0,0,0,0,0,0,0] - self.hilightpos=self.lastpos[:] - self.Bind(wx.EVT_PAINT,self.paint) - self.Bind(wx.EVT_SIZE,self.resize) + def __init__(self, parent, size = (200, 200),build_dimensions=[200, 200, 100, 0,0, 0],grid = (10, 50),extrusion_width = 0.5): + wx.Panel.__init__(self, parent,-1, size = (size[0],size[1])) + self.parent = parent + self.size = size + self.build_dimensions = build_dimensions + self.grid = grid + self.lastpos=[0, 0,0, 0,0, 0,0] + self.hilightpos = self.lastpos[:] + self.Bind(wx.EVT_PAINT, self.paint) + self.Bind(wx.EVT_SIZE, self.resize) self.lines={} self.pens={} self.arcs={} self.arcpens={} self.layers=[] - self.layerindex=0 - self.filament_width=extrusion_width # set it to 0 to disable scaling lines with zoom + self.layerindex = 0 + self.filament_width = extrusion_width # set it to 0 to disable scaling lines with zoom self.basescale=[min(float(size[0])/build_dimensions[0],float(size[1])/build_dimensions[1])]*2 - self.scale=self.basescale - penwidth = max(1.0,self.filament_width*((self.scale[0]+self.scale[1])/2.0)) - self.translate=[0.0,0.0] - self.mainpen=wx.Pen(wx.Colour(0,0,0),penwidth) - self.arcpen=wx.Pen(wx.Colour(255,0,0),penwidth) - self.travelpen=wx.Pen(wx.Colour(10,80,80),penwidth) - self.hlpen=wx.Pen(wx.Colour(200,50,50),penwidth) - self.fades=[wx.Pen(wx.Colour(250-0.6**i*100,250-0.6**i*100,200-0.4**i*50),penwidth) for i in xrange(6)] - self.penslist=[self.mainpen,self.travelpen,self.hlpen]+self.fades - self.showall=0 + self.scale = self.basescale + penwidth = max(1.0, self.filament_width*((self.scale[0]+self.scale[1])/2.0)) + self.translate=[0.0, 0.0] + self.mainpen = wx.Pen(wx.Colour(0, 0,0),penwidth) + self.arcpen = wx.Pen(wx.Colour(255, 0,0),penwidth) + self.travelpen = wx.Pen(wx.Colour(10, 80, 80),penwidth) + self.hlpen = wx.Pen(wx.Colour(200, 50, 50),penwidth) + self.fades=[wx.Pen(wx.Colour(250-0.6**i*100, 250-0.6**i*100, 200-0.4**i*50),penwidth) for i in xrange(6)] + self.penslist=[self.mainpen, self.travelpen, self.hlpen]+self.fades + self.showall = 0 self.hilight=[] self.hilightarcs=[] - self.dirty=1 - self.blitmap=wx.EmptyBitmap(self.GetClientSize()[0],self.GetClientSize()[1],-1) + self.dirty = 1 + self.blitmap = wx.EmptyBitmap(self.GetClientSize()[0],self.GetClientSize()[1],-1) def inject(self): #import pdb; pdb.set_trace() @@ -179,7 +179,7 @@ class gviz(wx.Panel): print "Layer "+str(self.layerindex +1)+" - Z = "+str(self.layers[self.layerindex])+" mm" def clear(self): - self.lastpos=[0,0,0,0,0,0,0] + self.lastpos=[0, 0,0, 0,0, 0,0] self.lines={} self.pens={} self.arcs={} @@ -187,9 +187,9 @@ class gviz(wx.Panel): self.layers=[] self.hilight=[] self.hilightarcs=[] - self.layerindex=0 - self.showall=0 - self.dirty=1 + self.layerindex = 0 + self.showall = 0 + self.dirty = 1 #self.repaint() def layerup(self): if(self.layerindex+1 0: for x in xrange(int(self.build_dimensions[0]/grid_unit)+1): - dc.DrawLine(self.translate[0]+x*self.scale[0]*grid_unit,self.translate[1],self.translate[0]+x*self.scale[0]*grid_unit,self.translate[1]+self.scale[1]*self.build_dimensions[1]) + dc.DrawLine(self.translate[0]+x*self.scale[0]*grid_unit, self.translate[1],self.translate[0]+x*self.scale[0]*grid_unit, self.translate[1]+self.scale[1]*self.build_dimensions[1]) for y in xrange(int(self.build_dimensions[1]/grid_unit)+1): - dc.DrawLine(self.translate[0],self.translate[1]+y*self.scale[1]*grid_unit,self.translate[0]+self.scale[0]*self.build_dimensions[0],self.translate[1]+y*self.scale[1]*grid_unit) - dc.SetPen(wx.Pen(wx.Colour(0,0,0))) + dc.DrawLine(self.translate[0],self.translate[1]+y*self.scale[1]*grid_unit, self.translate[0]+self.scale[0]*self.build_dimensions[0],self.translate[1]+y*self.scale[1]*grid_unit) + dc.SetPen(wx.Pen(wx.Colour(0, 0,0))) if not self.showall: self.size = self.GetSize() - dc.SetBrush(wx.Brush((43,144,255))) - dc.DrawRectangle(self.size[0]-15,0,15,self.size[1]) - dc.SetBrush(wx.Brush((0,255,0))) + dc.SetBrush(wx.Brush((43, 144, 255))) + dc.DrawRectangle(self.size[0]-15, 0,15, self.size[1]) + dc.SetBrush(wx.Brush((0, 255, 0))) if len(self.layers): - dc.DrawRectangle(self.size[0]-14,(1.0-(1.0*(self.layerindex+1))/len(self.layers))*self.size[1],13,self.size[1]-1) + dc.DrawRectangle(self.size[0]-14,(1.0-(1.0*(self.layerindex+1))/len(self.layers))*self.size[1],13, self.size[1]-1) - def _drawlines(lines,pens): + def _drawlines(lines, pens): def _scaler(x): return (self.scale[0]*x[0]+self.translate[0], self.scale[1]*x[1]+self.translate[1], self.scale[0]*x[2]+self.translate[0], self.scale[1]*x[3]+self.translate[1],) - scaled_lines = map(_scaler,lines) + scaled_lines = map(_scaler, lines) dc.DrawLineList(scaled_lines, pens) - def _drawarcs(arcs,pens): + def _drawarcs(arcs, pens): def _scaler(x): return (self.scale[0]*x[0]+self.translate[0], self.scale[1]*x[1]+self.translate[1], @@ -275,7 +275,7 @@ class gviz(wx.Panel): self.scale[1]*x[3]+self.translate[1], self.scale[0]*x[4]+self.translate[0], self.scale[1]*x[5]+self.translate[1],) - scaled_arcs = map(_scaler,arcs) + scaled_arcs = map(_scaler, arcs) for i in range(len(scaled_arcs)): dc.SetPen(pens[i] if type(pens).__name__ == 'list' else pens) dc.SetBrush(wx.TRANSPARENT_BRUSH) @@ -284,12 +284,12 @@ class gviz(wx.Panel): if self.showall: l=[] for i in self.layers: - dc.DrawLineList(l,self.fades[0]) + dc.DrawLineList(l, self.fades[0]) _drawlines(self.lines[i], self.pens[i]) _drawarcs(self.arcs[i], self.arcpens[i]) return if self.layerindex vmax: return cmax if val <= vmid: - lo,hi,val,valhi = cmin,cmid,val-vmin,vmid-vmin + lo, hi, val, valhi = cmin, cmid, val-vmin, vmid-vmin else: - lo,hi,val,valhi = cmid,cmax,val-vmid,vmax-vmid + lo, hi, val, valhi = cmid, cmax, val-vmid, vmax-vmid vv = float(val)/valhi - rgb=lo.Red()+(hi.Red()-lo.Red())*vv,lo.Green()+(hi.Green()-lo.Green())*vv,lo.Blue()+(hi.Blue()-lo.Blue())*vv - rgb=map(lambda x:x*0.8,rgb) - return wx.Colour(*map(int,rgb)) + rgb = lo.Red()+(hi.Red()-lo.Red())*vv, lo.Green()+(hi.Green()-lo.Green())*vv, lo.Blue()+(hi.Blue()-lo.Blue())*vv + rgb = map(lambda x:x*0.8, rgb) + return wx.Colour(*map(int, rgb)) - def paint(self,ev): - x0,y0,x1,y1,xE,yE = 1,1,self.ypt+1,1,self.width+1-2,20 - dc=wx.PaintDC(self) - dc.SetBackground(wx.Brush((255,255,255))) + def paint(self, ev): + x0, y0, x1, y1, xE, yE = 1, 1,self.ypt+1, 1,self.width+1-2, 20 + dc = wx.PaintDC(self) + dc.SetBackground(wx.Brush((255, 255, 255))) dc.Clear() - cold,medium,hot = wx.Colour(0,167,223),wx.Colour(239,233,119),wx.Colour(210,50.100) - gauge1,gauge2 = wx.Colour(255,255,210),(self.gaugeColour or wx.Colour(234,82,0)) - shadow1,shadow2 = wx.Colour(110,110,110),wx.Colour(255,255,255) + cold, medium, hot = wx.Colour(0, 167, 223),wx.Colour(239, 233, 119),wx.Colour(210, 50.100) + gauge1, gauge2 = wx.Colour(255, 255, 210),(self.gaugeColour or wx.Colour(234, 82, 0)) + shadow1, shadow2 = wx.Colour(110, 110, 110),wx.Colour(255, 255, 255) gc = wx.GraphicsContext.Create(dc) # draw shadow first # corners - gc.SetBrush(gc.CreateRadialGradientBrush(xE-7,9,xE-7,9,8,shadow1,shadow2)) - gc.DrawRectangle(xE-7,1,8,8) - gc.SetBrush(gc.CreateRadialGradientBrush(xE-7,17,xE-7,17,8,shadow1,shadow2)) - gc.DrawRectangle(xE-7,17,8,8) - gc.SetBrush(gc.CreateRadialGradientBrush(x0+6,17,x0+6,17,8,shadow1,shadow2)) - gc.DrawRectangle(0,17,x0+6,8) + gc.SetBrush(gc.CreateRadialGradientBrush(xE-7, 9,xE-7, 9,8, shadow1, shadow2)) + gc.DrawRectangle(xE-7, 1,8, 8) + gc.SetBrush(gc.CreateRadialGradientBrush(xE-7, 17, xE-7, 17, 8,shadow1, shadow2)) + gc.DrawRectangle(xE-7, 17, 8,8) + gc.SetBrush(gc.CreateRadialGradientBrush(x0+6, 17, x0+6, 17, 8,shadow1, shadow2)) + gc.DrawRectangle(0, 17, x0+6, 8) # edges - gc.SetBrush(gc.CreateLinearGradientBrush(xE-13,0,xE-6,0,shadow1,shadow2)) - gc.DrawRectangle(xE-6,9,10,8) - gc.SetBrush(gc.CreateLinearGradientBrush(x0,yE-2,x0,yE+5,shadow1,shadow2)) - gc.DrawRectangle(x0+6,yE-2,xE-12,7) + gc.SetBrush(gc.CreateLinearGradientBrush(xE-13, 0,xE-6, 0,shadow1, shadow2)) + gc.DrawRectangle(xE-6, 9,10, 8) + gc.SetBrush(gc.CreateLinearGradientBrush(x0, yE-2, x0, yE+5, shadow1, shadow2)) + gc.DrawRectangle(x0+6, yE-2, xE-12, 7) # draw gauge background - gc.SetBrush(gc.CreateLinearGradientBrush(x0,y0,x1+1,y1,cold,medium)) - gc.DrawRoundedRectangle(x0,y0,x1+4,yE,6) - gc.SetBrush(gc.CreateLinearGradientBrush(x1-2,y1,xE,y1,medium,hot)) - gc.DrawRoundedRectangle(x1-2,y1,xE-x1,yE,6) + gc.SetBrush(gc.CreateLinearGradientBrush(x0, y0, x1+1, y1, cold, medium)) + gc.DrawRoundedRectangle(x0, y0, x1+4, yE, 6) + gc.SetBrush(gc.CreateLinearGradientBrush(x1-2, y1, xE, y1, medium, hot)) + gc.DrawRoundedRectangle(x1-2, y1, xE-x1, yE, 6) # draw gauge - width=12 - w1=y0+9-width/2 - w2=w1+width - value=x0+max(10,min(self.width+1-2,int(self.value*self.scale))) - #gc.SetBrush(gc.CreateLinearGradientBrush(x0,y0+3,x0,y0+15,gauge1,gauge2)) - #gc.SetBrush(gc.CreateLinearGradientBrush(0,3,0,15,wx.Colour(255,255,255),wx.Colour(255,90,32))) - gc.SetBrush(gc.CreateLinearGradientBrush(x0,y0+3,x0,y0+15,gauge1,self.interpolatedColour(value,x0,x1,xE,cold,medium,hot))) + width = 12 + w1 = y0+9-width/2 + w2 = w1+width + value = x0+max(10, min(self.width+1-2, int(self.value*self.scale))) + #gc.SetBrush(gc.CreateLinearGradientBrush(x0, y0+3, x0, y0+15, gauge1, gauge2)) + #gc.SetBrush(gc.CreateLinearGradientBrush(0, 3,0, 15, wx.Colour(255, 255, 255),wx.Colour(255, 90, 32))) + gc.SetBrush(gc.CreateLinearGradientBrush(x0, y0+3, x0, y0+15, gauge1, self.interpolatedColour(value, x0, x1, xE, cold, medium, hot))) val_path = gc.CreatePath() - val_path.MoveToPoint(x0,w1) - val_path.AddLineToPoint(value,w1) - val_path.AddLineToPoint(value+2,w1+width/4) - val_path.AddLineToPoint(value+2,w2-width/4) - val_path.AddLineToPoint(value,w2) - #val_path.AddLineToPoint(value-4,10) - val_path.AddLineToPoint(x0,w2) + val_path.MoveToPoint(x0, w1) + val_path.AddLineToPoint(value, w1) + val_path.AddLineToPoint(value+2, w1+width/4) + val_path.AddLineToPoint(value+2, w2-width/4) + val_path.AddLineToPoint(value, w2) + #val_path.AddLineToPoint(value-4, 10) + val_path.AddLineToPoint(x0, w2) gc.DrawPath(val_path) # draw setpoint markers - setpoint=x0+max(10,int(self.setpoint*self.scale)) - gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(0,0,0)))) + setpoint = x0+max(10, int(self.setpoint*self.scale)) + gc.SetBrush(gc.CreateBrush(wx.Brush(wx.Colour(0, 0,0)))) setp_path = gc.CreatePath() - setp_path.MoveToPoint(setpoint-4,y0) - setp_path.AddLineToPoint(setpoint+4,y0) - setp_path.AddLineToPoint(setpoint,y0+5) - setp_path.MoveToPoint(setpoint-4,yE) - setp_path.AddLineToPoint(setpoint+4,yE) - setp_path.AddLineToPoint(setpoint,yE-5) + setp_path.MoveToPoint(setpoint-4, y0) + setp_path.AddLineToPoint(setpoint+4, y0) + setp_path.AddLineToPoint(setpoint, y0+5) + setp_path.MoveToPoint(setpoint-4, yE) + setp_path.AddLineToPoint(setpoint+4, yE) + setp_path.AddLineToPoint(setpoint, yE-5) gc.DrawPath(setp_path) # draw readout - text=u"T\u00B0 %u/%u"%(self.value,self.setpoint) - #gc.SetFont(gc.CreateFont(wx.Font(12,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD),wx.WHITE)) - #gc.DrawText(text,29,-2) - gc.SetFont(gc.CreateFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD),wx.WHITE)) - gc.DrawText(self.title,x0+19,y0+4) - gc.DrawText(text, x0+119,y0+4) - gc.SetFont(gc.CreateFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD))) - gc.DrawText(self.title,x0+18,y0+3) - gc.DrawText(text, x0+118,y0+3) + text = u"T\u00B0 %u/%u"%(self.value, self.setpoint) + #gc.SetFont(gc.CreateFont(wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD),wx.WHITE)) + #gc.DrawText(text, 29,-2) + gc.SetFont(gc.CreateFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD),wx.WHITE)) + gc.DrawText(self.title, x0+19, y0+4) + gc.DrawText(text, x0+119, y0+4) + gc.SetFont(gc.CreateFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD))) + gc.DrawText(self.title, x0+18, y0+3) + gc.DrawText(text, x0+118, y0+3) diff --git a/printrun/stltool.py b/printrun/stltool.py index 50b01ca..568f24d 100644 --- a/printrun/stltool.py +++ b/printrun/stltool.py @@ -15,56 +15,56 @@ import sys, struct, math -def cross(v1,v2): +def cross(v1, v2): return [v1[1]*v2[2]-v1[2]*v2[1],v1[2]*v2[0]-v1[0]*v2[2],v1[0]*v2[1]-v1[1]*v2[0]] def genfacet(v): veca=[v[1][0]-v[0][0],v[1][1]-v[0][1],v[1][2]-v[0][2]] vecb=[v[2][0]-v[1][0],v[2][1]-v[1][1],v[2][2]-v[1][2]] - vecx=cross(veca,vecb) - vlen=math.sqrt(sum(map(lambda x:x*x,vecx))) - if vlen==0: - vlen=1 - normal=map(lambda x:x/vlen, vecx) - return [normal,v] + vecx = cross(veca, vecb) + vlen = math.sqrt(sum(map(lambda x:x*x, vecx))) + if vlen == 0: + vlen = 1 + normal = map(lambda x:x/vlen, vecx) + return [normal, v] I=[ - [1,0,0,0], - [0,1,0,0], - [0,0,1,0], - [0,0,0,1] + [1, 0,0, 0], + [0, 1,0, 0], + [0, 0,1, 0], + [0, 0,0, 1] ] def transpose(matrix): return zip(*matrix) #return [[v[i] for v in matrix] for i in xrange(len(matrix[0]))] -def multmatrix(vector,matrix): +def multmatrix(vector, matrix): return map(sum, transpose(map(lambda x:[x[0]*p for p in x[1]], zip(vector, transpose(matrix))))) -def applymatrix(facet,matrix=I): +def applymatrix(facet, matrix = I): #return facet - #return [map(lambda x:-1.0*x,multmatrix(facet[0]+[1],matrix)[:3]),map(lambda x:multmatrix(x+[1],matrix)[:3],facet[1])] + #return [map(lambda x:-1.0*x, multmatrix(facet[0]+[1],matrix)[:3]),map(lambda x:multmatrix(x+[1],matrix)[:3],facet[1])] return genfacet(map(lambda x:multmatrix(x+[1],matrix)[:3],facet[1])) -f=[[0,0,0],[[-3.022642, 0.642482, -9.510565],[-3.022642, 0.642482, -9.510565],[-3.022642, 0.642482, -9.510565]]] +f=[[0, 0,0],[[-3.022642, 0.642482, -9.510565],[-3.022642, 0.642482, -9.510565],[-3.022642, 0.642482, -9.510565]]] m=[ - [1,0,0,0], - [0,1,0,0], - [0,0,1,1], - [0,0,0,1] + [1, 0,0, 0], + [0, 1,0, 0], + [0, 0,1, 1], + [0, 0,0, 1] ] -def emitstl(filename,facets=[],objname="stltool_export",binary=1): +def emitstl(filename, facets=[],objname = "stltool_export",binary = 1): if filename is None: return if binary: - f=open(filename,"wb") - buf="".join(["\0"]*80) + f = open(filename,"wb") + buf = "".join(["\0"]*80) buf+=struct.pack("i): working.remove(j[1]) @@ -245,6 +245,6 @@ if __name__=="__main__": else: break - print i,len(working) + print i, len(working) emitstl("../../Downloads/frame-vertex-neo-foot-x4-a.stl",s.facets,"emitted_object") #stl("../prusamendel/stl/mendelplate.stl") diff --git a/printrun/stlview.py b/printrun/stlview.py index bbf8682..ad189eb 100644 --- a/printrun/stlview.py +++ b/printrun/stlview.py @@ -32,8 +32,8 @@ from pyglet.gl import * class GLPanel(wx.Panel): '''A simple class for using OpenGL with wxPython.''' - def __init__(self, parent, id, pos=wx.DefaultPosition, - size=wx.DefaultSize, style=0): + def __init__(self, parent, id, pos = wx.DefaultPosition, + size = wx.DefaultSize, style = 0): # Forcing a no full repaint to stop flickering style = style | wx.NO_FULL_REPAINT_ON_RESIZE #call super function @@ -46,7 +46,7 @@ class GLPanel(wx.Panel): glcanvas.WX_GL_DEPTH_SIZE, 24) # 24 bit # Create the canvas self.sizer = wx.BoxSizer(wx.HORIZONTAL) - self.canvas = glcanvas.GLCanvas(self, attribList=attribList) + self.canvas = glcanvas.GLCanvas(self, attribList = attribList) self.sizer.Add(self.canvas, 1, wx.EXPAND) self.SetSizer(self.sizer) #self.sizer.Fit(self) @@ -215,7 +215,7 @@ class stlview(object): normals.extend(i[0]) # Create a list of triangle indices. - indices = range(3 * len(facets)) # [[3*i,3*i+1,3*i+2] for i in xrange(len(facets))] + indices = range(3 * len(facets)) # [[3*i, 3*i+1, 3*i+2] for i in xrange(len(facets))] #print indices[:10] self.vertex_list = batch.add_indexed(len(vertices) // 3, GL_TRIANGLES, @@ -233,7 +233,7 @@ def vdiff(v, o): class gcview(object): - def __init__(self, lines, batch, w=0.5, h=0.5): + def __init__(self, lines, batch, w = 0.5, h = 0.5): # Create the vertex and normal arrays. vertices = [] normals = [] @@ -258,7 +258,7 @@ class gcview(object): if lasth is not None: self.layers[lasth] = pyglet.graphics.Batch() lt = layertemp[lasth][0] - indices = range(len(layertemp[lasth][0]) // 3) # [[3*i,3*i+1,3*i+2] for i in xrange(len(facets))] + indices = range(len(layertemp[lasth][0]) // 3) # [[3*i, 3*i+1, 3*i+2] for i in xrange(len(facets))] self.vlists.append(self.layers[lasth].add_indexed(len(layertemp[lasth][0]) // 3, GL_TRIANGLES, None, # group, @@ -296,7 +296,7 @@ class gcview(object): t0 = time.time() # Create a list of triangle indices. - indices = range(3 * 16 * len(lines)) # [[3*i,3*i+1,3*i+2] for i in xrange(len(facets))] + indices = range(3 * 16 * len(lines)) # [[3*i, 3*i+1, 3*i+2] for i in xrange(len(facets))] self.vlists.append(batch.add_indexed(len(vertices) // 3, GL_TRIANGLES, None, # group, @@ -305,7 +305,7 @@ class gcview(object): ('n3f/static', normals))) if lasth is not None: self.layers[lasth] = pyglet.graphics.Batch() - indices = range(len(layertemp[lasth][0])) # [[3*i,3*i+1,3*i+2] for i in xrange(len(facets))] + indices = range(len(layertemp[lasth][0])) # [[3*i, 3*i+1, 3*i+2] for i in xrange(len(facets))] self.vlists.append(self.layers[lasth].add_indexed(len(layertemp[lasth][0]) // 3, GL_TRIANGLES, None, # group, @@ -466,7 +466,7 @@ def mulquat(q1, rq): class TestGlPanel(GLPanel): - def __init__(self, parent, size, id=wx.ID_ANY): + def __init__(self, parent, size, id = wx.ID_ANY): super(TestGlPanel, self).__init__(parent, id, wx.DefaultPosition, size, 0) self.batches = [] self.rot = 0 @@ -495,7 +495,7 @@ class TestGlPanel(GLPanel): def forceresize(self): self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] + 1)) self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] - 1)) - threading.Thread(target=self.update).start() + threading.Thread(target = self.update).start() self.initialized = 0 def move_shape(self, delta): @@ -547,7 +547,7 @@ class TestGlPanel(GLPanel): p1y = -(float(p1[1]) - sz[1] / 2) / (sz[1] / 2) p2x = (float(p2[0]) - sz[0] / 2) / (sz[0] / 2) p2y = -(float(p2[1]) - sz[1] / 2) / (sz[1] / 2) - #print p1x,p1y,p2x,p2y + #print p1x, p1y, p2x, p2y quat = trackball(p1x, p1y, p2x, p2y, -self.transv[2] / 250.0) if self.rot: self.basequat = mulquat(self.basequat, quat) @@ -710,7 +710,7 @@ class TestGlPanel(GLPanel): def drawmodel(self, m, n): batch = pyglet.graphics.Batch() - stl = stlview(m.facets, batch=batch) + stl = stlview(m.facets, batch = batch) m.batch = batch m.animoffset = 300 #print m @@ -819,8 +819,8 @@ class TestGlPanel(GLPanel): class GCFrame(wx.Frame): '''A simple class for using OpenGL with wxPython.''' - def __init__(self, parent, ID, title, pos=wx.DefaultPosition, - size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE): + def __init__(self, parent, ID, title, pos = wx.DefaultPosition, + size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE): super(GCFrame, self).__init__(parent, ID, title, pos, (size[0] + 150, size[1]), style) class d: @@ -833,7 +833,7 @@ class GCFrame(wx.Frame): m.curlayer = 0.0 m.scale = [1.0, 1.0, 1.0] m.batch = pyglet.graphics.Batch() - m.gc = gcview([], batch=m.batch) + m.gc = gcview([], batch = m.batch) self.models = {"": m} self.l = d() self.modelindex = 0 @@ -841,13 +841,13 @@ class GCFrame(wx.Frame): def addfile(self, gcode=[]): self.models[""].gc.delete() - self.models[""].gc = gcview(gcode, batch=self.models[""].batch) + self.models[""].gc = gcview(gcode, batch = self.models[""].batch) def clear(self): self.models[""].gc.delete() - self.models[""].gc = gcview([], batch=self.models[""].batch) + self.models[""].gc = gcview([], batch = self.models[""].batch) - def Show(self, arg=True): + def Show(self, arg = True): wx.Frame.Show(self, arg) self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] + 1)) self.SetClientSize((self.GetClientSize()[0], self.GetClientSize()[1] - 1)) @@ -868,10 +868,10 @@ class GCFrame(wx.Frame): def main(): - app = wx.App(redirect=False) - frame = GCFrame(None, wx.ID_ANY, 'Gcode view, shift to move view, mousewheel to set layer', size=(400, 400)) + app = wx.App(redirect = False) + frame = GCFrame(None, wx.ID_ANY, 'Gcode view, shift to move view, mousewheel to set layer', size = (400, 400)) frame.addfile(list(open("carriage dump_export.gcode"))) - #frame = wx.Frame(None, -1, "GL Window", size=(400, 400)) + #frame = wx.Frame(None, -1, "GL Window", size = (400, 400)) #panel = TestGlPanel(frame) #frame.Show(True) #app.MainLoop() diff --git a/printrun/svg/__init__.py b/printrun/svg/__init__.py index 61a481c..ee774d2 100644 --- a/printrun/svg/__init__.py +++ b/printrun/svg/__init__.py @@ -4,8 +4,8 @@ import wx -def AddEllipticalArc(self, x, y, w, h, startAngle, endAngle, clockwise=False): - """ Draws an arc of an ellipse within bounding rect (x,y,w,h) +def AddEllipticalArc(self, x, y, w, h, startAngle, endAngle, clockwise = False): + """ Draws an arc of an ellipse within bounding rect (x, y,w, h) from startArc to endArc (in radians, relative to the horizontal line of the eclipse)""" if True: diff --git a/printrun/svg/attributes.py b/printrun/svg/attributes.py index 62a3f88..440beeb 100644 --- a/printrun/svg/attributes.py +++ b/printrun/svg/attributes.py @@ -22,7 +22,7 @@ colorDeclaration = none | currentColor | colourValue urlEnd = ( Literal(")").suppress() + - Optional(Group(colorDeclaration), default=()) + + Optional(Group(colorDeclaration), default = ()) + StringEnd() ) @@ -30,12 +30,12 @@ url = ( CaselessLiteral("URL") + Literal("(").suppress()+ - Group(SkipTo(urlEnd, include=True).setParseAction(parsePossibleURL)) + Group(SkipTo(urlEnd, include = True).setParseAction(parsePossibleURL)) ) #paint value will parse into a (type, details) tuple. #For none and currentColor, the details tuple will be the empty tuple -#for CSS color declarations, it will be (type, (R,G,B)) +#for CSS color declarations, it will be (type, (R, G,B)) #for URLs, it will be ("URL", ((url tuple), fallback)) #The url tuple will be as returned by urlparse.urlsplit, and can be #an empty tuple if the parser has an error diff --git a/printrun/svg/document.py b/printrun/svg/document.py index e31bffd..5c9a292 100644 --- a/printrun/svg/document.py +++ b/printrun/svg/document.py @@ -14,22 +14,22 @@ from svg.css.colour import colourValue from svg.css import values from attributes import paintValue -document = """ +document = """ - + Example triangle01- simple example of a 'path' A path that draws a triangle - - + + """ makePath = lambda: wx.GraphicsRenderer_GetDefaultRenderer().CreatePath() -def attrAsFloat(node, attr, defaultValue="0"): +def attrAsFloat(node, attr, defaultValue = "0"): val = node.get(attr, defaultValue) #TODO: process stuff like "inherit" by walking back up the nodes #fast path optimization - if it's a valid float, don't @@ -39,7 +39,7 @@ def attrAsFloat(node, attr, defaultValue="0"): except ValueError: return valueToPixels(val) -def valueToPixels(val, defaultUnits="px"): +def valueToPixels(val, defaultUnits = "px"): #TODO manage default units from pyparsing import ParseException try: @@ -175,14 +175,14 @@ class SVGDocument(object): ) if transform == 'skewX': matrix = wx.GraphicsRenderer_GetDefaultRenderer().CreateMatrix( - 1,0,math.tan(math.radians(args[0])),1,0,0 + 1, 0,math.tan(math.radians(args[0])),1, 0,0 ) ops.append( (wx.GraphicsContext.ConcatTransform, (matrix,)) ) if transform == 'skewY': matrix = wx.GraphicsRenderer_GetDefaultRenderer().CreateMatrix( - 1,math.tan(math.radians(args[0])),0,1,0,0 + 1, math.tan(math.radians(args[0])),0, 1,0, 0 ) ops.append( (wx.GraphicsContext.ConcatTransform, (matrix,)) @@ -231,7 +231,7 @@ class SVGDocument(object): def addTextToDocument(self, node): x, y = [attrAsFloat(node, attr) for attr in ('x', 'y')] - def DoDrawText(context, text, x, y, brush=wx.NullGraphicsBrush): + def DoDrawText(context, text, x, y, brush = wx.NullGraphicsBrush): #SVG spec appears to originate text from the bottom #rather than the top as with our API. This function #will measure and then re-orient the text as needed. @@ -259,7 +259,7 @@ class SVGDocument(object): rx = node.get('rx') ry = node.get('ry') if not (w and h): - path.MoveToPoint(x,y) #keep the current point correct + path.MoveToPoint(x, y) #keep the current point correct return if rx or ry: if rx and ry: @@ -449,7 +449,7 @@ class SVGDocument(object): pen.SetJoin(joinmap.get(self.state.get('stroke-linejoin', None), wx.JOIN_MITER)) return wx.GraphicsRenderer_GetDefaultRenderer().CreatePen(pen) - def getBrushFromState(self, path=None): + def getBrushFromState(self, path = None): brushcolour = self.state.get('fill', 'black').strip() type, details = paintValue.parseString(brushcolour) if type == "URL": @@ -465,29 +465,29 @@ class SVGDocument(object): box = path.GetBox() x, y, w, h = box.Get() return wx.GraphicsRenderer.GetDefaultRenderer().CreateLinearGradientBrush( - x,y,x+w,y+h,wx.Colour(0,0,255,128), wx.RED + x, y,x+w, y+h, wx.Colour(0, 0,255, 128), wx.RED ) elif element.tag == '{http://www.w3.org/2000/svg}radialGradient': box = path.GetBox() x, y, w, h = box.Get() #print w - mx = wx.GraphicsRenderer.GetDefaultRenderer().CreateMatrix(x,y,w,h) + mx = wx.GraphicsRenderer.GetDefaultRenderer().CreateMatrix(x, y,w, h) cx, cy = mx.TransformPoint(0.5, 0.5) fx, fy = cx, cy return wx.GraphicsRenderer.GetDefaultRenderer().CreateRadialGradientBrush( - cx,cy, - fx,fy, - (max(w,h))/2, - wx.Colour(0,0,255,128), wx.RED + cx, cy, + fx, fy, + (max(w, h))/2, + wx.Colour(0, 0,255, 128), wx.RED ) else: #invlid gradient specified return wx.NullBrush - r,g,b = 0,0,0 + r, g,b = 0, 0,0 if type == 'CURRENTCOLOR': type, details = paintValue.parseString(self.state.get('color', 'none')) if type == 'RGB': - r,g,b = details + r, g,b = details elif type == "NONE": return wx.NullBrush opacity = self.state.get('fill-opacity', self.state.get('opacity', '1')) @@ -499,9 +499,9 @@ class SVGDocument(object): #be created every time anyway in order to pass them, #defeating the purpose of the cache try: - return SVGDocument.brushCache[(r,g,b,a)] + return SVGDocument.brushCache[(r, g,b, a)] except KeyError: - return SVGDocument.brushCache.setdefault((r,g,b,a), wx.Brush(wx.Colour(r,g,b,a))) + return SVGDocument.brushCache.setdefault((r, g,b, a), wx.Brush(wx.Colour(r, g,b, a))) def resolveURL(self, urlData): @@ -571,7 +571,7 @@ class SVGDocument(object): #~ cp = path.GetCurrentPoint() #~ path.AddCircle(c1x, c1y, 5) #~ path.AddCircle(c2x, c2y, 3) - #~ path.AddCircle(x,y, 7) + #~ path.AddCircle(x, y, 7) #~ path.MoveToPoint(cp) #~ print "C", control1, control2, endpoint @@ -592,7 +592,7 @@ class SVGDocument(object): endpoint ) elif type == "Q": - (cx, cy), (x,y) = map(normalizePoint, arg) + (cx, cy), (x, y) = map(normalizePoint, arg) self.lastControlQ = (cx, cy) path.AddQuadCurveToPoint(cx, cy, x, y) elif type == "T": @@ -607,12 +607,12 @@ class SVGDocument(object): elif type == "V": _, y = normalizePoint((0, arg)) x, _ = path.GetCurrentPoint() - path.AddLineToPoint(x,y) + path.AddLineToPoint(x, y) elif type == "H": x, _ = normalizePoint((arg, 0)) _, y = path.GetCurrentPoint() - path.AddLineToPoint(x,y) + path.AddLineToPoint(x, y) elif type == "A": #wxGC currently only supports circular arcs, @@ -625,14 +625,14 @@ class SVGDocument(object): (x, y) #endpoint on the arc ) = arg - x, y = normalizePoint((x,y)) + x, y = normalizePoint((x, y)) cx, cy = path.GetCurrentPoint() if (cx, cy) == (x, y): return #noop if (rx == 0 or ry == 0): #no radius is effectively a line - path.AddLineToPoint(x,y) + path.AddLineToPoint(x, y) return #find the center point for the ellipse @@ -685,7 +685,7 @@ class SVGDocument(object): path.MoveToPoint(x, y) #~ npath = makePath() #~ npath.AddEllipticalArc(cnx-rx, cny-ry, rx*2, ry*2, firstArc, lastArc, False) - #~ npath.MoveToPoint(x,y) + #~ npath.MoveToPoint(x, y) #~ path.AddPath(npath) elif type == 'Z': diff --git a/printrun/svg/pathdata.py b/printrun/svg/pathdata.py index 4026ce4..7081df9 100644 --- a/printrun/svg/pathdata.py +++ b/printrun/svg/pathdata.py @@ -27,12 +27,12 @@ class CaselessPreservingLiteral(CaselessLiteral): instead of as defined. """ def __init__( self, matchString ): - super(CaselessPreservingLiteral,self).__init__( matchString.upper() ) + super(CaselessPreservingLiteral, self).__init__( matchString.upper() ) self.name = "'%s'" % matchString self.errmsg = "Expected " + self.name self.myException.msg = self.errmsg - def parseImpl( self, instring, loc, doActions=True ): + def parseImpl( self, instring, loc, doActions = True ): test = instring[ loc:loc+self.matchLen ] if test.upper() == self.match: return loc+self.matchLen, test @@ -117,7 +117,7 @@ ellipticalArcArgument = Group( arcRadius + maybeComma + #rx, ry number + maybeComma +#rotation arcFlags + #large-arc-flag, sweep-flag - coordinatePair #(x,y) + coordinatePair #(x, y) ) diff --git a/printrun/webinterface.py b/printrun/webinterface.py index e1d11a8..c02ad58 100644 --- a/printrun/webinterface.py +++ b/printrun/webinterface.py @@ -8,10 +8,10 @@ from printrun.printrun_utils import configfile, imagefile, sharedfile users = {} def PrintHeader(): - return '\n\nPronterface-Web\n\n\n\n' + return '\n\nPronterface-Web\n\n\n\n' def PrintMenu(): - return '' + return '' def PrintFooter(): return "" @@ -30,41 +30,41 @@ gWeblog = "" gLogRefresh =5 class SettingsPage(object): def __init__(self): - self.name="
Pronterface Settings
" + self.name = "
Pronterface Settings
" def index(self): - pageText=PrintHeader()+self.name+PrintMenu() - pageText=pageText+"
\n" - pageText=pageText+"\n \n" - pageText=pageText+" \n \n" - pageText=pageText+" \n \n" - pageText=pageText+" \n \n" - pageText=pageText+" \n \n" - pageText=pageText+" \n " - pageText=pageText+PrintFooter() + pageText = PrintHeader()+self.name+PrintMenu() + pageText = pageText+"
settingvalue
Build Dimenstions"+str(gPronterPtr.settings.build_dimensions)+"
Last Bed Temp"+str(gPronterPtr.settings.last_bed_temperature)+"
Last File Path"+gPronterPtr.settings.last_file_path+"
Last Temperature"+str(gPronterPtr.settings.last_temperature)+"
Preview Extrusion Width"+str(gPronterPtr.settings.preview_extrusion_width)+"
Filename"+str(gPronterPtr.filename)+"
\n" + pageText = pageText+"\n \n" + pageText = pageText+" \n \n" + pageText = pageText+" \n \n" + pageText = pageText+" \n \n" + pageText = pageText+" \n \n" + pageText = pageText+" \n " + pageText = pageText+PrintFooter() return pageText index.exposed = True class LogPage(object): def __init__(self): - self.name="
Pronterface Console
" + self.name = "
Pronterface Console
" def index(self): - pageText="" + pageText = "" pageText+="
" pageText+=gPronterPtr.status.GetStatusText() pageText+="
" - pageText=pageText+"
"+gWeblog+"
" - pageText=pageText+"" + pageText = pageText+"
"+gWeblog+"
" + pageText = pageText+"" return pageText index.exposed = True class ConsolePage(object): def __init__(self): - self.name="
Pronterface Settings
" + self.name = "
Pronterface Settings
" def index(self): - pageText=PrintHeader()+self.name+PrintMenu() + pageText = PrintHeader()+self.name+PrintMenu() pageText+="
" pageText+=PrintFooter() return pageText @@ -129,7 +129,7 @@ class MoveButton(object): def axis(self, *args): if not args: raise cherrypy.HTTPError(400, "No Move Command Provided!") - margs=list(args) + margs = list(args) axis = margs.pop(0) if(margs and axis == "x"): distance = margs.pop(0) @@ -154,7 +154,7 @@ class CustomButton(object): def button(self, *args): if not args: raise cherrypy.HTTPError(400, "No Custom Command Provided!") - margs=list(args) + margs = list(args) command = margs.pop(0) if(command): gPronterPtr.onecmd(command) @@ -169,7 +169,7 @@ class HomeButton(object): def axis(self, *args): if not args: raise cherrypy.HTTPError(400, "No Axis Provided!") - margs=list(args) + margs = list(args) taxis = margs.pop(0) if(taxis == "x"): gPronterPtr.onecmd('home X') @@ -193,31 +193,31 @@ class HomeButton(object): class XMLstatus(object): def index(self): #handle connect push, then reload page - txt='\n\n' - state="Offline" + txt='\n\n' + state = "Offline" if gPronterPtr.statuscheck or gPronterPtr.p.online: - state="Idle" + state = "Idle" if gPronterPtr.sdprinting: - state="SDPrinting" + state = "SDPrinting" if gPronterPtr.p.printing: - state="Printing" + state = "Printing" if gPronterPtr.paused: - state="Paused" + state = "Paused" - txt=txt+''+state+'\n' - txt=txt+''+str(gPronterPtr.filename)+'\n' - txt=txt+''+str(gPronterPtr.status.GetStatusText())+'\n' + txt = txt+''+state+'\n' + txt = txt+''+str(gPronterPtr.filename)+'\n' + txt = txt+''+str(gPronterPtr.status.GetStatusText())+'\n' try: temp = str(float(filter(lambda x:x.startswith("T:"),gPronterPtr.tempreport.split())[0].split(":")[1])) - txt=txt+''+temp+'\n' + txt = txt+''+temp+'\n' except: - txt=txt+'NA\n' + txt = txt+'NA\n' pass try: temp = str(float(filter(lambda x:x.startswith("B:"),gPronterPtr.tempreport.split())[0].split(":")[1])) - txt=txt+''+temp+'\n' + txt = txt+''+temp+'\n' except: - txt=txt+'NA\n' + txt = txt+'NA\n' pass if gPronterPtr.sdprinting: fractioncomplete = float(gPronterPtr.percentdone/100.0) @@ -238,7 +238,7 @@ class WebInterface(object): def __init__(self, pface): if (sys.version_info[1] > 6): # 'allow_no_value' wasn't added until 2.7 - config = ConfigParser.SafeConfigParser(allow_no_value=True) + config = ConfigParser.SafeConfigParser(allow_no_value = True) else: config = ConfigParser.SafeConfigParser() config.read(configfile(pface.web_auth_config or 'auth.config')) @@ -246,7 +246,7 @@ class WebInterface(object): self.pface = pface global gPronterPtr global gWeblog - self.name="
Pronterface Web-Interface
" + self.name = "
Pronterface Web-Interface
" gWeblog = "" gPronterPtr = self.pface @@ -266,7 +266,7 @@ class WebInterface(object): custom =CustomButton() def index(self): - pageText=PrintHeader()+self.name+PrintMenu() + pageText = PrintHeader()+self.name+PrintMenu() pageText+="
\n" pageText+="
\n" pageText+="
  • Connect
  • \n" @@ -286,40 +286,40 @@ class WebInterface(object): pageText+="
    \n" pageText+="
    " pageText+="" - pageText+='' + pageText+='' - pageText+='X Home' - pageText+='Y Home' - pageText+='All Home' - pageText+='Z Home' - pageText+='Y 100' - pageText+='Y 10' - pageText+='Y 1' - pageText+='Y .1' - pageText+='Y -.1' - pageText+='Y -1' - pageText+='Y -10' - pageText+='Y -100' - pageText+='X -100' - pageText+='X 100' - pageText+='X -10' - pageText+='X 10' - pageText+='X -1' - pageText+='X 1' - pageText+='X -.1' - pageText+='X .1' + pageText+='X Home' + pageText+='Y Home' + pageText+='All Home' + pageText+='Z Home' + pageText+='Y 100' + pageText+='Y 10' + pageText+='Y 1' + pageText+='Y .1' + pageText+='Y -.1' + pageText+='Y -1' + pageText+='Y -10' + pageText+='Y -100' + pageText+='X -100' + pageText+='X 100' + pageText+='X -10' + pageText+='X 10' + pageText+='X -1' + pageText+='X 1' + pageText+='X -.1' + pageText+='X .1' pageText+="" pageText+="
    \n" #endxy pageText+="
    " pageText+="" - pageText+='' - pageText+='Z 10' - pageText+='Z 1' - pageText+='Z .1' - pageText+='Z -.1' - pageText+='Z -1' - pageText+='Z -10' + pageText+='' + pageText+='Z 10' + pageText+='Z 1' + pageText+='Z .1' + pageText+='Z -.1' + pageText+='Z -1' + pageText+='Z -10' pageText+="" #TODO Map Z Moves pageText+="
    \n" #endz @@ -337,17 +337,17 @@ class WebInterface(object): # pageText+="
    " # pageText+="
" - pageText=pageText+"
File Loaded: "+str(gPronterPtr.filename)+"
" + pageText = pageText+"
File Loaded: "+str(gPronterPtr.filename)+"
" pageText+="
" pageText+=PrintFooter() return pageText def AddLog(self, log): global gWeblog - gWeblog=gWeblog+"
"+log + gWeblog = gWeblog+"
"+log def AppendLog(self, log): global gWeblog - gWeblog=re.sub("\n", "
", gWeblog)+log + gWeblog = re.sub("\n", "
", gWeblog)+log index.exposed = True class WebInterfaceStub(object): @@ -372,7 +372,7 @@ def StartWebInterfaceThread(webInterface): 'tools.staticfile.filename': imagefile('control_z.png'), }} cherrypy.config.update(configfile(webInterface.pface.web_config or "http.config")) - cherrypy.quickstart(webInterface, '/', config=conf) + cherrypy.quickstart(webInterface, '/', config = conf) if __name__ == '__main__': cherrypy.config.update(configfile("http.config")) diff --git a/printrun/xybuttons.py b/printrun/xybuttons.py index e0da9b3..fef3544 100644 --- a/printrun/xybuttons.py +++ b/printrun/xybuttons.py @@ -41,7 +41,7 @@ class XYButtons(BufferedCanvas): center = (124, 121) spacer = 7 - def __init__(self, parent, moveCallback=None, cornerCallback=None, spacebarCallback=None, bgcolor="#FFFFFF", ID=-1): + def __init__(self, parent, moveCallback = None, cornerCallback = None, spacebarCallback = None, bgcolor = "#FFFFFF", 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 = -1 @@ -181,7 +181,7 @@ class XYButtons(BufferedCanvas): self.drawPartialPie(gc, center, r1-inner_ring_radius, r2-inner_ring_radius, a1+fudge, a2-fudge) - def drawCorner(self, gc, x, y, angle=0.0): + def drawCorner(self, gc, x, y, angle = 0.0): w, h = XYButtons.corner_size gc.PushState() @@ -197,7 +197,7 @@ class XYButtons(BufferedCanvas): gc.DrawPath(path) gc.PopState() - def highlightCorner(self, gc, corner=0): + def highlightCorner(self, gc, corner = 0): w, h = XYButtons.corner_size cx, cy = XYButtons.center ww, wh = self.GetSizeTuple() @@ -229,8 +229,8 @@ class XYButtons(BufferedCanvas): if self.enabled: # Brush and pen for grey overlay when mouse hovers over - gc.SetPen(wx.Pen(wx.Colour(100,100,100,172), 4)) - gc.SetBrush(wx.Brush(wx.Colour(0,0,0,128))) + gc.SetPen(wx.Pen(wx.Colour(100, 100, 100, 172), 4)) + gc.SetBrush(wx.Brush(wx.Colour(0, 0,0, 128))) if self.concentric != None: if self.concentric < len(XYButtons.concentric_circle_radii): @@ -246,8 +246,8 @@ class XYButtons(BufferedCanvas): 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))) + 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] diff --git a/printrun/zbuttons.py b/printrun/zbuttons.py index 54d1671..757c36b 100644 --- a/printrun/zbuttons.py +++ b/printrun/zbuttons.py @@ -32,7 +32,7 @@ class ZButtons(BufferedCanvas): 3: None } - def __init__(self, parent, moveCallback=None, bgcolor="#FFFFFF", ID=-1): + def __init__(self, parent, moveCallback = None, bgcolor = "#FFFFFF", ID=-1): self.bg_bmp = wx.Image(imagefile("control_z.png"),wx.BITMAP_TYPE_PNG).ConvertToBitmap() self.range = None self.direction = None @@ -108,16 +108,16 @@ class ZButtons(BufferedCanvas): 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))) + 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))) + 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: diff --git a/printrun/zscaper.py b/printrun/zscaper.py index 16e3742..553c189 100644 --- a/printrun/zscaper.py +++ b/printrun/zscaper.py @@ -13,63 +13,63 @@ # You should have received a copy of the GNU General Public License # along with Printrun. If not, see . -import wx,math +import wx, math from stltool import * -a=wx.App() +a = wx.App() -def genscape(data=[[0,1,0,0],[1,0,2,0],[1,0,0,0],[0,1,0,1]],pscale=1.0,bheight=1.0,zscale=1.0): - o=stl(None) - datal=len(data) - datah=len(data[0]) +def genscape(data=[[0, 1,0, 0],[1, 0,2, 0],[1, 0,0, 0],[0, 1,0, 1]],pscale = 1.0, bheight = 1.0, zscale = 1.0): + o = stl(None) + datal = len(data) + datah = len(data[0]) #create bottom: - bmidpoint=(pscale*(datal-1)/2.0,pscale*(datah-1)/2.0) + bmidpoint = (pscale*(datal-1)/2.0, pscale*(datah-1)/2.0) #print range(datal),bmidpoint for i in zip(range(datal+1)[:-1],range(datal+1)[1:])[:-1]: #print (pscale*i[0],pscale*i[1]) - o.facets+=[[[0,0,-1],[[0.0,pscale*i[0],0.0],[0.0,pscale*i[1],0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] - o.facets+=[[[0,0,-1],[[2.0*bmidpoint[1],pscale*i[1],0.0],[2.0*bmidpoint[1],pscale*i[0],0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] - o.facets+=[genfacet([[0.0,pscale*i[0],data[i[0]][0]*zscale+bheight],[0.0,pscale*i[1],data[i[1]][0]*zscale+bheight],[0.0,pscale*i[1],0.0]])] + o.facets+=[[[0, 0,-1],[[0.0, pscale*i[0],0.0],[0.0, pscale*i[1],0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] + o.facets+=[[[0, 0,-1],[[2.0*bmidpoint[1],pscale*i[1],0.0],[2.0*bmidpoint[1],pscale*i[0],0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] + o.facets+=[genfacet([[0.0, pscale*i[0],data[i[0]][0]*zscale+bheight],[0.0, pscale*i[1],data[i[1]][0]*zscale+bheight],[0.0, pscale*i[1],0.0]])] o.facets+=[genfacet([[2.0*bmidpoint[1],pscale*i[1],data[i[1]][datah-1]*zscale+bheight],[2.0*bmidpoint[1],pscale*i[0],data[i[0]][datah-1]*zscale+bheight],[2.0*bmidpoint[1],pscale*i[1],0.0]])] - o.facets+=[genfacet([[0.0,pscale*i[0],data[i[0]][0]*zscale+bheight],[0.0,pscale*i[1],0.0],[0.0,pscale*i[0],0.0]])] + o.facets+=[genfacet([[0.0, pscale*i[0],data[i[0]][0]*zscale+bheight],[0.0, pscale*i[1],0.0],[0.0, pscale*i[0],0.0]])] o.facets+=[genfacet([[2.0*bmidpoint[1],pscale*i[1],0.0],[2.0*bmidpoint[1],pscale*i[0],data[i[0]][datah-1]*zscale+bheight],[2.0*bmidpoint[1],pscale*i[0],0.0]])] #print o.facets[-1] pass #print o.facets[-4:] for i in zip(range(datah+1)[:-1],range(datah+1)[1:])[:-1]: #print (pscale*i[0],pscale*i[1]) - o.facets+=[[[0,0,-1],[[pscale*i[1],0.0,0.0],[pscale*i[0],0.0,0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] - o.facets+=[[[0,0,-1],[[pscale*i[0],2.0*bmidpoint[0],0.0],[pscale*i[1],2.0*bmidpoint[0],0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] - o.facets+=[genfacet([[pscale*i[1],0.0,data[0][i[1]]*zscale+bheight],[pscale*i[0],0.0,data[0][i[0]]*zscale+bheight],[pscale*i[1],0.0,0.0]])] + o.facets+=[[[0, 0,-1],[[pscale*i[1],0.0, 0.0],[pscale*i[0],0.0, 0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] + o.facets+=[[[0, 0,-1],[[pscale*i[0],2.0*bmidpoint[0],0.0],[pscale*i[1],2.0*bmidpoint[0],0.0],[bmidpoint[0],bmidpoint[1],0.0]]]] + o.facets+=[genfacet([[pscale*i[1],0.0, data[0][i[1]]*zscale+bheight],[pscale*i[0],0.0, data[0][i[0]]*zscale+bheight],[pscale*i[1],0.0, 0.0]])] #break o.facets+=[genfacet([[pscale*i[0],2.0*bmidpoint[0],data[datal-1][i[0]]*zscale+bheight],[pscale*i[1],2.0*bmidpoint[0],data[datal-1][i[1]]*zscale+bheight],[pscale*i[1],2.0*bmidpoint[0],0.0]])] - o.facets+=[genfacet([[pscale*i[1],0.0,0.0],[pscale*i[0],0.0,data[0][i[0]]*zscale+bheight],[pscale*i[0],0.0,0.0]])] + o.facets+=[genfacet([[pscale*i[1],0.0, 0.0],[pscale*i[0],0.0, data[0][i[0]]*zscale+bheight],[pscale*i[0],0.0, 0.0]])] o.facets+=[genfacet([[pscale*i[0],2.0*bmidpoint[0],data[datal-1][i[0]]*zscale+bheight],[pscale*i[1],2.0*bmidpoint[0],0.0],[pscale*i[0],2.0*bmidpoint[0],0.0]])] pass for i in xrange(datah-1): for j in xrange(datal-1): - o.facets+=[genfacet([[pscale*i,pscale*j,data[j][i]*zscale+bheight],[pscale*(i+1),pscale*(j),data[j][i+1]*zscale+bheight],[pscale*(i+1),pscale*(j+1),data[j+1][i+1]*zscale+bheight]])] - o.facets+=[genfacet([[pscale*(i),pscale*(j+1),data[j+1][i]*zscale+bheight],[pscale*i,pscale*j,data[j][i]*zscale+bheight],[pscale*(i+1),pscale*(j+1),data[j+1][i+1]*zscale+bheight]])] + o.facets+=[genfacet([[pscale*i, pscale*j, data[j][i]*zscale+bheight],[pscale*(i+1),pscale*(j),data[j][i+1]*zscale+bheight],[pscale*(i+1),pscale*(j+1),data[j+1][i+1]*zscale+bheight]])] + o.facets+=[genfacet([[pscale*(i),pscale*(j+1),data[j+1][i]*zscale+bheight],[pscale*i, pscale*j, data[j][i]*zscale+bheight],[pscale*(i+1),pscale*(j+1),data[j+1][i+1]*zscale+bheight]])] #print o.facets[-1] - facet=[[0,0,0],[[0,0,0],[0,0,0],[0,0,0]]] + facet=[[0, 0,0],[[0, 0,0],[0, 0,0],[0, 0,0]]] return o -def zimage(name,out): - i=wx.Image(name) - s=i.GetSize() - print len(map(ord,i.GetData()[::3])) - b=map(ord,i.GetData()[::3]) +def zimage(name, out): + i = wx.Image(name) + s = i.GetSize() + print len(map(ord, i.GetData()[::3])) + b = map(ord, i.GetData()[::3]) data=[] for i in xrange(s[0]): data+=[b[i*s[1]:(i+1)*s[1]]] #data=[i[::5] for i in data[::5]] - emitstl(out,genscape(data,zscale=0.1).facets,name) + emitstl(out, genscape(data, zscale = 0.1).facets, name) """ class scapewin(wx.Frame): - def __init__(self,size=(400,530)): - wx.Frame.__init__(self,None,title="Right-click to load an image",size=size) + def __init__(self, size = (400, 530)): + wx.Frame.__init__(self, None, title = "Right-click to load an image",size = size) self.SetIcon(wx.Icon("plater.ico",wx.BITMAP_TYPE_ICO)) self.SetClientSize(size) - self.panel=wx.Panel(self,size=size) + self.panel = wx.Panel(self, size = size) """ diff --git a/pronsole.py b/pronsole.py index 0662a6b..4ad4fbd 100755 --- a/pronsole.py +++ b/pronsole.py @@ -25,60 +25,60 @@ import printcore from printrun.printrun_utils import install_locale install_locale('pronterface') -if os.name=="nt": +if os.name == "nt": try: import _winreg except: pass -READLINE=True +READLINE = True try: import readline try: - readline.rl.mode.show_all_if_ambiguous="on" #config pyreadline on windows + readline.rl.mode.show_all_if_ambiguous = "on" #config pyreadline on windows except: pass except: - READLINE=False #neither readline module is available + READLINE = False #neither readline module is available def dosify(name): return os.path.split(name)[1].split(".")[0][:8]+".g" def measurements(g): - Xcur=0.0 - Ycur=0.0 - Zcur=0.0 - Xmin=1000000 - Ymin=1000000 - Zmin=1000000 + Xcur = 0.0 + Ycur = 0.0 + Zcur = 0.0 + Xmin = 1000000 + Ymin = 1000000 + Zmin = 1000000 Xmax=-1000000 Ymax=-1000000 Zmax=-1000000 - Xtot=0 - Ytot=0 - Ztot=0 + Xtot = 0 + Ytot = 0 + Ztot = 0 for i in g: if "X" in i and ("G1" in i or "G0" in i): try: Xcur = float(i.split("X")[1].split(" ")[0]) - if Xcur5.0: Xmin=Xcur - if Xcur>Xmax: Xmax=Xcur + if Xcur5.0: Xmin = Xcur + if Xcur>Xmax: Xmax = Xcur except: pass if "Y" in i and ("G1" in i or "G0" in i): try: Ycur = float(i.split("Y")[1].split(" ")[0]) - if Ycur5.0: Ymin=Ycur - if Ycur>Ymax: Ymax=Ycur + if Ycur5.0: Ymin = Ycur + if Ycur>Ymax: Ymax = Ycur except: pass if "Z" in i and ("G1" in i or "G0" in i): try: Zcur = float(i.split("Z")[1].split(" ")[0]) - if ZcurZmax: Zmax=Zcur + if ZcurZmax: Zmax = Zcur except: pass @@ -87,15 +87,15 @@ def measurements(g): Ytot = Ymax - Ymin Ztot = Zmax - Zmin - return (Xtot,Ytot,Ztot,Xmin,Xmax,Ymin,Ymax,Zmin,Zmax) + return (Xtot, Ytot, Ztot, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax) def totalelength(g): - tot=0 - cur=0 + tot = 0 + cur = 0 for i in g: if "E" in i and ("G1" in i or "G0" in i): try: - cur=float(i.split("E")[1].split(" ")[0]) + cur = float(i.split("E")[1].split(" ")[0]) except: pass elif "G92" in i and "E0" in i: @@ -108,7 +108,7 @@ def get_coordinate_value(axis, parts): return float(i[1:]) return None -def hypot3d(X1, Y1, Z1, X2=0.0, Y2=0.0, Z2=0.0): +def hypot3d(X1, Y1, Z1, X2 = 0.0, Y2 = 0.0, Z2 = 0.0): return math.hypot(X2-X1, math.hypot(Y2-Y1, Z2-Z1)) def estimate_duration(g): @@ -122,13 +122,13 @@ def estimate_duration(g): acceleration = 1500.0 #mm/s/s ASSUMING THE DEFAULT FROM SPRINTER !!!! layerduration = 0.0 layerbeginduration = 0.0 - layercount=0 + layercount = 0 #TODO: # get device caps from firmware: max speed, acceleration/axis (including extruder) # calculate the maximum move duration accounting for above ;) # print ".... estimating ...." for i in g: - i=i.split(";")[0] + i = i.split(";")[0] if "G4" in i or "G1" in i: if "G4" in i: parts = i.split(" ") @@ -140,15 +140,15 @@ def estimate_duration(g): if "G1" in i: parts = i.split(" ") x = get_coordinate_value("X", parts[1:]) - if x is None: x=lastx + if x is None: x = lastx y = get_coordinate_value("Y", parts[1:]) - if y is None: y=lasty + if y is None: y = lasty z = get_coordinate_value("Z", parts[1:]) - if (z is None) or (z /s" print "'macro' without arguments displays list of defined macros" - def subhelp_macro(self,macro_name): + def subhelp_macro(self, macro_name): if macro_name in self.macros.keys(): macro_def = self.macros[macro_name] if "\n" in macro_def: @@ -448,27 +448,27 @@ class pronsole(cmd.Cmd): else: print "Macro '"+macro_name+"' is not defined" - def set(self,var,str): + def set(self, var, str): try: - t = type(getattr(self.settings,var)) - value = self.settings._set(var,str) + t = type(getattr(self.settings, var)) + value = self.settings._set(var, str) if not self.processing_rc and not self.processing_args: - self.save_in_rc("set "+var,"set %s %s" % (var,value)) + self.save_in_rc("set "+var,"set %s %s" % (var, value)) except AttributeError: print "Unknown variable '%s'" % var except ValueError, ve: - print "Bad value for variable '%s', expecting %s (%s)" % (var,repr(t)[1:-1],ve.args[0]) + print "Bad value for variable '%s', expecting %s (%s)" % (var, repr(t)[1:-1],ve.args[0]) - def do_set(self,argl): - args = argl.split(None,1) + def do_set(self, argl): + args = argl.split(None, 1) if len(args) < 1: for k in [kk for kk in dir(self.settings) if not kk.startswith("_")]: - print "%s = %s" % (k,str(getattr(self.settings,k))) + print "%s = %s" % (k, str(getattr(self.settings, k))) return - value = getattr(self.settings,args[0]) + value = getattr(self.settings, args[0]) if len(args) < 2: try: - print "%s = %s" % (args[0],getattr(self.settings,args[0])) + print "%s = %s" % (args[0],getattr(self.settings, args[0])) except AttributeError: print "Unknown variable '%s'" % args[0] return @@ -480,9 +480,9 @@ class pronsole(cmd.Cmd): print "'set' without arguments displays all variables" def complete_set(self, text, line, begidx, endidx): - if (len(line.split())==2 and line[-1] != " ") or (len(line.split())==1 and line[-1]==" "): + if (len(line.split()) == 2 and line[-1] != " ") or (len(line.split()) == 1 and line[-1]==" "): return [i for i in dir(self.settings) if not i.startswith("_") and i.startswith(text)] - elif(len(line.split())==3 or (len(line.split())==2 and line[-1]==" ")): + elif(len(line.split()) == 3 or (len(line.split()) == 2 and line[-1]==" ")): return [i for i in self.settings._tabcomplete(line.split()[1]) if i.startswith(text)] else: return [] @@ -491,10 +491,10 @@ class pronsole(cmd.Cmd): self.p.disconnect() cmd.Cmd.postloop(self) - def load_rc(self,rc_filename): - self.processing_rc=True + def load_rc(self, rc_filename): + self.processing_rc = True try: - rc=codecs.open(rc_filename,"r","utf-8") + rc = codecs.open(rc_filename,"r","utf-8") self.rc_filename = os.path.abspath(rc_filename) for rc_cmd in rc: if not rc_cmd.lstrip().startswith("#"): @@ -504,9 +504,9 @@ class pronsole(cmd.Cmd): self.end_macro() self.rc_loaded = True finally: - self.processing_rc=False + self.processing_rc = False - def load_default_rc(self,rc_filename=".pronsolerc"): + def load_default_rc(self, rc_filename = ".pronsolerc"): try: try: self.load_rc(os.path.join(os.path.expanduser("~"),rc_filename)) @@ -516,7 +516,7 @@ class pronsole(cmd.Cmd): # make sure the filename is initialized self.rc_filename = os.path.abspath(os.path.join(os.path.expanduser("~"),rc_filename)) - def save_in_rc(self,key,definition): + def save_in_rc(self, key, definition): """ Saves or updates macro or other definitions in .pronsolerc key is prefix that determines what is being defined/updated (e.g. 'macro foo') @@ -528,16 +528,16 @@ class pronsole(cmd.Cmd): Updates are made in the same file position. Additions are made to the end of the file. """ - rci,rco = None,None + rci, rco = None, None if definition != "" and not definition.endswith("\n"): definition += "\n" try: written = False if os.path.exists(self.rc_filename): import shutil - shutil.copy(self.rc_filename,self.rc_filename+"~bak") - rci=codecs.open(self.rc_filename+"~bak","r","utf-8") - rco=codecs.open(self.rc_filename,"w","utf-8") + shutil.copy(self.rc_filename, self.rc_filename+"~bak") + rci = codecs.open(self.rc_filename+"~bak","r","utf-8") + rco = codecs.open(self.rc_filename,"w","utf-8") if rci is not None: overwriting = False for rc_cmd in rci: @@ -565,31 +565,31 @@ class pronsole(cmd.Cmd): except Exception, e: print "Saving failed for",key+":",str(e) finally: - del rci,rco + del rci, rco def preloop(self): print "Welcome to the printer console! Type \"help\" for a list of available commands." cmd.Cmd.preloop(self) - def do_connect(self,l): - a=l.split() - p=self.scanserial() - port=self.settings.port + def do_connect(self, l): + a = l.split() + p = self.scanserial() + port = self.settings.port if (port == "" or port not in p) and len(p)>0: - port=p[0] - baud=self.settings.baudrate or 115200 + port = p[0] + baud = self.settings.baudrate or 115200 if(len(a)>0): - port=a[0] + port = a[0] if(len(a)>1): try: - baud=int(a[1]) + baud = int(a[1]) except: print "Bad baud value '"+a[1]+"' ignored" - if len(p)==0 and not port: + if len(p) == 0 and not port: print "No serial ports detected - please specify a port" return - if len(a)==0: - print "No port specified - connecting to %s at %dbps" % (port,baud) + if len(a) == 0: + print "No port specified - connecting to %s at %dbps" % (port, baud) if port != self.settings.port: self.settings.port = port self.save_in_rc("set port","set port %s" % port) @@ -602,28 +602,28 @@ class pronsole(cmd.Cmd): print "Connect to printer" print "connect " print "If port and baudrate are not specified, connects to first detected port at 115200bps" - ports=self.scanserial() + ports = self.scanserial() if(len(ports)): print "Available ports: ", " ".join(ports) else: print "No serial ports were automatically found." def complete_connect(self, text, line, begidx, endidx): - if (len(line.split())==2 and line[-1] != " ") or (len(line.split())==1 and line[-1]==" "): + if (len(line.split()) == 2 and line[-1] != " ") or (len(line.split()) == 1 and line[-1]==" "): return [i for i in self.scanserial() if i.startswith(text)] - elif(len(line.split())==3 or (len(line.split())==2 and line[-1]==" ")): + elif(len(line.split()) == 3 or (len(line.split()) == 2 and line[-1]==" ")): return [i for i in ["2400", "9600", "19200", "38400", "57600", "115200"] if i.startswith(text)] else: return [] - def do_disconnect(self,l): + def do_disconnect(self, l): self.p.disconnect() def help_disconnect(self): print "Disconnects from the printer" - def do_load(self,l): - if len(l)==0: + def do_load(self, l): + if len(l) == 0: print "No file name given." return print "Loading file:"+l @@ -631,14 +631,14 @@ class pronsole(cmd.Cmd): print "File not found!" return self.f=[i.replace("\n","").replace("\r","") for i in open(l)] - self.filename=l + self.filename = l print "Loaded ",l,", ",len(self.f)," lines." def complete_load(self, text, line, begidx, endidx): - s=line.split() + s = line.split() if len(s)>2: return [] - if (len(s)==1 and line[-1]==" ") or (len(s)==2 and line[-1]!=" "): + if (len(s) == 1 and line[-1]==" ") or (len(s) == 2 and line[-1]!=" "): if len(s)>1: return [i[len(s[1])-len(text):] for i in glob.glob(s[1]+"*/")+glob.glob(s[1]+"*.g*")] else: @@ -647,8 +647,8 @@ class pronsole(cmd.Cmd): def help_load(self): print "Loads a gcode file (with tab-completion)" - def do_upload(self,l): - if len(l)==0: + def do_upload(self, l): + if len(l) == 0: print "No file name given." return print "Loading file:"+l.split()[0] @@ -659,11 +659,11 @@ class pronsole(cmd.Cmd): print "Not connected to printer." return self.f=[i.replace("\n","") for i in open(l.split()[0])] - self.filename=l.split()[0] + self.filename = l.split()[0] print "Loaded ",l,", ",len(self.f)," lines." - tname="" + tname = "" if len(l.split())>1: - tname=l.split()[1] + tname = l.split()[1] else: print "please enter target name in 8.3 format." return @@ -682,8 +682,8 @@ class pronsole(cmd.Cmd): sys.stdout.flush() self.p.send_now("M29 "+tname) self.sleep(0.2) - self.p.clear=1 - self.listing=0 + self.p.clear = 1 + self.listing = 0 self.sdfiles=[] self.recvlisteners+=[self.listfiles] self.p.send_now("M20") @@ -695,16 +695,16 @@ class pronsole(cmd.Cmd): self.p.pause() self.p.send_now("M29 "+tname) time.sleep(0.2) - self.p.clear=1 + self.p.clear = 1 self.p.startprint([]) print "A partial file named ",tname," may have been written to the sd card." def complete_upload(self, text, line, begidx, endidx): - s=line.split() + s = line.split() if len(s)>2: return [] - if (len(s)==1 and line[-1]==" ") or (len(s)==2 and line[-1]!=" "): + if (len(s) == 1 and line[-1]==" ") or (len(s) == 2 and line[-1]!=" "): if len(s)>1: return [i[len(s[1])-len(text):] for i in glob.glob(s[1]+"*/")+glob.glob(s[1]+"*.g*")] else: @@ -730,10 +730,10 @@ class pronsole(cmd.Cmd): print("You can monitor the print with the monitor command.") self.p.startprint(self.f) #self.p.pause() - #self.paused=True + #self.paused = True #self.do_resume(None) - def do_pause(self,l): + def do_pause(self, l): if self.sdprinting: self.p.send_now("M25") else: @@ -742,18 +742,18 @@ class pronsole(cmd.Cmd): return self.p.pause() #self.p.connect()# This seems to work, but is not a good solution. - self.paused=True + self.paused = True #self.do_resume(None) def help_pause(self): print "Pauses a running print" - def do_resume(self,l): + def do_resume(self, l): if not self.paused: print "Not paused, unable to resume. Start a print first." return - self.paused=False + self.paused = False if self.sdprinting: self.p.send_now("M24") return @@ -766,23 +766,23 @@ class pronsole(cmd.Cmd): def emptyline(self): pass - def do_shell(self,l): + def do_shell(self, l): exec(l) - def listfiles(self,line): + def listfiles(self, line): if "Begin file list" in line: - self.listing=1 + self.listing = 1 elif "End file list" in line: - self.listing=0 + self.listing = 0 self.recvlisteners.remove(self.listfiles) elif self.listing: self.sdfiles+=[line.replace("\n","").replace("\r","").lower()] - def do_ls(self,l): + def do_ls(self, l): if not self.p.online: print "Printer is not online. Try connect to it first." return - self.listing=2 + self.listing = 2 self.sdfiles=[] self.recvlisteners+=[self.listfiles] self.p.send_now("M20") @@ -792,7 +792,7 @@ class pronsole(cmd.Cmd): def help_ls(self): print "lists files on the SD card" - def waitforsdresponse(self,l): + def waitforsdresponse(self, l): if "file.open failed" in l: print "Opening file failed." self.recvlisteners.remove(self.waitforsdresponse) @@ -802,34 +802,34 @@ class pronsole(cmd.Cmd): if "File selected" in l: print "Starting print" self.p.send_now("M24") - self.sdprinting=1 + self.sdprinting = 1 #self.recvlisteners.remove(self.waitforsdresponse) return if "Done printing file" in l: print l - self.sdprinting=0 + self.sdprinting = 0 self.recvlisteners.remove(self.waitforsdresponse) return if "SD printing byte" in l: #M27 handler try: - resp=l.split() - vals=resp[-1].split("/") - self.percentdone=100.0*int(vals[0])/int(vals[1]) + resp = l.split() + vals = resp[-1].split("/") + self.percentdone = 100.0*int(vals[0])/int(vals[1]) except: pass - def do_reset(self,l): + def do_reset(self, l): self.p.reset() def help_reset(self): print "Resets the printer." - def do_sdprint(self,l): + def do_sdprint(self, l): if not self.p.online: print "Printer is not online. Try connect to it first." return - self.listing=2 + self.listing = 2 self.sdfiles=[] self.recvlisteners+=[self.listfiles] self.p.send_now("M20") @@ -849,17 +849,17 @@ class pronsole(cmd.Cmd): def complete_sdprint(self, text, line, begidx, endidx): if self.sdfiles==[] and self.p.online: - self.listing=2 + self.listing = 2 self.recvlisteners+=[self.listfiles] self.p.send_now("M20") time.sleep(0.5) - if (len(line.split())==2 and line[-1] != " ") or (len(line.split())==1 and line[-1]==" "): + if (len(line.split()) == 2 and line[-1] != " ") or (len(line.split()) == 1 and line[-1]==" "): return [i for i in self.sdfiles if i.startswith(text)] - def recvcb(self,l): + def recvcb(self, l): if "T:" in l: - self.tempreadings=l - tstring=l.rstrip() + self.tempreadings = l + tstring = l.rstrip() if(tstring!="ok" and not tstring.startswith("ok T") and not tstring.startswith("T:") and not self.listing and not self.monitoring): print tstring sys.stdout.write(self.prompt) @@ -871,7 +871,7 @@ class pronsole(cmd.Cmd): print "Executes a python command. Example:" print "! os.listdir('.')" - def default(self,l): + def default(self, l): if(l[0] in self.commandprefixes.upper()): if(self.p and self.p.online): print "SENDING:"+l @@ -887,16 +887,16 @@ class pronsole(cmd.Cmd): print "Printer is not online." return else: - cmd.Cmd.default(self,l) + cmd.Cmd.default(self, l) def help_help(self): self.do_help("") - def tempcb(self,l): + def tempcb(self, l): if "T:" in l: print l.replace("\r","").replace("T","Hotend").replace("B","Bed").replace("\n","").replace("ok ","") - def do_gettemp(self,l): + def do_gettemp(self, l): if self.p.online: self.recvlisteners+=[self.tempcb] self.p.send_now("M105") @@ -906,12 +906,12 @@ class pronsole(cmd.Cmd): def help_gettemp(self): print "Read the extruder and bed temperature." - def do_settemp(self,l): + def do_settemp(self, l): try: - l=l.lower().replace(",",".") + l = l.lower().replace(",",".") for i in self.temps.keys(): - l=l.replace(i,self.temps[i]) - f=float(l) + l = l.replace(i, self.temps[i]) + f = float(l) if f>=0: if self.p.online: self.p.send_now("M104 S"+l) @@ -929,15 +929,15 @@ class pronsole(cmd.Cmd): print ", ".join([i+"("+self.temps[i]+")" for i in self.temps.keys()]) def complete_settemp(self, text, line, begidx, endidx): - if (len(line.split())==2 and line[-1] != " ") or (len(line.split())==1 and line[-1]==" "): + if (len(line.split()) == 2 and line[-1] != " ") or (len(line.split()) == 1 and line[-1]==" "): return [i for i in self.temps.keys() if i.startswith(text)] - def do_bedtemp(self,l): + def do_bedtemp(self, l): try: - l=l.lower().replace(",",".") + l = l.lower().replace(",",".") for i in self.bedtemps.keys(): - l=l.replace(i,self.bedtemps[i]) - f=float(l) + l = l.replace(i, self.bedtemps[i]) + f = float(l) if f>=0: if self.p.online: self.p.send_now("M140 S"+l) @@ -955,10 +955,10 @@ class pronsole(cmd.Cmd): print ", ".join([i+"("+self.bedtemps[i]+")" for i in self.bedtemps.keys()]) def complete_bedtemp(self, text, line, begidx, endidx): - if (len(line.split())==2 and line[-1] != " ") or (len(line.split())==1 and line[-1]==" "): + if (len(line.split()) == 2 and line[-1] != " ") or (len(line.split()) == 1 and line[-1]==" "): return [i for i in self.bedtemps.keys() if i.startswith(text)] - def do_move(self,l): + def do_move(self, l): if(len(l.split())<2): print "No move specified." return @@ -968,30 +968,30 @@ class pronsole(cmd.Cmd): if not self.p.online: print "Printer is not online. Unable to move." return - l=l.split() + l = l.split() if(l[0].lower()=="x"): - feed=self.settings.xy_feedrate - axis="X" + feed = self.settings.xy_feedrate + axis = "X" elif(l[0].lower()=="y"): - feed=self.settings.xy_feedrate - axis="Y" + feed = self.settings.xy_feedrate + axis = "Y" elif(l[0].lower()=="z"): - feed=self.settings.z_feedrate - axis="Z" + feed = self.settings.z_feedrate + axis = "Z" elif(l[0].lower()=="e"): - feed=self.settings.e_feedrate - axis="E" + feed = self.settings.e_feedrate + axis = "E" else: print "Unknown axis." return - dist=0 + dist = 0 try: - dist=float(l[1]) + dist = float(l[1]) except: print "Invalid distance" return try: - feed=int(l[2]) + feed = int(l[2]) except: pass self.p.send_now("G91") @@ -1006,42 +1006,42 @@ class pronsole(cmd.Cmd): print "Common amounts are in the tabcomplete list." def complete_move(self, text, line, begidx, endidx): - if (len(line.split())==2 and line[-1] != " ") or (len(line.split())==1 and line[-1]==" "): + if (len(line.split()) == 2 and line[-1] != " ") or (len(line.split()) == 1 and line[-1]==" "): return [i for i in ["X ","Y ","Z ","E "] if i.lower().startswith(text)] - elif(len(line.split())==3 or (len(line.split())==2 and line[-1]==" ")): - base=line.split()[-1] - rlen=0 + elif(len(line.split()) == 3 or (len(line.split()) == 2 and line[-1]==" ")): + base = line.split()[-1] + rlen = 0 if base.startswith("-"): - rlen=1 + rlen = 1 if line[-1]==" ": - base="" + base = "" return [i[rlen:] for i in ["-100","-10","-1","-0.1","100","10","1","0.1","-50","-5","-0.5","50","5","0.5","-200","-20","-2","-0.2","200","20","2","0.2"] if i.startswith(base)] else: return [] - def do_extrude(self,l,override=None,overridefeed=300): - length=5#default extrusion length - feed=self.settings.e_feedrate#default speed + def do_extrude(self, l,override = None, overridefeed = 300): + length = 5#default extrusion length + feed = self.settings.e_feedrate#default speed if not self.p.online: print "Printer is not online. Unable to move." return if self.p.printing: print "Printer is currently printing. Please pause the print before you issue manual commands." return - ls=l.split() + ls = l.split() if len(ls): try: - length=float(ls[0]) + length = float(ls[0]) except: print "Invalid length given." if len(ls)>1: try: - feed=int(ls[1]) + feed = int(ls[1]) except: print "Invalid speed given." if override is not None: - length=override - feed=overridefeed + length = override + feed = overridefeed if length > 0: print "Extruding %fmm of filament."%(length,) elif length <0: @@ -1060,26 +1060,26 @@ class pronsole(cmd.Cmd): print "extrude 10 210 - extrudes 10mm of filament at 210mm/min (3.5mm/s)" def do_reverse(self, l): - length=5#default extrusion length - feed=self.settings.e_feedrate#default speed + length = 5#default extrusion length + feed = self.settings.e_feedrate#default speed if not self.p.online: print "Printer is not online. Unable to move." return if self.p.printing: print "Printer is currently printing. Please pause the print before you issue manual commands." return - ls=l.split() + ls = l.split() if len(ls): try: - length=float(ls[0]) + length = float(ls[0]) except: print "Invalid length given." if len(ls)>1: try: - feed=int(ls[1]) + feed = int(ls[1]) except: print "Invalid speed given." - self.do_extrude("",length*-1.0,feed) + self.do_extrude("",length*-1.0, feed) def help_reverse(self): print "Reverses the extruder, 5mm by default, or the number of mm given as a parameter" @@ -1088,7 +1088,7 @@ class pronsole(cmd.Cmd): print "reverse 10 210 - extrudes 10mm of filament at 210mm/min (3.5mm/s)" print "reverse -5 - EXTRUDES 5mm of filament at 300mm/min (5mm/s)" - def do_exit(self,l): + def do_exit(self, l): print "Disconnecting from printer..." self.p.disconnect() print "Exiting program. Goodbye!" @@ -1097,19 +1097,19 @@ class pronsole(cmd.Cmd): def help_exit(self): print "Disconnects from the printer and exits the program." - def do_monitor(self,l): - interval=5 + def do_monitor(self, l): + interval = 5 if not self.p.online: print "Printer is not online. Please connect first." return print "Monitoring printer, use ^C to interrupt." if len(l): try: - interval=float(l) + interval = float(l) except: print "Invalid period given." print "Updating values every %f seconds."%(interval,) - self.monitoring=1 + self.monitoring = 1 try: while(1): self.p.send_now("M105") @@ -1126,24 +1126,24 @@ class pronsole(cmd.Cmd): except: print "Done monitoring." pass - self.monitoring=0 + self.monitoring = 0 def help_monitor(self): print "Monitor a machine's temperatures and an SD print's status." print "monitor - Reports temperature and SD print status (if SD printing) every 5 seconds" print "monitor 2 - Reports temperature and SD print status (if SD printing) every 2 seconds" - def expandcommand(self,c): + def expandcommand(self, c): return c.replace("$python",sys.executable) - def do_skein(self,l): - l=l.split() - if len(l)==0: + def do_skein(self, l): + l = l.split() + if len(l) == 0: print "No file name given." return - settings=0 + settings = 0 if(l[0]=="set"): - settings=1 + settings = 1 else: print "Skeining file:"+l[0] if not(os.path.exists(l[0])): @@ -1162,14 +1162,14 @@ class pronsole(cmd.Cmd): subprocess.call(params) print "Loading sliced file." self.do_load(l[0].replace(".stl","_export.gcode")) - except Exception,e: + except Exception, e: print "Skeinforge execution failed: ",e def complete_skein(self, text, line, begidx, endidx): - s=line.split() + s = line.split() if len(s)>2: return [] - if (len(s)==1 and line[-1]==" ") or (len(s)==2 and line[-1]!=" "): + if (len(s) == 1 and line[-1]==" ") or (len(s) == 2 and line[-1]!=" "): if len(s)>1: return [i[len(s[1])-len(text):] for i in glob.glob(s[1]+"*/")+glob.glob(s[1]+"*.stl")] else: @@ -1182,7 +1182,7 @@ class pronsole(cmd.Cmd): print "skein set - adjust slicer settings" - def do_home(self,l): + def do_home(self, l): if not self.p.online: print "Printer is not online. Unable to move." return @@ -1209,11 +1209,11 @@ class pronsole(cmd.Cmd): print "home e - set extruder position to zero (Using G92)" print "home xyze - homes all axes and zeroes the extruder (Using G28 and G92)" - def parse_cmdline(self,args): + def parse_cmdline(self, args): import getopt - opts,args = getopt.getopt(args, "c:e:hw", ["conf=","config=","help","web","web-config=", "web-auth-config="]) - for o,a in opts: - #print repr((o,a)) + opts, args = getopt.getopt(args, "c:e:hw", ["conf = ","config = ","help","web","web-config = ", "web-auth-config = "]) + for o, a in opts: + #print repr((o, a)) if o in ("-c","--conf","--config"): self.load_rc(a) elif o in ("-w","--web"): @@ -1231,15 +1231,15 @@ class pronsole(cmd.Cmd): sys.exit() if not self.rc_loaded: self.load_default_rc() - for o,a in opts: + for o, a in opts: if o == "-e": self.processing_args = True self.onecmd(a) self.processing_args = False -if __name__=="__main__": +if __name__ == "__main__": - interp=pronsole() + interp = pronsole() interp.parse_cmdline(sys.argv[1:]) try: interp.cmdloop() diff --git a/pronterface.py b/pronterface.py index 3fb73d2..06fd5ae 100755 --- a/pronterface.py +++ b/pronterface.py @@ -29,14 +29,14 @@ import sys, glob, time, datetime, threading, traceback, cStringIO, subprocess from printrun.pronterface_widgets import * -StringIO=cStringIO +StringIO = cStringIO -winsize=(800,500) -layerindex=0 +winsize = (800, 500) +layerindex = 0 global buttonSize buttonSize = (70, 25) # Define sizes for the buttons on top rows -if os.name=="nt": - winsize=(800,530) +if os.name == "nt": + winsize = (800, 530) try: import _winreg except: @@ -66,7 +66,7 @@ class Tee(object): def __init__(self, target): self.stdout = sys.stdout sys.stdout = self - self.target=target + self.target = target def __del__(self): sys.stdout = self.stdout def write(self, data): @@ -79,10 +79,10 @@ class Tee(object): self.stdout.flush() -class PronterWindow(wx.Frame,pronsole.pronsole): - def __init__(self, filename=None,size=winsize): +class PronterWindow(wx.Frame, pronsole.pronsole): + def __init__(self, filename = None, size = winsize): pronsole.pronsole.__init__(self) - self.settings.build_dimensions = '200x200x100+0+0+0' #default build dimensions are 200x200x100 with 0,0,0 in the corner of the bed + self.settings.build_dimensions = '200x200x100+0+0+0' #default build dimensions are 200x200x100 with 0, 0, 0 in the corner of the bed self.settings.last_bed_temperature = 0.0 self.settings.last_file_path = "" self.settings.last_temperature = 0.0 @@ -90,7 +90,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.settings.preview_grid_step1 = 10. self.settings.preview_grid_step2 = 50. self.settings.bgcolor = "#FFFFFF" - self.helpdict["build_dimensions"] = _("Dimensions of Build Platform\n & optional offset of origin\n\nExamples:\n XXXxYYY\n XXX,YYY,ZZZ\n XXXxYYYxZZZ+OffX+OffY+OffZ") + self.helpdict["build_dimensions"] = _("Dimensions of Build Platform\n & optional offset of origin\n\nExamples:\n XXXxYYY\n XXX, YYY, ZZZ\n XXXxYYYxZZZ+OffX+OffY+OffZ") self.helpdict["last_bed_temperature"] = _("Last Set Temperature for the Heated Print Bed") self.helpdict["last_file_path"] = _("Folder of last opened file") self.helpdict["last_temperature"] = _("Last Temperature of the Hot End") @@ -98,31 +98,31 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.helpdict["preview_grid_step1"] = _("Fine Grid Spacing (default: 10)") self.helpdict["preview_grid_step2"] = _("Coarse Grid Spacing (default: 50)") self.helpdict["bgcolor"] = _("Pronterface background color (default: #FFFFFF)") - self.filename=filename + self.filename = filename os.putenv("UBUNTU_MENUPROXY","0") - wx.Frame.__init__(self,None,title=_("Printer Interface"),size=size); + wx.Frame.__init__(self, None, title = _("Printer Interface"),size = size); self.SetIcon(wx.Icon(pixmapfile("P-face.ico"),wx.BITMAP_TYPE_ICO)) - self.panel=wx.Panel(self,-1,size=size) + self.panel = wx.Panel(self,-1, size = size) - self.statuscheck=False - self.status_thread=None + self.statuscheck = False + self.status_thread = None self.capture_skip={} - self.capture_skip_newline=False - self.tempreport="" - self.monitor=0 - self.f=None - self.skeinp=None - self.monitor_interval=3 - self.paused=False - self.sentlines=Queue.Queue(30) - xcol=(245,245,108) - ycol=(180,180,255) - zcol=(180,255,180) + self.capture_skip_newline = False + self.tempreport = "" + self.monitor = 0 + self.f = None + self.skeinp = None + self.monitor_interval = 3 + self.paused = False + self.sentlines = Queue.Queue(30) + xcol = (245, 245, 108) + ycol = (180, 180, 255) + zcol = (180, 255, 180) self.cpbuttons=[ - [_("Motors off"),("M84"),None,(250,250,250),0, _("Switch all motors off")], - [_("Check temp"),("M105"),(2,5),(225,200,200),(1,1), _("Check current hotend temperature")], - [_("Extrude"),("extrude"),(4,0),(225,200,200),(1,2), _("Advance extruder by set length")], - [_("Reverse"),("reverse"),(5,0),(225,200,200),(1,2), _("Reverse extruder by set length")], + [_("Motors off"),("M84"),None,(250, 250, 250),0, _("Switch all motors off")], + [_("Check temp"),("M105"),(2, 5),(225, 200, 200),(1, 1), _("Check current hotend temperature")], + [_("Extrude"),("extrude"),(4, 0),(225, 200, 200),(1, 2), _("Advance extruder by set length")], + [_("Reverse"),("reverse"),(5, 0),(225, 200, 200),(1, 2), _("Reverse extruder by set length")], ] self.custombuttons=[] self.btndict={} @@ -137,12 +137,12 @@ class PronterWindow(wx.Frame,pronsole.pronsole): try: self.custombuttons = customdict["btns"] for n in xrange(len(self.custombuttons)): - self.cbutton_save(n,self.custombuttons[n]) + self.cbutton_save(n, self.custombuttons[n]) os.rename("custombtn.txt","custombtn.old") - rco=open("custombtn.txt","w") + rco = open("custombtn.txt","w") rco.write(_("# I moved all your custom buttons into .pronsolerc.\n# Please don't add them here any more.\n# Backup of your old buttons is in custombtn.old\n")) rco.close() - except IOError,x: + except IOError, x: print str(x) else: print _("Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc") @@ -152,30 +152,30 @@ class PronterWindow(wx.Frame,pronsole.pronsole): pass self.popmenu() self.popwindow() - self.t=Tee(self.catchprint) - self.stdout=sys.stdout - self.skeining=0 - self.mini=False - self.p.sendcb=self.sentcb - self.p.startcb=self.startcb - self.p.endcb=self.endcb - self.starttime=0 - self.extra_print_time=0 - self.curlayer=0 - self.cur_button=None + self.t = Tee(self.catchprint) + self.stdout = sys.stdout + self.skeining = 0 + self.mini = False + self.p.sendcb = self.sentcb + self.p.startcb = self.startcb + self.p.endcb = self.endcb + self.starttime = 0 + self.extra_print_time = 0 + self.curlayer = 0 + self.cur_button = None self.predisconnect_mainqueue = None self.predisconnect_queueindex = None self.predisconnect_layer = None - self.hsetpoint=0.0 - self.bsetpoint=0.0 - self.webInterface=None + self.hsetpoint = 0.0 + self.bsetpoint = 0.0 + self.webInterface = None if self.webrequested: try : import cherrypy from printrun import webinterface try: - self.webInterface=webinterface.WebInterface(self) - self.webThread=threading.Thread(target=webinterface.StartWebInterfaceThread, args=(self.webInterface, )) + self.webInterface = webinterface.WebInterface(self) + self.webThread = threading.Thread(target = webinterface.StartWebInterfaceThread, args = (self.webInterface, )) self.webThread.start() except: print _("Failed to start web interface") @@ -185,29 +185,29 @@ class PronterWindow(wx.Frame,pronsole.pronsole): print _("CherryPy is not installed. Web Interface Disabled.") def startcb(self): - self.starttime=time.time() + self.starttime = time.time() print "Print Started at: " + format_time(self.starttime) def endcb(self): - if(self.p.queueindex==0): + if(self.p.queueindex == 0): print "Print ended at: " + format_time(time.time()) print_duration = int(time.time () - self.starttime + self.extra_print_time) print "and took: " + format_duration(print_duration) wx.CallAfter(self.pausebtn.Disable) - wx.CallAfter(self.printbtn.SetLabel,_("Print")) + wx.CallAfter(self.printbtn.SetLabel, _("Print")) param = self.settings.final_command if not param: return import shlex pararray=[i.replace("$s",str(self.filename)).replace("$t", format_duration(print_duration)).encode() for i in shlex.split(param.replace("\\","\\\\").encode())] - self.finalp=subprocess.Popen(pararray,stderr=subprocess.STDOUT,stdout=subprocess.PIPE) + self.finalp = subprocess.Popen(pararray, stderr = subprocess.STDOUT, stdout = subprocess.PIPE) def online(self): print _("Printer is now online.") self.connectbtn.SetLabel(_("Disconnect")) self.connectbtn.SetToolTip(wx.ToolTip("Disconnect from the printer")) - self.connectbtn.Bind(wx.EVT_BUTTON,self.disconnect) + self.connectbtn.Bind(wx.EVT_BUTTON, self.disconnect) for i in self.printerControls: wx.CallAfter(i.Enable) @@ -234,8 +234,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.sentlines.put_nowait(line) except: pass - #threading.Thread(target=self.gviz.addgcode,args=(line,1)).start() - #self.gwindow.p.addgcode(line,hilight=1) + #threading.Thread(target = self.gviz.addgcode, args = (line, 1)).start() + #self.gwindow.p.addgcode(line, hilight = 1) if "M104" in line or "M109" in line: if "S" in line: try: @@ -273,7 +273,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): try: if not l.__class__ in (str, unicode) or not len(l): l = str(- float(self.edist.GetValue())) - pronsole.pronsole.do_extrude(self,l) + pronsole.pronsole.do_extrude(self, l) except: pass @@ -373,7 +373,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): pronsole.pronsole.delete_macro(self, macro_name) self.update_macros_menu() - def start_macro(self, macro_name, old_macro_definition=""): + def start_macro(self, macro_name, old_macro_definition = ""): if not self.processing_rc: def cb(definition): if len(definition.strip()) == 0: @@ -468,7 +468,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): panel = wx.Panel(dialog, -1) vbox = wx.BoxSizer(wx.VERTICAL) wx.StaticText(panel, -1, _("Macro name:"), (8, 14)) - dialog.namectrl = wx.TextCtrl(panel, -1, '', (110, 8), size=(130, 24), style = wx.TE_PROCESS_ENTER) + dialog.namectrl = wx.TextCtrl(panel, -1, '', (110, 8), size = (130, 24), style = wx.TE_PROCESS_ENTER) hbox = wx.BoxSizer(wx.HORIZONTAL) okb = wx.Button(dialog, wx.ID_OK, _("Ok"), size = (60, 24)) dialog.Bind(wx.EVT_TEXT_ENTER, lambda e:dialog.EndModal(wx.ID_OK), dialog.namectrl) @@ -501,7 +501,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): return else: old_def = "" - self.start_macro(macro,old_def) + self.start_macro(macro, old_def) return macro def update_macros_menu(self): @@ -544,22 +544,22 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #upper section contains the mini view buttons #lower section contains the rest of the window - manual controls, console, visualizations #TOP ROW: - uts=self.uppertopsizer=wx.BoxSizer(wx.HORIZONTAL) - self.rescanbtn=wx.Button(self.panel,-1,_("Port"),size=buttonSize) + uts = self.uppertopsizer = wx.BoxSizer(wx.HORIZONTAL) + self.rescanbtn = wx.Button(self.panel,-1, _("Port"),size = buttonSize) self.rescanbtn.SetToolTip(wx.ToolTip("Communication Settings\nClick to rescan ports")) - self.rescanbtn.Bind(wx.EVT_BUTTON,self.rescanports) + self.rescanbtn.Bind(wx.EVT_BUTTON, self.rescanports) - uts.Add(self.rescanbtn,0,wx.TOP|wx.LEFT,0) + uts.Add(self.rescanbtn, 0, wx.TOP|wx.LEFT, 0) self.serialport = wx.ComboBox(self.panel, -1, - choices=self.scanserial(), - style=wx.CB_DROPDOWN, size=(100, 25)) + choices = self.scanserial(), + style = wx.CB_DROPDOWN, size = (100, 25)) self.serialport.SetToolTip(wx.ToolTip("Select Port Printer is connected to")) self.rescanports() uts.Add(self.serialport) - uts.Add(wx.StaticText(self.panel,-1,"@"),0,wx.RIGHT|wx.ALIGN_CENTER,0) + uts.Add(wx.StaticText(self.panel,-1,"@"),0, wx.RIGHT|wx.ALIGN_CENTER, 0) self.baud = wx.ComboBox(self.panel, -1, choices=["2400", "9600", "19200", "38400", "57600", "115200", "250000"], - style=wx.CB_DROPDOWN, size=(100, 25)) + style = wx.CB_DROPDOWN, size = (100, 25)) self.baud.SetToolTip(wx.ToolTip("Select Baud rate for printer communication")) try: self.baud.SetValue("115200") @@ -567,164 +567,164 @@ class PronterWindow(wx.Frame,pronsole.pronsole): except: pass uts.Add(self.baud) - self.connectbtn=wx.Button(self.panel,-1,_("Connect"), size=buttonSize) + self.connectbtn = wx.Button(self.panel,-1, _("Connect"), size = buttonSize) uts.Add(self.connectbtn) self.connectbtn.SetToolTip(wx.ToolTip("Connect to the printer")) - self.connectbtn.Bind(wx.EVT_BUTTON,self.connect) - self.resetbtn=wx.Button(self.panel,-1,_("Reset"),style=wx.BU_EXACTFIT,size=(-1,buttonSize[1])) - self.resetbtn.Bind(wx.EVT_BUTTON,self.reset) + self.connectbtn.Bind(wx.EVT_BUTTON, self.connect) + self.resetbtn = wx.Button(self.panel,-1, _("Reset"),style = wx.BU_EXACTFIT, size = (-1, buttonSize[1])) + self.resetbtn.Bind(wx.EVT_BUTTON, self.reset) self.resetbtn.SetToolTip(wx.ToolTip("Reset the printer")) uts.Add(self.resetbtn) - #self.minibtn=wx.Button(self.panel,-1,_("Mini mode"),style=wx.BU_EXACTFIT) - #self.minibtn.Bind(wx.EVT_BUTTON,self.toggleview) + #self.minibtn = wx.Button(self.panel,-1, _("Mini mode"),style = wx.BU_EXACTFIT) + #self.minibtn.Bind(wx.EVT_BUTTON, self.toggleview) #uts.Add((25,-1)) - #uts.Add((15,-1),flag=wx.EXPAND) - #uts.Add(self.minibtn,0,wx.ALIGN_CENTER) + #uts.Add((15,-1),flag = wx.EXPAND) + #uts.Add(self.minibtn, 0, wx.ALIGN_CENTER) #SECOND ROW - ubs=self.upperbottomsizer=uts#wx.BoxSizer(wx.HORIZONTAL) + ubs = self.upperbottomsizer = uts#wx.BoxSizer(wx.HORIZONTAL) - self.loadbtn=wx.Button(self.panel,-1,_("Load file"),style=wx.BU_EXACTFIT,size=(-1,buttonSize[1])) - self.loadbtn.Bind(wx.EVT_BUTTON,self.loadfile) + self.loadbtn = wx.Button(self.panel,-1, _("Load file"),style = wx.BU_EXACTFIT, size = (-1, buttonSize[1])) + self.loadbtn.Bind(wx.EVT_BUTTON, self.loadfile) self.loadbtn.SetToolTip(wx.ToolTip("Load a 3D model file")) ubs.Add(self.loadbtn) - self.platebtn=wx.Button(self.panel,-1,_("Compose"),style=wx.BU_EXACTFIT,size=(-1,buttonSize[1])) - self.platebtn.Bind(wx.EVT_BUTTON,self.plate) + self.platebtn = wx.Button(self.panel,-1, _("Compose"),style = wx.BU_EXACTFIT, size = (-1, buttonSize[1])) + self.platebtn.Bind(wx.EVT_BUTTON, self.plate) self.platebtn.SetToolTip(wx.ToolTip("Simple Plater System")) #self.printerControls.append(self.uploadbtn) ubs.Add(self.platebtn) - self.sdbtn=wx.Button(self.panel,-1,_("SD"),style=wx.BU_EXACTFIT,size=(-1,buttonSize[1])) - self.sdbtn.Bind(wx.EVT_BUTTON,self.sdmenu) + self.sdbtn = wx.Button(self.panel,-1, _("SD"),style = wx.BU_EXACTFIT, size = (-1, buttonSize[1])) + self.sdbtn.Bind(wx.EVT_BUTTON, self.sdmenu) self.sdbtn.SetToolTip(wx.ToolTip("SD Card Printing")) self.printerControls.append(self.sdbtn) ubs.Add(self.sdbtn) - self.printbtn=wx.Button(self.panel,-1,_("Print"), size=buttonSize) - self.printbtn.Bind(wx.EVT_BUTTON,self.printfile) + self.printbtn = wx.Button(self.panel,-1, _("Print"), size = buttonSize) + self.printbtn.Bind(wx.EVT_BUTTON, self.printfile) self.printbtn.SetToolTip(wx.ToolTip("Start Printing Loaded File")) self.printbtn.Disable() ubs.Add(self.printbtn) - self.pausebtn=wx.Button(self.panel,-1,_("Pause"), size=buttonSize) + self.pausebtn = wx.Button(self.panel,-1, _("Pause"), size = buttonSize) self.pausebtn.SetToolTip(wx.ToolTip("Pause Current Print")) - self.pausebtn.Bind(wx.EVT_BUTTON,self.pause) + self.pausebtn.Bind(wx.EVT_BUTTON, self.pause) ubs.Add(self.pausebtn) - self.recoverbtn=wx.Button(self.panel,-1,_("Recover"), size=buttonSize) + self.recoverbtn = wx.Button(self.panel,-1, _("Recover"), size = buttonSize) self.recoverbtn.SetToolTip(wx.ToolTip("Recover previous Print")) - self.recoverbtn.Bind(wx.EVT_BUTTON,self.recover) + self.recoverbtn.Bind(wx.EVT_BUTTON, self.recover) ubs.Add(self.recoverbtn) #Right full view - lrs=self.lowerrsizer=wx.BoxSizer(wx.VERTICAL) - self.logbox=wx.TextCtrl(self.panel,style = wx.TE_MULTILINE,size=(350,-1)) + lrs = self.lowerrsizer = wx.BoxSizer(wx.VERTICAL) + self.logbox = wx.TextCtrl(self.panel, style = wx.TE_MULTILINE, size = (350,-1)) self.logbox.SetEditable(0) - lrs.Add(self.logbox,1,wx.EXPAND) - lbrs=wx.BoxSizer(wx.HORIZONTAL) - self.commandbox=wx.TextCtrl(self.panel,style = wx.TE_PROCESS_ENTER) + lrs.Add(self.logbox, 1, wx.EXPAND) + lbrs = wx.BoxSizer(wx.HORIZONTAL) + self.commandbox = wx.TextCtrl(self.panel, style = wx.TE_PROCESS_ENTER) self.commandbox.SetToolTip(wx.ToolTip("Send commands to printer\n(Type 'help' for simple\nhelp function)")) - self.commandbox.Bind(wx.EVT_TEXT_ENTER,self.sendline) + self.commandbox.Bind(wx.EVT_TEXT_ENTER, self.sendline) self.commandbox.Bind(wx.EVT_CHAR, self.cbkey) self.commandbox.history=[u""] - self.commandbox.histindex=1 + self.commandbox.histindex = 1 #self.printerControls.append(self.commandbox) - lbrs.Add(self.commandbox,1) - self.sendbtn=wx.Button(self.panel,-1,_("Send"),style=wx.BU_EXACTFIT) + lbrs.Add(self.commandbox, 1) + self.sendbtn = wx.Button(self.panel,-1, _("Send"),style = wx.BU_EXACTFIT) self.sendbtn.SetToolTip(wx.ToolTip("Send Command to Printer")) - self.sendbtn.Bind(wx.EVT_BUTTON,self.sendline) + self.sendbtn.Bind(wx.EVT_BUTTON, self.sendline) #self.printerControls.append(self.sendbtn) lbrs.Add(self.sendbtn) - lrs.Add(lbrs,0,wx.EXPAND) + lrs.Add(lbrs, 0, wx.EXPAND) #left pane - lls=self.lowerlsizer=wx.GridBagSizer() - llts=wx.BoxSizer(wx.HORIZONTAL) - #lls.Add(wx.StaticText(self.panel,-1,_("mm/min")),pos=(0,4),span=(1,4)) - lls.Add(llts,pos=(0,0),span=(1,9)) - #lls.Add((200,375)) + lls = self.lowerlsizer = wx.GridBagSizer() + llts = wx.BoxSizer(wx.HORIZONTAL) + #lls.Add(wx.StaticText(self.panel,-1, _("mm/min")),pos = (0, 4),span = (1, 4)) + lls.Add(llts, pos = (0, 0),span = (1, 9)) + #lls.Add((200, 375)) - szbuttons=wx.GridBagSizer() + szbuttons = wx.GridBagSizer() self.xyb = XYButtons(self.panel, self.moveXY, self.homeButtonClicked, self.spacebarAction, self.settings.bgcolor) - szbuttons.Add(self.xyb,pos=(0,1),flag=wx.ALIGN_CENTER) + szbuttons.Add(self.xyb, pos = (0, 1),flag = wx.ALIGN_CENTER) self.zb = ZButtons(self.panel, self.moveZ, self.settings.bgcolor) - szbuttons.Add(self.zb,pos=(0,2),flag=wx.ALIGN_CENTER) - #lls.Add(self.zb, pos=(2,6), span=(1,1), flag=wx.ALIGN_CENTER) + szbuttons.Add(self.zb, pos = (0, 2),flag = wx.ALIGN_CENTER) + #lls.Add(self.zb, pos = (2, 6), span = (1, 1), flag = wx.ALIGN_CENTER) wx.CallAfter(self.xyb.SetFocus) - lls.Add(szbuttons, pos=(1,0), span=(1,8), flag=wx.ALIGN_CENTER) + lls.Add(szbuttons, pos = (1, 0), span = (1, 8), flag = wx.ALIGN_CENTER) for i in self.cpbuttons: - btn=wx.Button(self.panel,-1,i[0],style=wx.BU_EXACTFIT) + btn = wx.Button(self.panel,-1, i[0],style = wx.BU_EXACTFIT) btn.SetToolTip(wx.ToolTip(i[5])) btn.SetBackgroundColour(i[3]) btn.SetForegroundColour("black") - btn.properties=i - btn.Bind(wx.EVT_BUTTON,self.procbutton) + btn.properties = i + btn.Bind(wx.EVT_BUTTON, self.procbutton) self.btndict[i[1]]=btn self.printerControls.append(btn) if(i[2]==None): if(i[4]==0): llts.Add(btn) else: - lls.Add(btn,pos=i[2],span=i[4]) + lls.Add(btn, pos = i[2],span = i[4]) - self.xyfeedc=wx.SpinCtrl(self.panel,-1,str(self.settings.xy_feedrate),min=0,max=50000,size=(70,-1)) + self.xyfeedc = wx.SpinCtrl(self.panel,-1, str(self.settings.xy_feedrate),min = 0, max = 50000, size = (70,-1)) self.xyfeedc.SetToolTip(wx.ToolTip("Set Maximum Speed for X & Y axes (mm/min)")) - llts.Add(wx.StaticText(self.panel,-1,_("XY:")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) + llts.Add(wx.StaticText(self.panel,-1, _("XY:")), flag = wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) llts.Add(self.xyfeedc) - llts.Add(wx.StaticText(self.panel,-1,_("mm/min Z:")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) - self.zfeedc=wx.SpinCtrl(self.panel,-1,str(self.settings.z_feedrate),min=0,max=50000,size=(70,-1)) + llts.Add(wx.StaticText(self.panel,-1, _("mm/min Z:")), flag = wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) + self.zfeedc = wx.SpinCtrl(self.panel,-1, str(self.settings.z_feedrate),min = 0, max = 50000, size = (70,-1)) self.zfeedc.SetToolTip(wx.ToolTip("Set Maximum Speed for Z axis (mm/min)")) llts.Add(self.zfeedc,) - self.monitorbox=wx.CheckBox(self.panel,-1,_("Watch")) + self.monitorbox = wx.CheckBox(self.panel,-1, _("Watch")) self.monitorbox.SetToolTip(wx.ToolTip("Monitor Temperatures in Graph")) - lls.Add(self.monitorbox,pos=(2,6)) - self.monitorbox.Bind(wx.EVT_CHECKBOX,self.setmonitor) + lls.Add(self.monitorbox, pos = (2, 6)) + self.monitorbox.Bind(wx.EVT_CHECKBOX, self.setmonitor) - lls.Add(wx.StaticText(self.panel,-1,_("Heat:")),pos=(2,0),span=(1,1),flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) - htemp_choices=[self.temps[i]+" ("+i+")" for i in sorted(self.temps.keys(),key=lambda x:self.temps[x])] + lls.Add(wx.StaticText(self.panel,-1, _("Heat:")),pos = (2, 0),span = (1, 1),flag = wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) + htemp_choices=[self.temps[i]+" ("+i+")" for i in sorted(self.temps.keys(),key = lambda x:self.temps[x])] - self.settoff=wx.Button(self.panel,-1,_("Off"),size=(36,-1),style=wx.BU_EXACTFIT) + self.settoff = wx.Button(self.panel,-1, _("Off"),size = (36,-1),style = wx.BU_EXACTFIT) self.settoff.SetToolTip(wx.ToolTip("Switch Hotend Off")) - self.settoff.Bind(wx.EVT_BUTTON,lambda e:self.do_settemp("off")) + self.settoff.Bind(wx.EVT_BUTTON, lambda e:self.do_settemp("off")) self.printerControls.append(self.settoff) - lls.Add(self.settoff,pos=(2,1),span=(1,1)) + lls.Add(self.settoff, pos = (2, 1),span = (1, 1)) - if self.settings.last_temperature not in map(float,self.temps.values()): + if self.settings.last_temperature not in map(float, self.temps.values()): htemp_choices = [str(self.settings.last_temperature)] + htemp_choices - self.htemp=wx.ComboBox(self.panel, -1, - choices=htemp_choices,style=wx.CB_DROPDOWN, size=(70,-1)) + self.htemp = wx.ComboBox(self.panel, -1, + choices = htemp_choices, style = wx.CB_DROPDOWN, size = (70,-1)) self.htemp.SetToolTip(wx.ToolTip("Select Temperature for Hotend")) - self.htemp.Bind(wx.EVT_COMBOBOX,self.htemp_change) + self.htemp.Bind(wx.EVT_COMBOBOX, self.htemp_change) - lls.Add(self.htemp,pos=(2,2),span=(1,2)) - self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),style=wx.BU_EXACTFIT) + lls.Add(self.htemp, pos = (2, 2),span = (1, 2)) + self.settbtn = wx.Button(self.panel,-1, _("Set"),size = (38,-1),style = wx.BU_EXACTFIT) self.settbtn.SetToolTip(wx.ToolTip("Switch Hotend On")) - self.settbtn.Bind(wx.EVT_BUTTON,self.do_settemp) + self.settbtn.Bind(wx.EVT_BUTTON, self.do_settemp) self.printerControls.append(self.settbtn) - lls.Add(self.settbtn,pos=(2,4),span=(1,1)) + lls.Add(self.settbtn, pos = (2, 4),span = (1, 1)) - lls.Add(wx.StaticText(self.panel,-1,_("Bed:")),pos=(3,0),span=(1,1),flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) - btemp_choices=[self.bedtemps[i]+" ("+i+")" for i in sorted(self.bedtemps.keys(),key=lambda x:self.temps[x])] + lls.Add(wx.StaticText(self.panel,-1, _("Bed:")),pos = (3, 0),span = (1, 1),flag = wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT) + btemp_choices=[self.bedtemps[i]+" ("+i+")" for i in sorted(self.bedtemps.keys(),key = lambda x:self.temps[x])] - self.setboff=wx.Button(self.panel,-1,_("Off"),size=(36,-1),style=wx.BU_EXACTFIT) + self.setboff = wx.Button(self.panel,-1, _("Off"),size = (36,-1),style = wx.BU_EXACTFIT) self.setboff.SetToolTip(wx.ToolTip("Switch Heated Bed Off")) - self.setboff.Bind(wx.EVT_BUTTON,lambda e:self.do_bedtemp("off")) + self.setboff.Bind(wx.EVT_BUTTON, lambda e:self.do_bedtemp("off")) self.printerControls.append(self.setboff) - lls.Add(self.setboff,pos=(3,1),span=(1,1)) + lls.Add(self.setboff, pos = (3, 1),span = (1, 1)) - 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 - self.btemp=wx.ComboBox(self.panel, -1, - choices=btemp_choices,style=wx.CB_DROPDOWN, size=(70,-1)) + self.btemp = wx.ComboBox(self.panel, -1, + choices = btemp_choices, style = wx.CB_DROPDOWN, size = (70,-1)) self.btemp.SetToolTip(wx.ToolTip("Select Temperature for Heated Bed")) - self.btemp.Bind(wx.EVT_COMBOBOX,self.btemp_change) - lls.Add(self.btemp,pos=(3,2),span=(1,2)) + self.btemp.Bind(wx.EVT_COMBOBOX, self.btemp_change) + lls.Add(self.btemp, pos = (3, 2),span = (1, 2)) - self.setbbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),style=wx.BU_EXACTFIT) + self.setbbtn = wx.Button(self.panel,-1, _("Set"),size = (38,-1),style = wx.BU_EXACTFIT) self.setbbtn.SetToolTip(wx.ToolTip("Switch Heated Bed On")) - self.setbbtn.Bind(wx.EVT_BUTTON,self.do_bedtemp) + self.setbbtn.Bind(wx.EVT_BUTTON, self.do_bedtemp) self.printerControls.append(self.setbbtn) - lls.Add(self.setbbtn,pos=(3,4),span=(1,1)) + lls.Add(self.setbbtn, pos = (3, 4),span = (1, 1)) self.btemp.SetValue(str(self.settings.last_bed_temperature)) self.htemp.SetValue(str(self.settings.last_temperature)) @@ -745,81 +745,81 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if( '(' not in self.htemp.Value): self.htemp.SetValue(self.htemp.Value + ' (user)') - #lls.Add(self.btemp,pos=(4,1),span=(1,3)) - #lls.Add(self.setbbtn,pos=(4,4),span=(1,2)) - self.tempdisp=wx.StaticText(self.panel,-1,"") + #lls.Add(self.btemp, pos = (4, 1),span = (1, 3)) + #lls.Add(self.setbbtn, pos = (4, 4),span = (1, 2)) + self.tempdisp = wx.StaticText(self.panel,-1,"") - self.edist=wx.SpinCtrl(self.panel,-1,"5",min=0,max=1000,size=(60,-1)) - self.edist.SetBackgroundColour((225,200,200)) + self.edist = wx.SpinCtrl(self.panel,-1,"5",min = 0, max = 1000, size = (60,-1)) + self.edist.SetBackgroundColour((225, 200, 200)) self.edist.SetForegroundColour("black") - lls.Add(self.edist,pos=(4,2),span=(1,2)) - lls.Add(wx.StaticText(self.panel,-1,_("mm")),pos=(4,4),span=(1,1)) + lls.Add(self.edist, pos = (4, 2),span = (1, 2)) + lls.Add(wx.StaticText(self.panel,-1, _("mm")),pos = (4, 4),span = (1, 1)) self.edist.SetToolTip(wx.ToolTip("Amount to Extrude or Retract (mm)")) - self.efeedc=wx.SpinCtrl(self.panel,-1,str(self.settings.e_feedrate),min=0,max=50000,size=(60,-1)) + self.efeedc = wx.SpinCtrl(self.panel,-1, str(self.settings.e_feedrate),min = 0, max = 50000, size = (60,-1)) self.efeedc.SetToolTip(wx.ToolTip("Extrude / Retract speed (mm/min)")) - self.efeedc.SetBackgroundColour((225,200,200)) + self.efeedc.SetBackgroundColour((225, 200, 200)) self.efeedc.SetForegroundColour("black") - self.efeedc.Bind(wx.EVT_SPINCTRL,self.setfeeds) - lls.Add(self.efeedc,pos=(5,2),span=(1,2)) - lls.Add(wx.StaticText(self.panel,-1,_("mm/\nmin")),pos=(5,4),span=(1,1)) - self.xyfeedc.Bind(wx.EVT_SPINCTRL,self.setfeeds) - self.zfeedc.Bind(wx.EVT_SPINCTRL,self.setfeeds) - self.zfeedc.SetBackgroundColour((180,255,180)) + self.efeedc.Bind(wx.EVT_SPINCTRL, self.setfeeds) + lls.Add(self.efeedc, pos = (5, 2),span = (1, 2)) + lls.Add(wx.StaticText(self.panel,-1, _("mm/\nmin")),pos = (5, 4),span = (1, 1)) + self.xyfeedc.Bind(wx.EVT_SPINCTRL, self.setfeeds) + self.zfeedc.Bind(wx.EVT_SPINCTRL, self.setfeeds) + self.zfeedc.SetBackgroundColour((180, 255, 180)) self.zfeedc.SetForegroundColour("black") - # lls.Add((10,0),pos=(0,11),span=(1,1)) + # lls.Add((10, 0),pos = (0, 11),span = (1, 1)) - #self.hottgauge=TempGauge(self.panel,size=(200,24),title=_("Heater:"),maxval=230) - #lls.Add(self.hottgauge,pos=(7,0),span=(1,4)) - #self.bedtgauge=TempGauge(self.panel,size=(200,24),title=_("Bed:"),maxval=130) - #lls.Add(self.bedtgauge,pos=(8,0),span=(1,4)) + #self.hottgauge = TempGauge(self.panel, size = (200, 24),title = _("Heater:"),maxval = 230) + #lls.Add(self.hottgauge, pos = (7, 0),span = (1, 4)) + #self.bedtgauge = TempGauge(self.panel, size = (200, 24),title = _("Bed:"),maxval = 130) + #lls.Add(self.bedtgauge, pos = (8, 0),span = (1, 4)) #def scroll_setpoint(e): # if e.GetWheelRotation()>0: # self.do_settemp(str(self.hsetpoint+1)) # elif e.GetWheelRotation()<0: - # self.do_settemp(str(max(0,self.hsetpoint-1))) - #self.tgauge.Bind(wx.EVT_MOUSEWHEEL,scroll_setpoint) + # self.do_settemp(str(max(0, self.hsetpoint-1))) + #self.tgauge.Bind(wx.EVT_MOUSEWHEEL, scroll_setpoint) self.graph = Graph(self.panel, wx.ID_ANY) - lls.Add(self.graph, pos=(3,5), span=(3,3)) - lls.Add(self.tempdisp,pos=(6,0),span=(1,1)) + lls.Add(self.graph, pos = (3, 5), span = (3, 3)) + lls.Add(self.tempdisp, pos = (6, 0),span = (1, 1)) - self.gviz=gviz.gviz(self.panel,(300,300), - build_dimensions=self.build_dimensions_list, - grid=(self.settings.preview_grid_step1,self.settings.preview_grid_step2), - extrusion_width=self.settings.preview_extrusion_width) + self.gviz = gviz.gviz(self.panel,(300, 300), + build_dimensions = self.build_dimensions_list, + grid = (self.settings.preview_grid_step1, self.settings.preview_grid_step2), + extrusion_width = self.settings.preview_extrusion_width) self.gviz.SetToolTip(wx.ToolTip("Click to examine / edit\n layers of loaded file")) - self.gviz.showall=1 + self.gviz.showall = 1 try: raise "" import stlview - self.gwindow=stlview.GCFrame(None, wx.ID_ANY, 'Gcode view, shift to move view, mousewheel to set layer', size=(600,600)) + self.gwindow = stlview.GCFrame(None, wx.ID_ANY, 'Gcode view, shift to move view, mousewheel to set layer', size = (600, 600)) except: - self.gwindow=gviz.window([], - build_dimensions=self.build_dimensions_list, - grid=(self.settings.preview_grid_step1,self.settings.preview_grid_step2), - extrusion_width=self.settings.preview_extrusion_width) - self.gviz.Bind(wx.EVT_LEFT_DOWN,self.showwin) - self.gwindow.Bind(wx.EVT_CLOSE,lambda x:self.gwindow.Hide()) - vcs=wx.BoxSizer(wx.VERTICAL) - vcs.Add(self.gviz,1,flag=wx.SHAPED) - cs=self.centersizer=wx.GridBagSizer() - vcs.Add(cs,0,flag=wx.EXPAND) + self.gwindow = gviz.window([], + build_dimensions = self.build_dimensions_list, + grid = (self.settings.preview_grid_step1, self.settings.preview_grid_step2), + extrusion_width = self.settings.preview_extrusion_width) + self.gviz.Bind(wx.EVT_LEFT_DOWN, self.showwin) + self.gwindow.Bind(wx.EVT_CLOSE, lambda x:self.gwindow.Hide()) + vcs = wx.BoxSizer(wx.VERTICAL) + vcs.Add(self.gviz, 1, flag = wx.SHAPED) + cs = self.centersizer = wx.GridBagSizer() + vcs.Add(cs, 0, flag = wx.EXPAND) - self.uppersizer=wx.BoxSizer(wx.VERTICAL) + self.uppersizer = wx.BoxSizer(wx.VERTICAL) self.uppersizer.Add(self.uppertopsizer) #self.uppersizer.Add(self.upperbottomsizer) - self.lowersizer=wx.BoxSizer(wx.HORIZONTAL) + self.lowersizer = wx.BoxSizer(wx.HORIZONTAL) self.lowersizer.Add(lls) - self.lowersizer.Add(vcs,1,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL) - self.lowersizer.Add(lrs,0,wx.EXPAND) - self.topsizer=wx.BoxSizer(wx.VERTICAL) + self.lowersizer.Add(vcs, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL) + self.lowersizer.Add(lrs, 0, wx.EXPAND) + self.topsizer = wx.BoxSizer(wx.VERTICAL) self.topsizer.Add(self.uppersizer) - self.topsizer.Add(self.lowersizer,1,wx.EXPAND) + self.topsizer.Add(self.lowersizer, 1, wx.EXPAND) self.panel.SetSizer(self.topsizer) - self.status=self.CreateStatusBar() + self.status = self.CreateStatusBar() self.status.SetStatusText(_("Not connected to printer.")) - self.panel.Bind(wx.EVT_MOUSE_EVENTS,self.editbutton) + self.panel.Bind(wx.EVT_MOUSE_EVENTS, self.editbutton) self.Bind(wx.EVT_CLOSE, self.kill) self.topsizer.Layout() @@ -835,62 +835,62 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #uts.Layout() self.cbuttons_reload() - def cbkey(self,e): - if e.GetKeyCode()==wx.WXK_UP: - if self.commandbox.histindex==len(self.commandbox.history): + def cbkey(self, e): + if e.GetKeyCode() == wx.WXK_UP: + if self.commandbox.histindex == len(self.commandbox.history): self.commandbox.history+=[self.commandbox.GetValue()] #save current command if len(self.commandbox.history): - self.commandbox.histindex=(self.commandbox.histindex-1)%len(self.commandbox.history) + self.commandbox.histindex = (self.commandbox.histindex-1)%len(self.commandbox.history) self.commandbox.SetValue(self.commandbox.history[self.commandbox.histindex]) - self.commandbox.SetSelection(0,len(self.commandbox.history[self.commandbox.histindex])) - elif e.GetKeyCode()==wx.WXK_DOWN: - if self.commandbox.histindex==len(self.commandbox.history): + self.commandbox.SetSelection(0, len(self.commandbox.history[self.commandbox.histindex])) + elif e.GetKeyCode() == wx.WXK_DOWN: + if self.commandbox.histindex == len(self.commandbox.history): self.commandbox.history+=[self.commandbox.GetValue()] #save current command if len(self.commandbox.history): - self.commandbox.histindex=(self.commandbox.histindex+1)%len(self.commandbox.history) + self.commandbox.histindex = (self.commandbox.histindex+1)%len(self.commandbox.history) self.commandbox.SetValue(self.commandbox.history[self.commandbox.histindex]) - self.commandbox.SetSelection(0,len(self.commandbox.history[self.commandbox.histindex])) + self.commandbox.SetSelection(0, len(self.commandbox.history[self.commandbox.histindex])) else: e.Skip() - def plate(self,e): + def plate(self, e): import plater print "plate function activated" - plater.stlwin(size=(800,580),callback=self.platecb,parent=self).Show() + plater.stlwin(size = (800, 580),callback = self.platecb, parent = self).Show() - def platecb(self,name): + def platecb(self, name): print "plated: "+name - self.loadfile(None,name) + self.loadfile(None, name) - def sdmenu(self,e): + def sdmenu(self, e): obj = e.GetEventObject() - popupmenu=wx.Menu() - item = popupmenu.Append(-1,_("SD Upload")) + popupmenu = wx.Menu() + item = popupmenu.Append(-1, _("SD Upload")) if not self.f or not len(self.f): item.Enable(False) - self.Bind(wx.EVT_MENU,self.upload,id=item.GetId()) - item = popupmenu.Append(-1,_("SD Print")) - self.Bind(wx.EVT_MENU,self.sdprintfile,id=item.GetId()) + self.Bind(wx.EVT_MENU, self.upload, id = item.GetId()) + item = popupmenu.Append(-1, _("SD Print")) + self.Bind(wx.EVT_MENU, self.sdprintfile, id = item.GetId()) self.panel.PopupMenu(popupmenu, obj.GetPosition()) - def htemp_change(self,event): + def htemp_change(self, event): if self.hsetpoint > 0: self.do_settemp("") - wx.CallAfter(self.htemp.SetInsertionPoint,0) + wx.CallAfter(self.htemp.SetInsertionPoint, 0) - def btemp_change(self,event): + def btemp_change(self, event): if self.bsetpoint > 0: self.do_bedtemp("") - wx.CallAfter(self.btemp.SetInsertionPoint,0) + wx.CallAfter(self.btemp.SetInsertionPoint, 0) - def showwin(self,event): + def showwin(self, event): if(self.f is not None): self.gwindow.Show(True) self.gwindow.SetToolTip(wx.ToolTip("Mousewheel zooms the display\nShift / Mousewheel scrolls layers")) self.gwindow.Raise() - def setfeeds(self,e): + def setfeeds(self, e): self.feedrates_changed = True try: self.settings._set("e_feedrate",self.efeedc.GetValue()) @@ -905,16 +905,16 @@ class PronterWindow(wx.Frame,pronsole.pronsole): except: pass - def toggleview(self,e): + def toggleview(self, e): if(self.mini): - self.mini=False + self.mini = False self.topsizer.Fit(self) #self.SetSize(winsize) wx.CallAfter(self.minibtn.SetLabel, _("Mini mode")) else: - self.mini=True + self.mini = True self.uppersizer.Fit(self) #self.SetSize(winssize) @@ -922,15 +922,15 @@ class PronterWindow(wx.Frame,pronsole.pronsole): def cbuttons_reload(self): allcbs = [] - ubs=self.upperbottomsizer - cs=self.centersizer + ubs = self.upperbottomsizer + cs = self.centersizer #for item in ubs.GetChildren(): # if hasattr(item.GetWindow(),"custombutton"): - # allcbs += [(ubs,item.GetWindow())] + # allcbs += [(ubs, item.GetWindow())] for item in cs.GetChildren(): if hasattr(item.GetWindow(),"custombutton"): - allcbs += [(cs,item.GetWindow())] - for sizer,button in allcbs: + allcbs += [(cs, item.GetWindow())] + for sizer, button in allcbs: #sizer.Remove(button) button.Destroy() self.custombuttonbuttons=[] @@ -942,37 +942,37 @@ class PronterWindow(wx.Frame,pronsole.pronsole): for i in xrange(len(self.custombuttons)): btndef = self.custombuttons[i] try: - b=wx.Button(self.panel,-1,btndef[0],style=wx.BU_EXACTFIT) + b = wx.Button(self.panel,-1, btndef[0],style = wx.BU_EXACTFIT) b.SetToolTip(wx.ToolTip(_("Execute command: ")+btndef[1])) if len(btndef)>2: b.SetBackgroundColour(btndef[2]) - rr,gg,bb=b.GetBackgroundColour().Get() + rr, gg, bb = b.GetBackgroundColour().Get() if 0.3*rr+0.59*gg+0.11*bb < 60: b.SetForegroundColour("#ffffff") except: if i == newbuttonbuttonindex: - self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(19,18),style=wx.BU_EXACTFIT) - #b.SetFont(wx.Font(12,wx.FONTFAMILY_SWISS,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)) + self.newbuttonbutton = b = wx.Button(self.panel,-1,"+",size = (19, 18),style = wx.BU_EXACTFIT) + #b.SetFont(wx.Font(12, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)) b.SetForegroundColour("#4444ff") b.SetToolTip(wx.ToolTip(_("click to add new custom button"))) - b.Bind(wx.EVT_BUTTON,self.cbutton_edit) + b.Bind(wx.EVT_BUTTON, self.cbutton_edit) else: - b=wx.Button(self.panel,-1,".",size=(1,1)) - #b=wx.StaticText(self.panel,-1,"",size=(72,22),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER + b = wx.Button(self.panel,-1,".",size = (1, 1)) + #b = wx.StaticText(self.panel,-1,"",size = (72, 22),style = wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER b.Disable() #continue - b.custombutton=i - b.properties=btndef + b.custombutton = i + b.properties = btndef if btndef is not None: - b.Bind(wx.EVT_BUTTON,self.procbutton) - b.Bind(wx.EVT_MOUSE_EVENTS,self.editbutton) + b.Bind(wx.EVT_BUTTON, self.procbutton) + b.Bind(wx.EVT_MOUSE_EVENTS, self.editbutton) #else: - # b.Bind(wx.EVT_BUTTON,lambda e:e.Skip()) + # b.Bind(wx.EVT_BUTTON, lambda e:e.Skip()) self.custombuttonbuttons.append(b) #if i<4: # ubs.Add(b) #else: - cs.Add(b,pos=((i)/4,(i)%4)) + cs.Add(b, pos = ((i)/4,(i)%4)) self.topsizer.Layout() def help_button(self): @@ -980,25 +980,25 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.webInterface: self.webInterface.AddLog('Defines custom button. Usage: button "title" [/c "colour"] command') - def do_button(self,argstr): + def do_button(self, argstr): def nextarg(rest): - rest=rest.lstrip() + rest = rest.lstrip() if rest.startswith('"'): return rest[1:].split('"',1) else: - return rest.split(None,1) + return rest.split(None, 1) #try: - num,argstr=nextarg(argstr) - num=int(num) - title,argstr=nextarg(argstr) - colour=None + num, argstr = nextarg(argstr) + num = int(num) + title, argstr = nextarg(argstr) + colour = None try: - c1,c2=nextarg(argstr) - if c1=="/c": - colour,argstr=nextarg(c2) + c1, c2 = nextarg(argstr) + if c1 == "/c": + colour, argstr = nextarg(c2) except: pass - command=argstr.strip() + command = argstr.strip() if num<0 or num>=64: print _("Custom button number should be between 0 and 63") if self.webInterface: @@ -1006,44 +1006,44 @@ class PronterWindow(wx.Frame,pronsole.pronsole): return while num >= len(self.custombuttons): self.custombuttons+=[None] - self.custombuttons[num]=[title,command] + self.custombuttons[num]=[title, command] if colour is not None: self.custombuttons[num]+=[colour] if not self.processing_rc: self.cbuttons_reload() - #except Exception,x: + #except Exception, x: # print "Bad syntax for button definition, see 'help button'" # print x - def cbutton_save(self,n,bdef,new_n=None): - if new_n is None: new_n=n + def cbutton_save(self, n, bdef, new_n = None): + if new_n is None: new_n = n if bdef is None or bdef == "": self.save_in_rc(("button %d" % n),'') elif len(bdef)>2: - colour=bdef[2] - if type(colour) not in (str,unicode): - #print type(colour),map(type,colour) - if type(colour)==tuple and tuple(map(type,colour))==(int,int,int): - colour = map(lambda x:x%256,colour) + colour = bdef[2] + if type(colour) not in (str, unicode): + #print type(colour),map(type, colour) + if type(colour) == tuple and tuple(map(type, colour)) == (int, int, int): + colour = map(lambda x:x%256, colour) colour = wx.Colour(*colour).GetAsString(wx.C2S_NAME|wx.C2S_HTML_SYNTAX) else: colour = wx.Colour(colour).GetAsString(wx.C2S_NAME|wx.C2S_HTML_SYNTAX) - self.save_in_rc(("button %d" % n),'button %d "%s" /c "%s" %s' % (new_n,bdef[0],colour,bdef[1])) + self.save_in_rc(("button %d" % n),'button %d "%s" /c "%s" %s' % (new_n, bdef[0],colour, bdef[1])) else: - self.save_in_rc(("button %d" % n),'button %d "%s" %s' % (new_n,bdef[0],bdef[1])) + self.save_in_rc(("button %d" % n),'button %d "%s" %s' % (new_n, bdef[0],bdef[1])) - def cbutton_edit(self,e,button=None): - bedit=ButtonEdit(self) + def cbutton_edit(self, e, button = None): + bedit = ButtonEdit(self) if button is not None: n = button.custombutton bedit.name.SetValue(button.properties[0]) bedit.command.SetValue(button.properties[1]) if len(button.properties)>2: - colour=button.properties[2] - if type(colour) not in (str,unicode): + colour = button.properties[2] + if type(colour) not in (str, unicode): #print type(colour) - if type(colour)==tuple and tuple(map(type,colour))==(int,int,int): - colour = map(lambda x:x%256,colour) + if type(colour) == tuple and tuple(map(type, colour)) == (int, int, int): + colour = map(lambda x:x%256, colour) colour = wx.Colour(*colour).GetAsString(wx.C2S_NAME|wx.C2S_HTML_SYNTAX) else: colour = wx.Colour(colour).GetAsString(wx.C2S_NAME|wx.C2S_HTML_SYNTAX) @@ -1052,61 +1052,61 @@ class PronterWindow(wx.Frame,pronsole.pronsole): n = len(self.custombuttons) while n>0 and self.custombuttons[n-1] is None: n -= 1 - if bedit.ShowModal()==wx.ID_OK: - if n==len(self.custombuttons): + if bedit.ShowModal() == wx.ID_OK: + if n == len(self.custombuttons): self.custombuttons+=[None] self.custombuttons[n]=[bedit.name.GetValue().strip(),bedit.command.GetValue().strip()] if bedit.color.GetValue().strip()!="": self.custombuttons[n]+=[bedit.color.GetValue()] - self.cbutton_save(n,self.custombuttons[n]) + self.cbutton_save(n, self.custombuttons[n]) bedit.Destroy() self.cbuttons_reload() - def cbutton_remove(self,e,button): + def cbutton_remove(self, e, button): n = button.custombutton self.custombuttons[n]=None - self.cbutton_save(n,None) + self.cbutton_save(n, None) #while len(self.custombuttons) and self.custombuttons[-1] is None: # del self.custombuttons[-1] wx.CallAfter(self.cbuttons_reload) - def cbutton_order(self,e,button,dir): + def cbutton_order(self, e, button, dir): n = button.custombutton if dir<0: - n=n-1 + n = n-1 if n+1 >= len(self.custombuttons): self.custombuttons+=[None] # pad # swap self.custombuttons[n],self.custombuttons[n+1] = self.custombuttons[n+1],self.custombuttons[n] - self.cbutton_save(n,self.custombuttons[n]) - self.cbutton_save(n+1,self.custombuttons[n+1]) + self.cbutton_save(n, self.custombuttons[n]) + self.cbutton_save(n+1, self.custombuttons[n+1]) #if self.custombuttons[-1] is None: # del self.custombuttons[-1] self.cbuttons_reload() - def editbutton(self,e): + def editbutton(self, e): if e.IsCommandEvent() or e.ButtonUp(wx.MOUSE_BTN_RIGHT): if e.IsCommandEvent(): - pos = (0,0) + pos = (0, 0) else: pos = e.GetPosition() popupmenu = wx.Menu() obj = e.GetEventObject() if hasattr(obj,"custombutton"): - item = popupmenu.Append(-1,_("Edit custom button '%s'") % e.GetEventObject().GetLabelText()) - self.Bind(wx.EVT_MENU,lambda e,button=e.GetEventObject():self.cbutton_edit(e,button),item) - item = popupmenu.Append(-1,_("Move left <<")) - self.Bind(wx.EVT_MENU,lambda e,button=e.GetEventObject():self.cbutton_order(e,button,-1),item) + item = popupmenu.Append(-1, _("Edit custom button '%s'") % e.GetEventObject().GetLabelText()) + self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject():self.cbutton_edit(e, button),item) + item = popupmenu.Append(-1, _("Move left <<")) + self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject():self.cbutton_order(e, button,-1),item) if obj.custombutton == 0: item.Enable(False) - item = popupmenu.Append(-1,_("Move right >>")) - self.Bind(wx.EVT_MENU,lambda e,button=e.GetEventObject():self.cbutton_order(e,button,1),item) + item = popupmenu.Append(-1, _("Move right >>")) + self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject():self.cbutton_order(e, button, 1),item) if obj.custombutton == 63: item.Enable(False) pos = self.panel.ScreenToClient(e.GetEventObject().ClientToScreen(pos)) - item = popupmenu.Append(-1,_("Remove custom button '%s'") % e.GetEventObject().GetLabelText()) - self.Bind(wx.EVT_MENU,lambda e,button=e.GetEventObject():self.cbutton_remove(e,button),item) + item = popupmenu.Append(-1, _("Remove custom button '%s'") % e.GetEventObject().GetLabelText()) + self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject():self.cbutton_remove(e, button),item) else: - item = popupmenu.Append(-1,_("Add custom button")) - self.Bind(wx.EVT_MENU,self.cbutton_edit,item) + item = popupmenu.Append(-1, _("Add custom button")) + self.Bind(wx.EVT_MENU, self.cbutton_edit, item) self.panel.PopupMenu(popupmenu, pos) elif e.Dragging() and e.ButtonIsDown(wx.MOUSE_BTN_LEFT): obj = e.GetEventObject() @@ -1116,7 +1116,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): e.Skip() return else: - dx,dy=self.dragpos[0]-scrpos[0],self.dragpos[1]-scrpos[1] + dx, dy = self.dragpos[0]-scrpos[0],self.dragpos[1]-scrpos[1] if dx*dx+dy*dy < 5*5: # threshold to detect dragging for jittery mice e.Skip() return @@ -1124,25 +1124,25 @@ class PronterWindow(wx.Frame,pronsole.pronsole): # init dragging of the custom button if hasattr(obj,"custombutton") and obj.properties is not None: #self.newbuttonbutton.SetLabel("") - #self.newbuttonbutton.SetFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_NORMAL)) + #self.newbuttonbutton.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) #self.newbuttonbutton.SetForegroundColour("black") #self.newbuttonbutton.SetSize(obj.GetSize()) #if self.upperbottomsizer.GetItem(self.newbuttonbutton) is not None: - # self.upperbottomsizer.SetItemMinSize(self.newbuttonbutton,obj.GetSize()) + # self.upperbottomsizer.SetItemMinSize(self.newbuttonbutton, obj.GetSize()) # self.topsizer.Layout() for b in self.custombuttonbuttons: #if b.IsFrozen(): b.Thaw() if b.properties is None: b.Enable() b.SetLabel("") - b.SetFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_NORMAL)) + b.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) b.SetForegroundColour("black") b.SetSize(obj.GetSize()) if self.upperbottomsizer.GetItem(b) is not None: - self.upperbottomsizer.SetItemMinSize(b,obj.GetSize()) + self.upperbottomsizer.SetItemMinSize(b, obj.GetSize()) self.topsizer.Layout() # b.SetStyle(wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE+wx.SIMPLE_BORDER) - self.dragging = wx.Button(self.panel,-1,obj.GetLabel(),style=wx.BU_EXACTFIT) + self.dragging = wx.Button(self.panel,-1, obj.GetLabel(),style = wx.BU_EXACTFIT) self.dragging.SetBackgroundColour(obj.GetBackgroundColour()) self.dragging.SetForegroundColour(obj.GetForegroundColour()) self.dragging.sourcebutton = obj @@ -1216,8 +1216,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): src_i = src.custombutton dst_i = dst.custombutton self.custombuttons[src_i],self.custombuttons[dst_i] = self.custombuttons[dst_i],self.custombuttons[src_i] - self.cbutton_save(src_i,self.custombuttons[src_i]) - self.cbutton_save(dst_i,self.custombuttons[dst_i]) + self.cbutton_save(src_i, self.custombuttons[src_i]) + self.cbutton_save(dst_i, self.custombuttons[dst_i]) while self.custombuttons[-1] is None: del self.custombuttons[-1] wx.CallAfter(self.dragging.Destroy) @@ -1258,27 +1258,27 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.zb.repeatLast() self.xyb.repeatLast() - def procbutton(self,e): + def procbutton(self, e): try: if hasattr(e.GetEventObject(),"custombutton"): if wx.GetKeyState(wx.WXK_CONTROL) or wx.GetKeyState(wx.WXK_ALT): return self.editbutton(e) - self.cur_button=e.GetEventObject().custombutton + self.cur_button = e.GetEventObject().custombutton self.onecmd(e.GetEventObject().properties[1]) - self.cur_button=None + self.cur_button = None except: print _("event object missing") if self.webInterface: self.webInterface.AddLog("event object missing") - self.cur_button=None + self.cur_button = None raise - def kill(self,e): + def kill(self, e): self.statuscheck = False if self.status_thread: self.status_thread.join() self.status_thread = None - self.p.recvcb=None + self.p.recvcb = None self.p.disconnect() if hasattr(self,"feedrates_changed"): self.save_in_rc("set xy_feedrate","set xy_feedrate %d" % self.settings.xy_feedrate) @@ -1293,15 +1293,15 @@ class PronterWindow(wx.Frame,pronsole.pronsole): from printrun import webinterface webinterface.KillWebInterfaceThread() - def do_monitor(self,l=""): + def do_monitor(self, l = ""): if l.strip()=="": self.monitorbox.SetValue(not self.monitorbox.GetValue()) elif l.strip()=="off": - wx.CallAfter(self.monitorbox.SetValue,False) + wx.CallAfter(self.monitorbox.SetValue, False) else: try: - self.monitor_interval=float(l) - wx.CallAfter(self.monitorbox.SetValue,self.monitor_interval>0) + self.monitor_interval = float(l) + wx.CallAfter(self.monitorbox.SetValue, self.monitor_interval>0) except: print _("Invalid period given.") if self.webInterface: @@ -1316,32 +1316,32 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.webInterface: self.webInterface.AddLog("Done monitoring.") - def setmonitor(self,e): - self.monitor=self.monitorbox.GetValue() + def setmonitor(self, e): + self.monitor = self.monitorbox.GetValue() if self.monitor: - wx.CallAfter(self.graph.StartPlotting,1000) + wx.CallAfter(self.graph.StartPlotting, 1000) else: wx.CallAfter(self.graph.StopPlotting) - def sendline(self,e): - command=self.commandbox.GetValue() + def sendline(self, e): + command = self.commandbox.GetValue() if not len(command): return wx.CallAfter(self.logbox.AppendText,">>>"+command+"\n") if self.webInterface: self.webInterface.AppendLog(">>>"+command+"\n") self.onecmd(str(command)) - self.commandbox.SetSelection(0,len(command)) + self.commandbox.SetSelection(0, len(command)) self.commandbox.history+=[command] - self.commandbox.histindex=len(self.commandbox.history) + self.commandbox.histindex = len(self.commandbox.history) - def clearOutput(self,e): + def clearOutput(self, e): self.logbox.Clear() def statuschecker(self): while self.statuscheck: string = "" - wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) + wx.CallAfter(self.tempdisp.SetLabel, self.tempreport.strip().replace("ok ","")) try: #self.hottgauge.SetValue(parse_temperature_report(self.tempreport, "T:")) wx.CallAfter(self.graph.SetExtruder0Temperature, parse_temperature_report(self.tempreport, "T:")) @@ -1384,88 +1384,88 @@ class PronterWindow(wx.Frame,pronsole.pronsole): wx.CallAfter(self.gviz.addgcode, gc, 1) except: break - wx.CallAfter(self.status.SetStatusText,_("Not connected to printer.")) + wx.CallAfter(self.status.SetStatusText, _("Not connected to printer.")) def capture(self, func, *args, **kwargs): - stdout=sys.stdout - cout=None + stdout = sys.stdout + cout = None try: - cout=self.cout + cout = self.cout except: pass if cout is None: - cout=cStringIO.StringIO() + cout = cStringIO.StringIO() - sys.stdout=cout - retval=None + sys.stdout = cout + retval = None try: - retval=func(*args,**kwargs) + retval = func(*args,**kwargs) except: traceback.print_exc() - sys.stdout=stdout + sys.stdout = stdout return retval - def recvcb(self,l): + def recvcb(self, l): if "T:" in l: - self.tempreport=l - wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) + self.tempreport = l + wx.CallAfter(self.tempdisp.SetLabel, self.tempreport.strip().replace("ok ","")) try: #self.hottgauge.SetValue(parse_temperature_report(self.tempreport, "T:")) wx.CallAfter(self.graph.SetExtruder0Temperature, parse_temperature_report(self.tempreport, "T:")) wx.CallAfter(self.graph.SetBedTemperature, parse_temperature_report(self.tempreport, "B:")) except: traceback.print_exc() - tstring=l.rstrip() + tstring = l.rstrip() #print tstring if (tstring!="ok") and (tstring!="wait") and ("ok T:" not in tstring): # print "*"+tstring+"*" # print "[" + time.strftime('%H:%M:%S',time.localtime(time.time())) + "] " + tstring - wx.CallAfter(self.logbox.AppendText,tstring+"\n") + wx.CallAfter(self.logbox.AppendText, tstring+"\n") for i in self.recvlisteners: i(l) - def listfiles(self,line): + def listfiles(self, line): if "Begin file list" in line: - self.listing=1 + self.listing = 1 elif "End file list" in line: - self.listing=0 + self.listing = 0 self.recvlisteners.remove(self.listfiles) wx.CallAfter(self.filesloaded) elif self.listing: self.sdfiles+=[line.replace("\n","").replace("\r","").lower()] - def waitforsdresponse(self,l): + def waitforsdresponse(self, l): if "file.open failed" in l: - wx.CallAfter(self.status.SetStatusText,_("Opening file failed.")) + wx.CallAfter(self.status.SetStatusText, _("Opening file failed.")) self.recvlisteners.remove(self.waitforsdresponse) return if "File opened" in l: - wx.CallAfter(self.status.SetStatusText,l) + wx.CallAfter(self.status.SetStatusText, l) if "File selected" in l: - wx.CallAfter(self.status.SetStatusText,_("Starting print")) - self.sdprinting=1 + wx.CallAfter(self.status.SetStatusText, _("Starting print")) + self.sdprinting = 1 self.p.send_now("M24") self.startcb() return if "Done printing file" in l: - wx.CallAfter(self.status.SetStatusText,l) - self.sdprinting=0 + wx.CallAfter(self.status.SetStatusText, l) + self.sdprinting = 0 self.recvlisteners.remove(self.waitforsdresponse) self.endcb() return if "SD printing byte" in l: #M27 handler try: - resp=l.split() - vals=resp[-1].split("/") - self.percentdone=100.0*int(vals[0])/int(vals[1]) + resp = l.split() + vals = resp[-1].split("/") + self.percentdone = 100.0*int(vals[0])/int(vals[1]) except: pass def filesloaded(self): - dlg=wx.SingleChoiceDialog(self, _("Select the file to print"), _("Pick SD file"), self.sdfiles) - if(dlg.ShowModal()==wx.ID_OK): - target=dlg.GetStringSelection() + dlg = wx.SingleChoiceDialog(self, _("Select the file to print"), _("Pick SD file"), self.sdfiles) + if(dlg.ShowModal() == wx.ID_OK): + target = dlg.GetStringSelection() if len(target): self.recvlisteners+=[self.waitforsdresponse] self.p.send_now("M23 "+target.lower()) @@ -1475,7 +1475,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if not self.p.online: self.sdfiles=[] return - self.listing=0 + self.listing = 0 self.sdfiles=[] self.recvlisteners+=[self.listfiles] self.p.send_now("M21") @@ -1490,75 +1490,75 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.webInterface.AddLog("Slicing: "+param) pararray=[i.replace("$s",self.filename).replace("$o",self.filename.replace(".stl","_export.gcode").replace(".STL","_export.gcode")).encode() for i in shlex.split(param.replace("\\","\\\\").encode())] #print pararray - self.skeinp=subprocess.Popen(pararray,stderr=subprocess.STDOUT,stdout=subprocess.PIPE) + self.skeinp = subprocess.Popen(pararray, stderr = subprocess.STDOUT, stdout = subprocess.PIPE) while True: o = self.skeinp.stdout.read(1) if o == '' and self.skeinp.poll() != None: break sys.stdout.write(o) self.skeinp.wait() - self.stopsf=1 + self.stopsf = 1 except: print _("Failed to execute slicing software: ") if self.webInterface: self.webInterface.AddLog("Failed to execute slicing software: ") - self.stopsf=1 - traceback.print_exc(file=sys.stdout) + self.stopsf = 1 + traceback.print_exc(file = sys.stdout) def skein_monitor(self): while(not self.stopsf): try: - wx.CallAfter(self.status.SetStatusText,_("Slicing..."))#+self.cout.getvalue().split("\n")[-1]) + wx.CallAfter(self.status.SetStatusText, _("Slicing..."))#+self.cout.getvalue().split("\n")[-1]) except: pass time.sleep(0.1) - fn=self.filename + fn = self.filename try: - self.filename=self.filename.replace(".stl","_export.gcode").replace(".STL","_export.gcode").replace(".obj","_export.gcode").replace(".OBJ","_export.gcode") - of=open(self.filename) + self.filename = self.filename.replace(".stl","_export.gcode").replace(".STL","_export.gcode").replace(".obj","_export.gcode").replace(".OBJ","_export.gcode") + of = open(self.filename) self.f=[i.replace("\n","").replace("\r","") for i in of] of.close() if self.p.online: wx.CallAfter(self.printbtn.Enable) - wx.CallAfter(self.status.SetStatusText,_("Loaded ")+self.filename+_(", %d lines") % (len(self.f),)) + wx.CallAfter(self.status.SetStatusText, _("Loaded ")+self.filename+_(", %d lines") % (len(self.f),)) wx.CallAfter(self.pausebtn.Disable) - wx.CallAfter(self.printbtn.SetLabel,_("Print")) + wx.CallAfter(self.printbtn.SetLabel, _("Print")) - threading.Thread(target=self.loadviz).start() + threading.Thread(target = self.loadviz).start() except: - self.filename=fn - wx.CallAfter(self.loadbtn.SetLabel,_("Load File")) - self.skeining=0 - self.skeinp=None + self.filename = fn + wx.CallAfter(self.loadbtn.SetLabel, _("Load File")) + self.skeining = 0 + self.skeinp = None - def skein(self,filename): - wx.CallAfter(self.loadbtn.SetLabel,_("Cancel")) + def skein(self, filename): + wx.CallAfter(self.loadbtn.SetLabel, _("Cancel")) print _("Slicing ") + filename - self.cout=StringIO.StringIO() - self.filename=filename - self.stopsf=0 - self.skeining=1 - threading.Thread(target=self.skein_func).start() - threading.Thread(target=self.skein_monitor).start() + self.cout = StringIO.StringIO() + self.filename = filename + self.stopsf = 0 + self.skeining = 1 + threading.Thread(target = self.skein_func).start() + threading.Thread(target = self.skein_monitor).start() - def loadfile(self,event,filename=None): + def loadfile(self, event, filename = None): if self.skeining and self.skeinp is not None: self.skeinp.terminate() return - basedir=self.settings.last_file_path + basedir = self.settings.last_file_path if not os.path.exists(basedir): basedir = "." try: - basedir=os.path.split(self.filename)[0] + basedir = os.path.split(self.filename)[0] except: pass - dlg=wx.FileDialog(self,_("Open file to print"),basedir,style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) + dlg = wx.FileDialog(self, _("Open file to print"),basedir, style = wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) dlg.SetWildcard(_("OBJ, STL, and GCODE files (*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ)|*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ|All Files (*.*)|*.*")) if(filename is not None or dlg.ShowModal() == wx.ID_OK): if filename is not None: - name=filename + name = filename else: - name=dlg.GetPath() + name = dlg.GetPath() if not(os.path.exists(name)): self.status.SetStatusText(_("File not found!")) return @@ -1570,8 +1570,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): elif name.lower().endswith(".obj"): self.skein(name) else: - self.filename=name - of=open(self.filename) + self.filename = name + of = open(self.filename) self.f=[i.replace("\n","").replace("\r","") for i in of] of.close() self.status.SetStatusText(_("Loaded %s, %d lines") % (name, len(self.f))) @@ -1581,10 +1581,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): wx.CallAfter(self.recoverbtn.Disable) if self.p.online: wx.CallAfter(self.printbtn.Enable) - threading.Thread(target=self.loadviz).start() + threading.Thread(target = self.loadviz).start() def loadviz(self): - Xtot,Ytot,Ztot,Xmin,Xmax,Ymin,Ymax,Zmin,Zmax = pronsole.measurements(self.f) + Xtot, Ytot, Ztot, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax = pronsole.measurements(self.f) print pronsole.totalelength(self.f), _("mm of filament used in this print\n") print _("the print goes from %f mm to %f mm in X\nand is %f mm wide\n") % (Xmin, Xmax, Xtot) if self.webInterface: @@ -1596,22 +1596,22 @@ class PronterWindow(wx.Frame,pronsole.pronsole): except: pass #import time - #t0=time.time() + #t0 = time.time() self.gviz.clear() self.gwindow.p.clear() self.gviz.addfile(self.f) #print "generated 2d view in %f s"%(time.time()-t0) - #t0=time.time() + #t0 = time.time() self.gwindow.p.addfile(self.f) #print "generated 3d view in %f s"%(time.time()-t0) - self.gviz.showall=1 + self.gviz.showall = 1 wx.CallAfter(self.gviz.Refresh) - def printfile(self,event): - self.extra_print_time=0 + def printfile(self, event): + self.extra_print_time = 0 if self.paused: - self.p.paused=0 - self.paused=0 + self.p.paused = 0 + self.paused = 0 self.on_startprint() if self.sdprinting: self.p.send_now("M26 S0") @@ -1622,7 +1622,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): wx.CallAfter(self.status.SetStatusText, _("No file loaded. Please use load first.")) return if not self.p.online: - wx.CallAfter(self.status.SetStatusText,_("Not connected to printer.")) + wx.CallAfter(self.status.SetStatusText, _("Not connected to printer.")) return self.on_startprint() self.p.startprint(self.f) @@ -1636,30 +1636,30 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.p.send_now("M29 ") wx.CallAfter(self.status.SetStatusText, _("File upload complete")) time.sleep(0.5) - self.p.clear=True - self.uploading=False + self.p.clear = True + self.uploading = False - def uploadtrigger(self,l): + def uploadtrigger(self, l): if "Writing to file" in l: - self.uploading=True + self.uploading = True self.p.startprint(self.f) - self.p.endcb=self.endupload + self.p.endcb = self.endupload self.recvlisteners.remove(self.uploadtrigger) elif "open failed, File" in l: self.recvlisteners.remove(self.uploadtrigger) - def upload(self,event): + def upload(self, event): if not self.f or not len(self.f): return if not self.p.online: return - dlg=wx.TextEntryDialog(self, ("Enter a target filename in 8.3 format:"), _("Pick SD filename") ,dosify(self.filename)) - if dlg.ShowModal()==wx.ID_OK: + dlg = wx.TextEntryDialog(self, ("Enter a target filename in 8.3 format:"), _("Pick SD filename") ,dosify(self.filename)) + if dlg.ShowModal() == wx.ID_OK: self.p.send_now("M21") self.p.send_now("M28 "+str(dlg.GetValue())) self.recvlisteners+=[self.uploadtrigger] - def pause(self,event): + def pause(self, event): print _("Paused.") if not self.paused: if self.sdprinting: @@ -1669,45 +1669,45 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #print "Not printing, cannot pause." return self.p.pause() - self.paused=True + self.paused = True self.extra_print_time += int(time.time() - self.starttime) wx.CallAfter(self.pausebtn.SetLabel, _("Resume")) else: - self.paused=False + self.paused = False if self.sdprinting: self.p.send_now("M24") else: self.p.resume() wx.CallAfter(self.pausebtn.SetLabel, _("Pause")) - def sdprintfile(self,event): + def sdprintfile(self, event): self.on_startprint() - threading.Thread(target=self.getfiles).start() + threading.Thread(target = self.getfiles).start() - def connect(self,event): + def connect(self, event): print _("Connecting...") - port=None + port = None try: - port=self.scanserial()[0] + port = self.scanserial()[0] except: pass if self.serialport.GetValue()!="": - port=str(self.serialport.GetValue()) - baud=115200 + port = str(self.serialport.GetValue()) + baud = 115200 try: - baud=int(self.baud.GetValue()) + baud = int(self.baud.GetValue()) except: pass if self.paused: - self.p.paused=0 - self.p.printing=0 + self.p.paused = 0 + self.p.printing = 0 wx.CallAfter(self.pausebtn.SetLabel, _("Pause")) wx.CallAfter(self.printbtn.SetLabel, _("Print")) - self.paused=0 + self.paused = 0 if self.sdprinting: self.p.send_now("M26 S0") - self.p.connect(port,baud) - self.statuscheck=True + self.p.connect(port, baud) + self.statuscheck = True if port != self.settings.port: self.set("port",port) if baud != self.settings.baudrate: @@ -1720,7 +1720,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): def recover(self, event): self.extra_print_time = 0 if not self.p.online: - wx.CallAfter(self.status.SetStatusText,_("Not connected to printer.")) + wx.CallAfter(self.status.SetStatusText, _("Not connected to printer.")) return # Reset Z self.p.send_now("G92 Z%f" % self.predisconnect_layer) @@ -1734,7 +1734,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.predisconnect_queueindex = self.p.queueindex self.predisconnect_layer = self.curlayer - def disconnect(self,event): + def disconnect(self, event): print _("Disconnected.") if self.p.printing or self.p.paused or self.paused: self.store_predisconnect_state() @@ -1746,7 +1746,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.connectbtn.SetLabel(_("Connect")) self.connectbtn.SetToolTip(wx.ToolTip("Connect to the printer")) - self.connectbtn.Bind(wx.EVT_BUTTON,self.connect) + self.connectbtn.Bind(wx.EVT_BUTTON, self.connect) wx.CallAfter(self.printbtn.Disable) wx.CallAfter(self.pausebtn.Disable) @@ -1759,29 +1759,29 @@ class PronterWindow(wx.Frame,pronsole.pronsole): wx.CallAfter(self.zb.disable) if self.paused: - self.p.paused=0 - self.p.printing=0 + self.p.paused = 0 + self.p.printing = 0 wx.CallAfter(self.pausebtn.SetLabel, _("Pause")) wx.CallAfter(self.printbtn.SetLabel, _("Print")) - self.paused=0 + self.paused = 0 if self.sdprinting: self.p.send_now("M26 S0") - def reset(self,event): + def reset(self, event): print _("Reset.") - dlg=wx.MessageDialog(self, _("Are you sure you want to reset the printer?"), _("Reset?"), wx.YES|wx.NO) - if dlg.ShowModal()==wx.ID_YES: + dlg = wx.MessageDialog(self, _("Are you sure you want to reset the printer?"), _("Reset?"), wx.YES|wx.NO) + if dlg.ShowModal() == wx.ID_YES: self.p.reset() self.sethotendgui(0) self.setbedgui(0) - self.p.printing=0 + self.p.printing = 0 wx.CallAfter(self.printbtn.SetLabel, _("Print")) if self.paused: - self.p.paused=0 + self.p.paused = 0 wx.CallAfter(self.pausebtn.SetLabel, _("Pause")) - self.paused=0 + self.paused = 0 - def get_build_dimensions(self,bdim): + def get_build_dimensions(self, bdim): import re # a string containing up to six numbers delimited by almost anything # first 0-3 numbers specify the build volume, no sign, always positive
settingvalue
Build Dimenstions"+str(gPronterPtr.settings.build_dimensions)+"
Last Bed Temp"+str(gPronterPtr.settings.last_bed_temperature)+"
Last File Path"+gPronterPtr.settings.last_file_path+"
Last Temperature"+str(gPronterPtr.settings.last_temperature)+"
Preview Extrusion Width"+str(gPronterPtr.settings.preview_extrusion_width)+"
Filename"+str(gPronterPtr.filename)+"