Fix command line handling for stl files with spaces in the name

master
Kliment Yanev 2011-12-22 11:07:52 +01:00
parent 5b0e0c9878
commit 1a90feb2ef
2 changed files with 7 additions and 9 deletions

View File

@ -1135,13 +1135,14 @@ class pronsole(cmd.Cmd):
try:
import shlex
if(settings):
param = self.expandcommand(self.settings.sliceoptscommand).encode()
param = self.expandcommand(self.settings.sliceoptscommand).replace("\\","\\\\").encode()
print "Entering skeinforge settings: ",param
subprocess.call(shlex.split(param))
else:
param = self.expandcommand(self.settings.slicecommand).replace("$s",l[0]).replace("$o",l[0].replace(".stl","_export.gcode").replace(".STL","_export.gcode")).encode()
param = self.expandcommand(self.settings.slicecommand).encode()
print "Slicing: ",param
subprocess.call(shlex.split(param))
params=[i.replace("$s",l[0]).replace("$o",l[0].replace(".stl","_export.gcode").replace(".STL","_export.gcode")).encode() for i in shlex.split(param.replace("\\","\\\\").encode())]
subprocess.call(params)
print "Loading skeined file."
self.do_load(l[0].replace(".stl","_export.gcode"))
except Exception,e:

View File

@ -1257,13 +1257,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
def skein_func(self):
try:
import shlex
param = self.expandcommand(self.settings.slicecommand).replace("$s",self.filename).replace("$o",self.filename.replace(".stl","_export.gcode").replace(".STL","_export.gcode")).encode()
print shlex.split(param.replace("\\","\\\\"))
param = self.expandcommand(self.settings.slicecommand).encode()
print "Slicing: ",param
self.cancelskein=0
#p=subprocess.Popen(param,shell=True,bufsize=10,stderr=subprocess.STDOUT,stdout=subprocess.PIPE,close_fds=True)
pararray=shlex.split(param.replace("\\","\\\\"))
#print pararray
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)
while True:
o = self.skeinp.stdout.read(1)