From 506d9bb172a9bd3ad28970ee0f81f2a9790b0b4e Mon Sep 17 00:00:00 2001 From: Keegi Date: Mon, 24 Oct 2011 14:45:25 +0300 Subject: [PATCH 01/16] Rearrange temperature setting controls, explicit temperature off button, color-feedback --- pronterface.py | 77 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/pronterface.py b/pronterface.py index 5bd6a8e..7b4307b 100755 --- a/pronterface.py +++ b/pronterface.py @@ -202,14 +202,27 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: self.p.send_now("M104 S"+l) print _("Setting hotend temperature to "),f,_(" degrees Celsius.") - self.htemp.SetValue(l) - self.set("last_temperature",str(f)) + if f>0: + self.htemp.SetValue(l) + self.set("last_temperature",str(f)) + self.settoff.SetBackgroundColour("") + self.settoff.SetForegroundColour("") + self.settbtn.SetBackgroundColour("#FFAA66") + self.settbtn.SetForegroundColour("#660000") + self.htemp.SetBackgroundColour("#FFDABB") + else: + self.settoff.SetBackgroundColour("#0044CC") + self.settoff.SetForegroundColour("white") + self.settbtn.SetBackgroundColour("") + self.settbtn.SetForegroundColour("") + self.htemp.SetBackgroundColour("white") + self.htemp.Refresh() else: print _("Printer is not online.") else: print _("You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0.") - except: - print _("You must enter a temperature.") + except Exception,x: + print _("You must enter a temperature. (%s)" % (repr(x),)) def do_bedtemp(self,l=""): try: @@ -223,8 +236,21 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: self.p.send_now("M140 S"+l) print _("Setting bed temperature to "),f,_(" degrees Celsius.") - self.btemp.SetValue(l) - self.set("last_bed_temperature",str(f)) + if f>0: + self.btemp.SetValue(l) + self.set("last_bed_temperature",str(f)) + self.setboff.SetBackgroundColour("") + self.setboff.SetForegroundColour("") + self.setbbtn.SetBackgroundColour("#FFAA66") + self.setbbtn.SetForegroundColour("#660000") + self.btemp.SetBackgroundColour("#FFDABB") + else: + self.setboff.SetBackgroundColour("#0044CC") + self.setboff.SetForegroundColour("white") + self.setbbtn.SetBackgroundColour("") + self.setbbtn.SetForegroundColour("") + self.btemp.SetBackgroundColour("white") + self.btemp.Refresh() else: print _("Printer is not online.") else: @@ -492,31 +518,48 @@ class PronterWindow(wx.Frame,pronsole.pronsole): lls.Add(wx.StaticText(self.panel,-1,_("Heater:"),pos=(0,343)),pos=(11,0),span=(1,1)) 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),pos=(45,335)) + self.settoff.Bind(wx.EVT_BUTTON,lambda e:self.do_settemp("off")) + self.printerControls.append(self.settoff) + lls.Add(self.settoff,pos=(11,1),span=(1,1)) + 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=(90,25),pos=(45,337)) - + choices=htemp_choices,style=wx.CB_DROPDOWN, size=(60,25),pos=(45,337)) + lls.Add(self.htemp,pos=(11,2),span=(1,2)) - lls.Add(self.htemp,pos=(11,1),span=(1,3)) - self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,335)) + self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(36,-1),pos=(125,335)) self.settbtn.Bind(wx.EVT_BUTTON,self.do_settemp) self.printerControls.append(self.settbtn) lls.Add(self.settbtn,pos=(11,4),span=(1,2)) + lls.Add(wx.StaticText(self.panel,-1,_("Bed:"),pos=(0,343)),pos=(12,0),span=(1,1)) 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),pos=(135,335)) + self.setboff.Bind(wx.EVT_BUTTON,lambda e:self.do_bedtemp("off")) + self.printerControls.append(self.setboff) + lls.Add(self.setboff,pos=(12,1),span=(1,1)) + 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=(90,25),pos=(45,367)) + choices=btemp_choices,style=wx.CB_DROPDOWN, size=(60,25),pos=(135,367)) + lls.Add(self.btemp,pos=(12,2),span=(1,2)) + + self.setbbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,365)) + self.setbbtn.Bind(wx.EVT_BUTTON,self.do_bedtemp) + self.printerControls.append(self.setbbtn) + lls.Add(self.setbbtn,pos=(12,4),span=(1,2)) + self.btemp.SetValue(str(self.settings.last_bed_temperature)) self.htemp.SetValue(str(self.settings.last_temperature)) - - + ## added for an error where only the bed would get (pla) or (abs). #This ensures, if last temp is a default pla or abs, it will be marked so. # if it is not, then a (user) remark is added. This denotes a manual entry - + for i in btemp_choices: if i.split()[0] == str(self.settings.last_bed_temperature).split('.')[0] or i.split()[0] == str(self.settings.last_bed_temperature): self.btemp.SetValue(i) @@ -529,12 +572,6 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if( '(' not in self.htemp.Value): self.htemp.SetValue(self.htemp.Value + ' (user)') - - lls.Add(self.btemp,pos=(12,1),span=(1,3)) - self.setbbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,365)) - self.setbbtn.Bind(wx.EVT_BUTTON,self.do_bedtemp) - self.printerControls.append(self.setbbtn) - lls.Add(self.setbbtn,pos=(12,4),span=(1,2)) self.tempdisp=wx.StaticText(self.panel,-1,"") lls.Add(self.tempdisp,pos=(12,6),span=(1,3)) From f0f6333681571537caa0a92e8ce51b4d71f4a3d3 Mon Sep 17 00:00:00 2001 From: Keegi Date: Tue, 25 Oct 2011 22:56:44 +0300 Subject: [PATCH 02/16] better temperature combo box behavior when heated up --- pronsole.py | 6 +++--- pronterface.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pronsole.py b/pronsole.py index 7feea62..e4667de 100755 --- a/pronsole.py +++ b/pronsole.py @@ -93,9 +93,9 @@ class Settings: self.port = "" self.baudrate = 115200 self.temperature_pla = 185 - self.temperature_abs = 230.0 - self.bedtemp_pla = 60.0 - self.bedtemp_abs = 110.0 + self.temperature_abs = 230 + self.bedtemp_pla = 60 + self.bedtemp_abs = 110 self.xy_feedrate = 3000 self.z_feedrate = 200 self.e_feedrate = 300 diff --git a/pronterface.py b/pronterface.py index 7b4307b..33fb9cd 100755 --- a/pronterface.py +++ b/pronterface.py @@ -140,6 +140,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.starttime=0 self.curlayer=0 self.cur_button=None + self.hsetpoint=0.0 + self.bsetpoint=0.0 def startcb(self): self.starttime=time.time() @@ -202,6 +204,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: self.p.send_now("M104 S"+l) print _("Setting hotend temperature to "),f,_(" degrees Celsius.") + self.hsetpoint=f if f>0: self.htemp.SetValue(l) self.set("last_temperature",str(f)) @@ -236,6 +239,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: self.p.send_now("M140 S"+l) print _("Setting bed temperature to "),f,_(" degrees Celsius.") + self.bsetpoint=f if f>0: self.btemp.SetValue(l) self.set("last_bed_temperature",str(f)) @@ -527,6 +531,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): htemp_choices = [str(self.settings.last_temperature)] + htemp_choices self.htemp=wx.ComboBox(self.panel, -1, choices=htemp_choices,style=wx.CB_DROPDOWN, size=(60,25),pos=(45,337)) + self.htemp.Bind(wx.EVT_COMBOBOX,self.htemp_change) lls.Add(self.htemp,pos=(11,2),span=(1,2)) self.settbtn=wx.Button(self.panel,-1,_("Set"),size=(36,-1),pos=(125,335)) @@ -546,6 +551,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): 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=(60,25),pos=(135,367)) + self.btemp.Bind(wx.EVT_COMBOBOX,self.btemp_change) lls.Add(self.btemp,pos=(12,2),span=(1,2)) self.setbbtn=wx.Button(self.panel,-1,_("Set"),size=(38,-1),pos=(135,365)) @@ -633,6 +639,15 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #uts.Layout() self.cbuttons_reload() + def htemp_change(self,event): + if self.hsetpoint > 0: + self.do_settemp("") + wx.CallAfter(self.htemp.SetInsertionPoint,0) + + def btemp_change(self,event): + if self.bsetpoint > 0: + self.do_bedtemp("") + wx.CallAfter(self.btemp.SetInsertionPoint,0) def showwin(self,event): if(self.f is not None): self.gwindow.Show() From d2db9ca389a892123c59367125eee17a51a7d3e2 Mon Sep 17 00:00:00 2001 From: Keegi Date: Tue, 25 Oct 2011 22:58:13 +0300 Subject: [PATCH 03/16] fancy temperature gauge... --- pronterface.py | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/pronterface.py b/pronterface.py index 33fb9cd..2adbf6c 100755 --- a/pronterface.py +++ b/pronterface.py @@ -205,6 +205,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.p.send_now("M104 S"+l) print _("Setting hotend temperature to "),f,_(" degrees Celsius.") self.hsetpoint=f + self.tgauge.SetTarget(int(f)) if f>0: self.htemp.SetValue(l) self.set("last_temperature",str(f)) @@ -448,6 +449,14 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add(self.resetbtn) self.minibtn=wx.Button(self.panel,-1,_("Mini mode"),pos=(690,0)) self.minibtn.Bind(wx.EVT_BUTTON,self.toggleview) + self.tgauge=TempGauge(self.panel,size=(300,20)) + 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) + uts.Add((10,-1)) self.monitorbox=wx.CheckBox(self.panel,-1,"",pos=(450,37)) uts.Add((15,-1)) @@ -457,6 +466,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add((15,-1),flag=wx.EXPAND) uts.Add(self.minibtn) + uts.Add(self.tgauge) #SECOND ROW ubs=self.upperbottomsizer=wx.BoxSizer(wx.HORIZONTAL) @@ -648,6 +658,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.bsetpoint > 0: self.do_bedtemp("") wx.CallAfter(self.btemp.SetInsertionPoint,0) + def showwin(self,event): if(self.f is not None): self.gwindow.Show() @@ -1008,6 +1019,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): pass string+=(self.tempreport.replace("\r","").replace("T",_("Hotend")).replace("B",_("Bed")).replace("\n","").replace("ok ",""))+" " wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) + try: + self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) + except: + pass if self.sdprinting: string+= _(" SD printing:%04.2f %%") % (self.percentdone,) if self.p.printing: @@ -1500,6 +1515,71 @@ class ButtonEdit(wx.Dialog): if self.name.GetValue()=="": self.name.SetValue(macro) +class TempGauge(wx.Panel): + def __init__(self,parent,size=(200,20)): + wx.Panel.__init__(self,parent,-1,size=size) + self.Bind(wx.EVT_PAINT,self.paint) + self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) + self.width,self.height=size + self.value=0 + self.setpoint=0 + self.recalc() + def recalc(self): + self.max=max(int(self.setpoint*1.05),240) + self.scale=float(self.width-2)/float(self.max) + self.ypt=int(self.scale*max(self.setpoint,40)) + def SetValue(self,value): + self.value=value + wx.CallAfter(self.Refresh) + def SetTarget(self,value): + self.setpoint=value + self.recalc() + wx.CallAfter(self.Refresh) + def paint(self,ev): + dc=wx.PaintDC(self) + dc.SetBackground(wx.Brush((255,255,255))) + dc.Clear() + gc = wx.GraphicsContext.Create(dc) + gc.SetBrush(gc.CreateLinearGradientBrush(0,0,self.ypt,0,wx.Colour(0,167,223),wx.Colour(239,233,119))) + gc.DrawRectangle(0,0,self.ypt,20) + gc.SetBrush(gc.CreateLinearGradientBrush(self.ypt,0,self.width-2,0,wx.Colour(239,233,119),wx.Colour(210,50,100))) + gc.DrawRectangle(self.ypt,0,self.width-2-self.ypt,20) + ### + gc.SetBrush(gc.CreateLinearGradientBrush(0,3,0,15,wx.Colour(255,255,210),wx.Colour(234,82,0))) + #gc.SetBrush(gc.CreateLinearGradientBrush(0,3,0,15,wx.Colour(255,255,255),wx.Colour(255,90,32))) + width=12 + w1=9-width/2 + w2=w1+width + value=max(10,min(self.width-2,int(self.value*self.scale))) + val_path = gc.CreatePath() + val_path.MoveToPoint(0,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(0,w2) + gc.DrawPath(val_path) + ### + setpoint=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,0) + setp_path.AddLineToPoint(setpoint+4,0) + setp_path.AddLineToPoint(setpoint,5) + setp_path.MoveToPoint(setpoint-5,20) + setp_path.AddLineToPoint(setpoint+5,20) + setp_path.AddLineToPoint(setpoint,14) + gc.DrawPath(setp_path) + ### + 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(text,31,1) + gc.SetFont(gc.CreateFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD))) + gc.DrawText(text,30,0) + if __name__ == '__main__': app = wx.App(False) main = PronterWindow() From 010a3fcb1585cd97c6af4d34b0b207e243d30c36 Mon Sep 17 00:00:00 2001 From: Keegi Date: Thu, 27 Oct 2011 16:36:30 +0300 Subject: [PATCH 04/16] add threshold for button dragging in case of jittery mouse --- pronterface.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pronterface.py b/pronterface.py index 2adbf6c..e74b41c 100755 --- a/pronterface.py +++ b/pronterface.py @@ -866,6 +866,15 @@ class PronterWindow(wx.Frame,pronsole.pronsole): elif e.Dragging() and e.ButtonIsDown(wx.MOUSE_BTN_LEFT): obj = e.GetEventObject() scrpos = obj.ClientToScreen(e.GetPosition()) + if not hasattr(self,"dragpos"): + self.dragpos = scrpos + e.Skip() + return + else: + 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 if not hasattr(self,"dragging"): # init dragging of the custom button if hasattr(obj,"custombutton"): @@ -945,6 +954,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): del self.dragging wx.CallAfter(self.cbuttons_reload) del self.last_drag_dest + del self.dragpos else: e.Skip() From 1fe67e7d23b68a1e94281f71f9295559ca3b721d Mon Sep 17 00:00:00 2001 From: Keegi Date: Thu, 27 Oct 2011 16:37:10 +0300 Subject: [PATCH 05/16] fixed temperature gauge lagging --- pronterface.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pronterface.py b/pronterface.py index e74b41c..992e786 100755 --- a/pronterface.py +++ b/pronterface.py @@ -1070,6 +1070,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if "T:" in l: self.tempreport=l wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) + try: + self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) + except: + pass tstring=l.rstrip() #print tstring if(tstring!="ok"): From 1fb9890464aeb3dc7cf982010fd39dae66d82d74 Mon Sep 17 00:00:00 2001 From: Keegi Date: Tue, 8 Nov 2011 21:05:39 +0200 Subject: [PATCH 06/16] workaround for frozen buttons appearing on some cases --- pronterface.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pronterface.py b/pronterface.py index 992e786..a9e70ce 100755 --- a/pronterface.py +++ b/pronterface.py @@ -720,12 +720,15 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if 0.3*rr+0.59*gg+0.11*bb < 60: b.SetForegroundColour("#ffffff") except: - b=wx.Button(self.panel,-1,"") + b=wx.StaticText(self.panel,-1,"",size=(72,20),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER b.Freeze() b.custombutton=i b.properties=btndef - b.Bind(wx.EVT_BUTTON,self.procbutton) - b.Bind(wx.EVT_MOUSE_EVENTS,self.editbutton) + if btndef is not None: + 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()) self.custombuttonbuttons.append(b) if i<4: ubs.Add(b) @@ -880,18 +883,23 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if hasattr(obj,"custombutton"): self.dragging = wx.Button(self.panel,-1,obj.GetLabel()) self.dragging.SetBackgroundColour(obj.GetBackgroundColour()) + self.dragging.SetForegroundColour(obj.GetForegroundColour()) self.dragging.sourcebutton = obj self.dragging.Raise() self.dragging.Disable() self.dragging.SetPosition(self.panel.ScreenToClient(scrpos)) for b in self.custombuttonbuttons: if b.IsFrozen(): b.Thaw() + #if b.properties is None: + # b.SetStyle(wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE+wx.SIMPLE_BORDER) self.last_drag_dest = obj self.dragging.label = obj.s_label = obj.GetLabel() self.dragging.bgc = obj.s_bgc = obj.GetBackgroundColour() + self.dragging.fgc = obj.s_fgc = obj.GetForegroundColour() else: # dragging in progress self.dragging.SetPosition(self.panel.ScreenToClient(scrpos)) + wx.CallAfter(self.dragging.Refresh) btns = self.custombuttonbuttons dst = None src = self.dragging.sourcebutton @@ -919,16 +927,21 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if dst is not self.last_drag_dest: if self.last_drag_dest is not None: self.last_drag_dest.SetBackgroundColour(self.last_drag_dest.s_bgc) + self.last_drag_dest.SetForegroundColour(self.last_drag_dest.s_fgc) self.last_drag_dest.SetLabel(self.last_drag_dest.s_label) if dst is not None and dst is not src: dst.s_bgc = dst.GetBackgroundColour() + dst.s_fgc = dst.GetForegroundColour() dst.s_label = dst.GetLabel() src.SetBackgroundColour(dst.GetBackgroundColour()) + src.SetForegroundColour(dst.GetForegroundColour()) src.SetLabel(dst.GetLabel()) dst.SetBackgroundColour(drg.bgc) + dst.SetForegroundColour(drg.fgc) dst.SetLabel(drg.label) else: src.SetBackgroundColour(drg.bgc) + src.SetForegroundColour(drg.fgc) src.SetLabel(drg.label) self.last_drag_dest = dst elif hasattr(self,"dragging") and not e.ButtonIsDown(wx.MOUSE_BTN_LEFT): From 38cefcd00e5790733b5cdbe694ed7b543d9b66e2 Mon Sep 17 00:00:00 2001 From: Keegi Date: Tue, 8 Nov 2011 21:33:24 +0200 Subject: [PATCH 07/16] attempt to fix panel context menu not appearing on empty slot --- pronterface.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pronterface.py b/pronterface.py index a9e70ce..c825e52 100755 --- a/pronterface.py +++ b/pronterface.py @@ -721,7 +721,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole): b.SetForegroundColour("#ffffff") except: b=wx.StaticText(self.panel,-1,"",size=(72,20),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER - b.Freeze() + #b.Freeze() + b.Disable() b.custombutton=i b.properties=btndef if btndef is not None: @@ -889,8 +890,9 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.dragging.Disable() self.dragging.SetPosition(self.panel.ScreenToClient(scrpos)) for b in self.custombuttonbuttons: - if b.IsFrozen(): b.Thaw() - #if b.properties is None: + #if b.IsFrozen(): b.Thaw() + if b.properties is None: + b.Enable() # b.SetStyle(wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE+wx.SIMPLE_BORDER) self.last_drag_dest = obj self.dragging.label = obj.s_label = obj.GetLabel() From a05f8839b3c680e1ce00bd7efb6bff09dd72e05a Mon Sep 17 00:00:00 2001 From: Keegi Date: Sat, 12 Nov 2011 16:35:37 +0200 Subject: [PATCH 08/16] made temperature gauge visually similar style as the printer position controls --- pronterface.py | 64 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/pronterface.py b/pronterface.py index f2aee6b..0b419ef 100755 --- a/pronterface.py +++ b/pronterface.py @@ -431,7 +431,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add(self.resetbtn) self.minibtn=wx.Button(self.panel,-1,_("Mini mode"),pos=(690,0)) self.minibtn.Bind(wx.EVT_BUTTON,self.toggleview) - self.tgauge=TempGauge(self.panel,size=(300,20)) + self.tgauge=TempGauge(self.panel,size=(300,24)) def scroll_setpoint(e): if e.GetWheelRotation()>0: self.do_settemp(str(self.hsetpoint+1)) @@ -1562,7 +1562,7 @@ class ButtonEdit(wx.Dialog): self.name.SetValue(macro) class TempGauge(wx.Panel): - def __init__(self,parent,size=(200,20)): + def __init__(self,parent,size=(200,22)): wx.Panel.__init__(self,parent,-1,size=size) self.Bind(wx.EVT_PAINT,self.paint) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) @@ -1582,49 +1582,67 @@ class TempGauge(wx.Panel): self.recalc() wx.CallAfter(self.Refresh) 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),wx.Colour(234,82,0) + shadow1,shadow2 = wx.Colour(110,110,110),wx.Colour(255,255,255) gc = wx.GraphicsContext.Create(dc) - gc.SetBrush(gc.CreateLinearGradientBrush(0,0,self.ypt,0,wx.Colour(0,167,223),wx.Colour(239,233,119))) - gc.DrawRectangle(0,0,self.ypt,20) - gc.SetBrush(gc.CreateLinearGradientBrush(self.ypt,0,self.width-2,0,wx.Colour(239,233,119),wx.Colour(210,50,100))) - gc.DrawRectangle(self.ypt,0,self.width-2-self.ypt,20) - ### - gc.SetBrush(gc.CreateLinearGradientBrush(0,3,0,15,wx.Colour(255,255,210),wx.Colour(234,82,0))) + # 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) + # 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) + # 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) + # draw gauge + 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))) width=12 - w1=9-width/2 + w1=y0+9-width/2 w2=w1+width - value=max(10,min(self.width-2,int(self.value*self.scale))) + value=x0+max(10,min(self.width+1-2,int(self.value*self.scale))) val_path = gc.CreatePath() - val_path.MoveToPoint(0,w1) + 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(0,w2) + val_path.AddLineToPoint(x0,w2) gc.DrawPath(val_path) - ### - setpoint=max(10,int(self.setpoint*self.scale)) + # draw setpoint markers + 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,0) - setp_path.AddLineToPoint(setpoint+4,0) - setp_path.AddLineToPoint(setpoint,5) - setp_path.MoveToPoint(setpoint-5,20) - setp_path.AddLineToPoint(setpoint+5,20) - setp_path.AddLineToPoint(setpoint,14) + 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(text,31,1) + gc.DrawText(text,x0+31,y0+1) gc.SetFont(gc.CreateFont(wx.Font(10,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD))) - gc.DrawText(text,30,0) + gc.DrawText(text,x0+30,y0+0) if __name__ == '__main__': app = wx.App(False) From 9a7baf64a05828cfb2355606f93e3a896fc7a447 Mon Sep 17 00:00:00 2001 From: Keegi Date: Sun, 13 Nov 2011 00:12:41 +0200 Subject: [PATCH 09/16] make temperature dropdown slightly bigger --- pronterface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pronterface.py b/pronterface.py index 0b419ef..d1f7c1f 100755 --- a/pronterface.py +++ b/pronterface.py @@ -528,7 +528,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): 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=(60,25),pos=(45,337)) + choices=htemp_choices,style=wx.CB_DROPDOWN, size=(80,25),pos=(45,337)) self.htemp.Bind(wx.EVT_COMBOBOX,self.htemp_change) lls.Add(self.htemp,pos=(3,2),span=(1,2)) @@ -548,7 +548,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): 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=(60,25),pos=(135,367)) + choices=btemp_choices,style=wx.CB_DROPDOWN, size=(80,25),pos=(135,367)) self.btemp.Bind(wx.EVT_COMBOBOX,self.btemp_change) lls.Add(self.btemp,pos=(4,2),span=(1,2)) From 0839071f514f4ca2053f4779deb464b3e33342c3 Mon Sep 17 00:00:00 2001 From: Keegi Date: Mon, 14 Nov 2011 21:35:18 +0200 Subject: [PATCH 10/16] new button button --- pronterface.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/pronterface.py b/pronterface.py index 9faf0a8..a19e049 100755 --- a/pronterface.py +++ b/pronterface.py @@ -707,6 +707,9 @@ class PronterWindow(wx.Frame,pronsole.pronsole): #sizer.Remove(button) button.Destroy() self.custombuttonbuttons=[] + newbuttonbuttonindex = len(self.custombuttons) + while newbuttonbuttonindex>0 and self.custombuttons[newbuttonbuttonindex-1] is None: + newbuttonbuttonindex -= 1 while len(self.custombuttons) < 13: self.custombuttons.append(None) for i in xrange(len(self.custombuttons)): @@ -719,16 +722,22 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if 0.3*rr+0.59*gg+0.11*bb < 60: b.SetForegroundColour("#ffffff") except: - b=wx.StaticText(self.panel,-1,"",size=(72,20),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER - #b.Freeze() - b.Disable() + if i == newbuttonbuttonindex: + self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(16,16)) + b.SetFont(wx.Font(12,wx.FONTFAMILY_SWISS,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)) + b.SetForegroundColour("#4444ff") + b.Bind(wx.EVT_BUTTON,self.cbutton_edit) + else: + b=wx.StaticText(self.panel,-1,"",size=(72,22),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER + #b.Freeze() + b.Disable() 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) - else: - b.Bind(wx.EVT_BUTTON,lambda e:e.Skip()) + #else: + # b.Bind(wx.EVT_BUTTON,lambda e:e.Skip()) self.custombuttonbuttons.append(b) if i<4: ubs.Add(b) @@ -826,7 +835,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.cbutton_save(n,None) #while len(self.custombuttons) and self.custombuttons[-1] is None: # del self.custombuttons[-1] - self.cbuttons_reload() + wx.CallAfter(self.cbuttons_reload) def cbutton_order(self,e,button,dir): n = button.custombutton @@ -880,7 +889,14 @@ class PronterWindow(wx.Frame,pronsole.pronsole): return if not hasattr(self,"dragging"): # init dragging of the custom button - if hasattr(obj,"custombutton"): + 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.SetForegroundColour("black") + self.newbuttonbutton.SetSize(obj.GetSize()) + if self.upperbottomsizer.GetItem(self.newbuttonbutton) is not None: + self.upperbottomsizer.SetItemMinSize(self.newbuttonbutton,obj.GetSize()) + self.topsizer.Layout() self.dragging = wx.Button(self.panel,-1,obj.GetLabel()) self.dragging.SetBackgroundColour(obj.GetBackgroundColour()) self.dragging.SetForegroundColour(obj.GetForegroundColour()) From 16fb5176cfd9d9c60416db555eeeab5f690c9ad8 Mon Sep 17 00:00:00 2001 From: Keegi Date: Mon, 14 Nov 2011 21:43:16 +0200 Subject: [PATCH 11/16] some tool tips --- pronterface.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pronterface.py b/pronterface.py index af8d5c9..ceb82d8 100755 --- a/pronterface.py +++ b/pronterface.py @@ -716,6 +716,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): btndef = self.custombuttons[i] try: b=wx.Button(self.panel,-1,btndef[0]) + b.SetToolTip(wx.ToolTip(_("Execute command: ")+btndef[1])) if len(btndef)>2: b.SetBackgroundColour(btndef[2]) rr,gg,bb=b.GetBackgroundColour().Get() @@ -726,6 +727,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(16,16)) 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) else: b=wx.StaticText(self.panel,-1,"",size=(72,22),style=wx.ALIGN_CENTRE+wx.ST_NO_AUTORESIZE) #+wx.SIMPLE_BORDER From 87ef3e6e8caed35baaa091d558990a231f983efe Mon Sep 17 00:00:00 2001 From: Keegi Date: Tue, 15 Nov 2011 11:06:03 +0200 Subject: [PATCH 12/16] hide temperature gauge until better place is found for it --- pronterface.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pronterface.py b/pronterface.py index ceb82d8..c5c87f7 100755 --- a/pronterface.py +++ b/pronterface.py @@ -187,7 +187,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.p.send_now("M104 S"+l) print _("Setting hotend temperature to "),f,_(" degrees Celsius.") self.hsetpoint=f - self.tgauge.SetTarget(int(f)) + #self.tgauge.SetTarget(int(f)) if f>0: self.htemp.SetValue(l) self.set("last_temperature",str(f)) @@ -440,13 +440,13 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add(self.resetbtn) self.minibtn=wx.Button(self.panel,-1,_("Mini mode"),pos=(690,0)) self.minibtn.Bind(wx.EVT_BUTTON,self.toggleview) - self.tgauge=TempGauge(self.panel,size=(300,24)) - 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.tgauge=TempGauge(self.panel,size=(300,24)) + #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) uts.Add((10,-1)) self.monitorbox=wx.CheckBox(self.panel,-1,"",pos=(450,37)) @@ -457,7 +457,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): uts.Add((15,-1),flag=wx.EXPAND) uts.Add(self.minibtn) - uts.Add(self.tgauge) + #uts.Add(self.tgauge) #SECOND ROW ubs=self.upperbottomsizer=wx.BoxSizer(wx.HORIZONTAL) @@ -1081,10 +1081,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): pass string+=(self.tempreport.replace("\r","").replace("T",_("Hotend")).replace("B",_("Bed")).replace("\n","").replace("ok ",""))+" " wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) - try: - self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) - except: - pass + #try: + # self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) + #except: + # pass if self.sdprinting: string+= _(" SD printing:%04.2f %%") % (self.percentdone,) if self.p.printing: @@ -1122,10 +1122,10 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if "T:" in l: self.tempreport=l wx.CallAfter(self.tempdisp.SetLabel,self.tempreport.strip().replace("ok ","")) - try: - self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) - except: - pass + #try: + # self.tgauge.SetValue(int(filter(lambda x:x.startswith("T:"),self.tempreport.split())[0].split(":")[1])) + #except: + # pass tstring=l.rstrip() #print tstring if(tstring!="ok"): From a0bf2c453677749f820df0c1fef99ab770d2f70f Mon Sep 17 00:00:00 2001 From: Keegi Date: Tue, 15 Nov 2011 11:06:25 +0200 Subject: [PATCH 13/16] don't set font for new button button --- pronterface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pronterface.py b/pronterface.py index c5c87f7..ee893ac 100755 --- a/pronterface.py +++ b/pronterface.py @@ -725,7 +725,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): except: if i == newbuttonbuttonindex: self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(16,16)) - b.SetFont(wx.Font(12,wx.FONTFAMILY_SWISS,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)) + #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) From 8f3df9c2e963cb35243ca76fe2395c6c8e9b8680 Mon Sep 17 00:00:00 2001 From: Kliment Yanev Date: Wed, 16 Nov 2011 16:09:12 +0100 Subject: [PATCH 14/16] Modified size of + button --- blupload.py | 41 ----------------------------------------- pronterface.py | 2 +- 2 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 blupload.py diff --git a/blupload.py b/blupload.py deleted file mode 100644 index 0c9a47b..0000000 --- a/blupload.py +++ /dev/null @@ -1,41 +0,0 @@ -import printcore,time,sys,os - -def dosify(name): - return os.path.split(name)[1].split(".")[0][:8]+".g" - -def blupload(printer,filename,path): - printer.send_now("M28 "+dosify(filename)) - printer.startprint([i.replace("\n","") for i in open(path)]) - try: - sys.stdout.write("Progress: 00.0%") - sys.stdout.flush() - while(printer.printing): - time.sleep(1) - sys.stdout.write("\b\b\b\b%02.1f%%" % (100*float(printer.queueindex)/len(printer.mainqueue),) ) - sys.stdout.flush() - printer.send_now("M29 "+dosify(filename)) - print "Done uploading, disconnecting with a 5 second timeout in case the printer has something important to say." - printer.disconnect() - time.sleep(5) - print "Upload complete. Goodbye!" - - except: - print "Abort, disconnecting with a 5 second timeout in case the printer has something important to say." - printer.disconnect() - -if __name__ == '__main__': - #print "Usage: python blupload.py filename.gcode" - filename="../prusamendel/sellsx_export.gcode" - tfilename=filename - if len(sys.argv)>1: - filename=sys.argv[1] - tfilename=os.path.basename(sys.argv[1]) - print "Uploading: "+filename," as "+dosify(tfilename) - p=printcore.printcore('/dev/ttyUSB0',115200) - p.loud=False - time.sleep(2) - blupload(p,tfilename,filename) - - else: - print "Usage: python blupload.py filename.gcode" - diff --git a/pronterface.py b/pronterface.py index ee893ac..4487a0f 100755 --- a/pronterface.py +++ b/pronterface.py @@ -724,7 +724,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): b.SetForegroundColour("#ffffff") except: if i == newbuttonbuttonindex: - self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(16,16)) + self.newbuttonbutton=b=wx.Button(self.panel,-1,"+",size=(19,18)) #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"))) From 9479728463ff26bc92cb7b0412b0162fe7b7c847 Mon Sep 17 00:00:00 2001 From: Cyril Laguilhon-Debat Date: Wed, 16 Nov 2011 16:24:16 +0100 Subject: [PATCH 15/16] - update french traductions --- locale/fr/LC_MESSAGES/fr.mo | Bin 0 -> 8556 bytes locale/fr/LC_MESSAGES/fr.po | 518 +++++++++++++++++------------------- 2 files changed, 237 insertions(+), 281 deletions(-) create mode 100644 locale/fr/LC_MESSAGES/fr.mo diff --git a/locale/fr/LC_MESSAGES/fr.mo b/locale/fr/LC_MESSAGES/fr.mo new file mode 100644 index 0000000000000000000000000000000000000000..1ab3f0326f9e887f9258098f9004ff4d6388ab90 GIT binary patch literal 8556 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\n" "Language-Team: FR \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" @@ -19,233 +19,241 @@ msgstr "" msgid "WX is not installed. This program requires WX to run." msgstr "wxWidgets n'est pas installé. Ce programme nécessite la librairie wxWidgets pour fonctionner." -#: pronterface.py:60 +#: pronterface.py:55 msgid "Printer Interface" msgstr "Interface imprimante" -#: pronterface.py:72 +#: pronterface.py:67 msgid "X+100" -msgstr "" +msgstr "X+100" -#: pronterface.py:73 +#: pronterface.py:68 msgid "X+10" -msgstr "" +msgstr "X+10" -#: pronterface.py:74 +#: pronterface.py:69 msgid "X+1" -msgstr "" +msgstr "X+1" -#: pronterface.py:75 +#: pronterface.py:70 msgid "X+0.1" -msgstr "" +msgstr "X+0.1" -#: pronterface.py:76 +#: pronterface.py:71 msgid "HomeX" msgstr "Origine X" -#: pronterface.py:77 +#: pronterface.py:72 msgid "X-0.1" -msgstr "" +msgstr "X-0.1" + +#: pronterface.py:73 +msgid "X-1" +msgstr "X-1" + +#: pronterface.py:74 +msgid "X-10" +msgstr "X-10" + +#: pronterface.py:75 +msgid "X-100" +msgstr "X-100" + +#: pronterface.py:76 +msgid "Y+100" +msgstr "Y+100" + +#: pronterface.py:77 +msgid "Y+10" +msgstr "Y+10" #: pronterface.py:78 -msgid "X-1" -msgstr "" +msgid "Y+1" +msgstr "Y+1" #: pronterface.py:79 -msgid "X-10" -msgstr "" +msgid "Y+0.1" +msgstr "Y+0.1" #: pronterface.py:80 -msgid "X-100" -msgstr "" - -#: pronterface.py:81 -msgid "Y+100" -msgstr "" - -#: pronterface.py:82 -msgid "Y+10" -msgstr "" - -#: pronterface.py:83 -msgid "Y+1" -msgstr "" - -#: pronterface.py:84 -msgid "Y+0.1" -msgstr "" - -#: pronterface.py:85 msgid "HomeY" msgstr "Origine Y" -#: pronterface.py:86 +#: pronterface.py:81 msgid "Y-0.1" -msgstr "" +msgstr "Y-0.1" -#: pronterface.py:87 +#: pronterface.py:82 msgid "Y-1" -msgstr "" +msgstr "Y-1" -#: pronterface.py:88 +#: pronterface.py:83 msgid "Y-10" -msgstr "" +msgstr "Y-10" -#: pronterface.py:89 +#: pronterface.py:84 msgid "Y-100" -msgstr "" +msgstr "Y-100" -#: pronterface.py:90 +#: pronterface.py:85 msgid "Motors off" msgstr "Arrêter les moteurs" -#: pronterface.py:91 +#: pronterface.py:86 msgid "Z+10" -msgstr "" +msgstr "Z+10" -#: pronterface.py:92 +#: pronterface.py:87 msgid "Z+1" -msgstr "" +msgstr "Z+1" -#: pronterface.py:93 +#: pronterface.py:88 msgid "Z+0.1" -msgstr "" +msgstr "Z+0.1" -#: pronterface.py:94 +#: pronterface.py:89 msgid "HomeZ" msgstr "Origine Z" -#: pronterface.py:95 +#: pronterface.py:90 msgid "Z-0.1" -msgstr "" +msgstr "Z-0.1" -#: pronterface.py:96 +#: pronterface.py:91 msgid "Z-1" -msgstr "" +msgstr "Z-1" -#: pronterface.py:97 +#: pronterface.py:92 msgid "Z-10" -msgstr "" +msgstr "Z-10" -#: pronterface.py:98 +#: pronterface.py:93 msgid "Home" msgstr "Origine" -#: pronterface.py:99 +#: pronterface.py:94 msgid "Check temp" msgstr "Lire les températures" -#: pronterface.py:100 +#: pronterface.py:95 msgid "Extrude" msgstr "Extruder" -#: pronterface.py:101 +#: pronterface.py:96 msgid "Reverse" msgstr "Inverser" -#: pronterface.py:117 +#: pronterface.py:112 msgid "" "# 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" msgstr "" -#: pronterface.py:122 +#: pronterface.py:117 msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc" msgstr "Remarque! Vous avez spécifié des boutons personnalisés dans custombtn.txt et aussi dans .pronsolerc" -#: pronterface.py:123 +#: pronterface.py:118 msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt" msgstr "Ignorant custombtn.txt. Retirez tous les boutons en cours pour revenir à custombtn.txt" -#: pronterface.py:146 -#: pronterface.py:434 -#: pronterface.py:971 -#: pronterface.py:1020 -#: pronterface.py:1134 -#: pronterface.py:1161 -#: pronterface.py:1175 +#: pronterface.py:141 +#: pronterface.py:427 +#: pronterface.py:956 +#: pronterface.py:1003 +#: pronterface.py:1113 +#: pronterface.py:1140 +#: pronterface.py:1154 msgid "Print" msgstr "Imprimer" -#: pronterface.py:150 +#: pronterface.py:145 msgid "Printer is now online" msgstr "L'imprimante est connectée" -#: pronterface.py:199 +#: pronterface.py:194 msgid "Setting hotend temperature to " msgstr "Réglage de la température de la buse à" -#: pronterface.py:199 -#: pronterface.py:220 +#: pronterface.py:194 +#: pronterface.py:215 msgid " degrees Celsius." msgstr " degrés Celsius." -#: pronterface.py:203 -#: pronterface.py:224 +#: pronterface.py:198 +#: pronterface.py:219 msgid "Printer is not online." msgstr "L'imprimante est déconnectée" -#: pronterface.py:205 +#: pronterface.py:200 msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0." msgstr "Vous ne pouvez pas régler une température négative.Pour éteindre le chauffage de la buse, réglez sa température à 0°c." -#: pronterface.py:207 -#: pronterface.py:228 +#: pronterface.py:202 +#: pronterface.py:223 msgid "You must enter a temperature." msgstr "Vous devez saisir une température." -#: pronterface.py:220 +#: pronterface.py:215 msgid "Setting bed temperature to " msgstr "Réglage de la température du plateau à " -#: pronterface.py:226 +#: pronterface.py:221 msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0." msgstr "Vous ne pouvez pas régler une température négative. Pour désactiver votre plateau chauffant, réglez sa température à 0°c." -#: pronterface.py:243 +#: pronterface.py:238 msgid "Do you want to erase the macro?" msgstr "Voulez-vous effacer la macro ?" -#: pronterface.py:247 +#: pronterface.py:242 msgid "Cancelled." msgstr "Annulé" -#: pronterface.py:277 -msgid "&Open..." -msgstr "&Ouvrir..." - -#: pronterface.py:277 +#: pronterface.py:271 msgid " Opens file" msgstr " Ouvrir un fichier" -#: pronterface.py:278 -msgid "&Edit..." -msgstr "&Éditer..." +#: pronterface.py:271 +msgid "&Open..." +msgstr "&Ouvrir..." -#: pronterface.py:278 +#: pronterface.py:272 msgid " Edit open file" msgstr " Éditer le fichier ouvert" -#: pronterface.py:279 -msgid "E&xit" -msgstr "&Quitter" +#: pronterface.py:272 +msgid "&Edit..." +msgstr "&Éditer..." -#: pronterface.py:279 +#: pronterface.py:274 +msgid " Adjust SFACT settings" +msgstr " Régler les paramètres SFACT" + +#: pronterface.py:274 +msgid "SFACT Settings" +msgstr "Paramètres &SFACT..." + +#: pronterface.py:277 +msgid " Quickly adjust SFACT settings for active profile" +msgstr " Réglages rapides des paramètres SFACT pour le profil actif." + +#: pronterface.py:277 +msgid "SFACT Quick Settings" +msgstr "Réglages rapides SFACT" + +#: pronterface.py:281 msgid " Closes the Window" msgstr " Quitter le programme" -#: pronterface.py:280 -msgid "&File" -msgstr "&Fichier" +#: pronterface.py:281 +msgid "E&xit" +msgstr "&Quitter" -#: pronterface.py:284 -msgid "Clear console" -msgstr "Effacer la console" - -#: pronterface.py:284 -msgid " Clear output console" -msgstr "Effacer le contenu de la console de sortie" +#: pronterface.py:282 +msgid "&Print" +msgstr "&Imprimer" #: pronterface.py:285 msgid "&Macros" @@ -255,89 +263,68 @@ msgstr "&Macros" msgid "<&New...>" msgstr "<&Nouvelle...>" -#: pronterface.py:287 -msgid "&Options" -msgstr "&Options" - #: pronterface.py:287 msgid " Options dialog" msgstr " Fenêtre des options" -#: pronterface.py:289 -msgid "SFACT Settings" -msgstr "Paramètres &SFACT..." +#: pronterface.py:287 +msgid "&Options" +msgstr "&Options" -#: pronterface.py:289 -msgid " Adjust SFACT settings" -msgstr " Régler les paramètres SFACT" - -#: pronterface.py:292 -msgid "SFACT Quick Settings" -msgstr "Réglages rapides SFACT" - -#: pronterface.py:292 -msgid " Quickly adjust SFACT settings for active profile" -msgstr " Réglages rapides des paramètres SFACT pour le profil actif." - -#: pronterface.py:295 +#: pronterface.py:288 msgid "&Settings" msgstr "&Paramètres" -#: pronterface.py:311 +#: pronterface.py:304 msgid "Enter macro name" msgstr "Saisissez le nom de la macro" -#: pronterface.py:314 +#: pronterface.py:307 msgid "Macro name:" msgstr "Nom :" -#: pronterface.py:317 +#: pronterface.py:310 msgid "Ok" msgstr "Valider" -#: pronterface.py:321 -#: pronterface.py:1197 +#: pronterface.py:314 msgid "Cancel" msgstr "Annuler" -#: pronterface.py:339 -msgid "Name '" -msgstr "Le nom '" - -#: pronterface.py:339 +#: pronterface.py:332 msgid "' is being used by built-in command" msgstr "' est utilisé par des commandes internes." -#: pronterface.py:342 -msgid "Macro name may contain only alphanumeric symbols and underscores" -msgstr "Un nom de macro ne peut contenir que des caractères alphanumérique et des underscore (_)" +#: pronterface.py:332 +msgid "Name '" +msgstr "Le nom '" -#: pronterface.py:375 +#: pronterface.py:368 msgid "Port:" msgstr "Port :" -#: pronterface.py:397 +#: pronterface.py:390 msgid "Connect" msgstr "Connecter" -#: pronterface.py:399 +#: pronterface.py:392 msgid "Connect to the printer" msgstr "Connecter l'imprimante" -#: pronterface.py:401 +#: pronterface.py:394 msgid "Disconnect" msgstr "Déconnecter" -#: pronterface.py:405 +#: pronterface.py:398 msgid "Reset" msgstr "Réinitialiser" -#: pronterface.py:408 -#: pronterface.py:592 +#: pronterface.py:401 +#: pronterface.py:579 msgid "Mini mode" msgstr "Mode réduit" -#: pronterface.py:414 +#: pronterface.py:407 msgid "" "Monitor\n" "printer" @@ -345,181 +332,176 @@ msgstr "" "Surveiller\n" "l'imprimante" -#: pronterface.py:423 +#: pronterface.py:416 msgid "Load file" msgstr "Charger un fichier" -#: pronterface.py:426 +#: pronterface.py:419 msgid "SD Upload" msgstr "Copier sur SD" -#: pronterface.py:430 +#: pronterface.py:423 msgid "SD Print" msgstr "Imprimer depuis SD" -#: pronterface.py:438 -#: pronterface.py:1021 -#: pronterface.py:1061 -#: pronterface.py:1109 -#: pronterface.py:1133 -#: pronterface.py:1160 -#: pronterface.py:1174 +#: pronterface.py:431 +#: pronterface.py:1004 +#: pronterface.py:1040 +#: pronterface.py:1088 +#: pronterface.py:1112 +#: pronterface.py:1139 +#: pronterface.py:1153 msgid "Pause" msgstr "Pause" -#: pronterface.py:458 +#: pronterface.py:445 msgid "Send" msgstr "Envoyer" -#: pronterface.py:460 -#: pronterface.py:518 +#: pronterface.py:453 +#: pronterface.py:511 msgid "mm/min" msgstr "mm/min" -#: pronterface.py:462 +#: pronterface.py:455 msgid "XY:" -msgstr "" +msgstr "XY:" -#: pronterface.py:464 +#: pronterface.py:457 msgid "Z:" -msgstr "" +msgstr "Z:" -#: pronterface.py:481 +#: pronterface.py:474 msgid "Heater:" msgstr "Buse :" -#: pronterface.py:489 -#: pronterface.py:501 +#: pronterface.py:482 +#: pronterface.py:494 msgid "Set" msgstr "Régler" -#: pronterface.py:493 +#: pronterface.py:486 msgid "Bed:" msgstr "Plateau :" -#: pronterface.py:512 +#: pronterface.py:505 msgid "mm" msgstr "mm" -#: pronterface.py:551 -#: pronterface.py:846 -#: pronterface.py:1055 +#: pronterface.py:538 +#: pronterface.py:833 +#: pronterface.py:1034 msgid "Not connected to printer." msgstr "Imprimante non connectée" -#: pronterface.py:599 +#: pronterface.py:586 msgid "Full mode" msgstr "Mode complet" -#: pronterface.py:637 +#: pronterface.py:624 msgid "Defines custom button. Usage: button \"title\" [/c \"colour\"] command" msgstr "Définit des boutons personnalidés. Utilisation : \"Libelle\" [/c \"couleur\"] commande" -#: pronterface.py:659 +#: pronterface.py:646 msgid "Custom button number should be between 0 and 63" msgstr "Les numéros des boutons personnalisés doivent être compris entre 0 et 63." -#: pronterface.py:749 -#, python-format +#: pronterface.py:736 msgid "Edit custom button '%s'" msgstr "Editer le bouton personnalisé n°'%s'" -#: pronterface.py:751 +#: pronterface.py:738 msgid "Move left <<" msgstr "Déplacer vers la gauche <<" -#: pronterface.py:754 +#: pronterface.py:741 msgid "Move right >>" msgstr "Déplacer vers la droite >>" -#: pronterface.py:758 -#, python-format +#: pronterface.py:745 msgid "Remove custom button '%s'" msgstr "Supprimer le bouton personnalisé n°'%s'" -#: pronterface.py:761 +#: pronterface.py:748 msgid "Add custom button" msgstr "Ajouter un bouton personnalisé" -#: pronterface.py:776 +#: pronterface.py:763 msgid "event object missing" msgstr "evennement d'objet manquant" -#: pronterface.py:804 +#: pronterface.py:791 msgid "Invalid period given." msgstr "La période donnée est invalide" -#: pronterface.py:807 +#: pronterface.py:794 msgid "Monitoring printer." msgstr "Surveillance de l'imprimante" -#: pronterface.py:809 +#: pronterface.py:796 msgid "Done monitoring." msgstr "Surveillance de l'imprimante effectuée." -#: pronterface.py:828 +#: pronterface.py:815 msgid "Printer is online. " msgstr "L'imprimante est connectée" -#: pronterface.py:830 -#: pronterface.py:969 -#: pronterface.py:1019 +#: pronterface.py:817 +#: pronterface.py:954 +#: pronterface.py:1002 msgid "Loaded " msgstr "Chargé " -#: pronterface.py:833 -msgid "Hotend" -msgstr "Buse" - -#: pronterface.py:833 +#: pronterface.py:820 msgid "Bed" msgstr "Plateau" -#: pronterface.py:836 -#, python-format +#: pronterface.py:820 +msgid "Hotend" +msgstr "Buse" + +#: pronterface.py:823 msgid " SD printing:%04.2f %%" msgstr "Impression SD : %04.2f %%" -#: pronterface.py:838 -#, python-format +#: pronterface.py:825 msgid " Printing:%04.2f %%" msgstr "Impression : %04.2f %%" -#: pronterface.py:892 +#: pronterface.py:879 msgid "Opening file failed." msgstr "L'ouverture du fichier a échoué" -#: pronterface.py:898 +#: pronterface.py:885 msgid "Starting print" msgstr "Début de l'impression..." -#: pronterface.py:921 -msgid "Select the file to print" -msgstr "Sélectionnez le fichier à imprimer :" - -#: pronterface.py:921 +#: pronterface.py:908 msgid "Pick SD file" msgstr "Choisir un fichier sur la carte SD" -#: pronterface.py:949 +#: pronterface.py:908 +msgid "Select the file to print" +msgstr "Sélectionnez le fichier à imprimer :" + +#: pronterface.py:936 msgid "Skeinforge execution failed." msgstr "Exécution de Skeinforge échoué" -#: pronterface.py:956 +#: pronterface.py:943 msgid "Skeining..." msgstr "Skeining..." -#: pronterface.py:969 -#: pronterface.py:1019 -#, python-format +#: pronterface.py:954 +#: pronterface.py:1002 msgid ", %d lines" msgstr ", %d lignes" -#: pronterface.py:978 +#: pronterface.py:963 msgid "Skeining " msgstr "Skeining " -#: pronterface.py:980 +#: pronterface.py:965 msgid "" "Skeinforge not found. \n" "Please copy Skeinforge into a directory named \"skeinforge\" in the same directory as this file." @@ -527,116 +509,90 @@ msgstr "" "Skeinforge non trouvé. \n" "Veuillez copier Skeinforge dans un répertoire nommé \"skeinforge\" placé dans le repertoire du programme." -#: pronterface.py:999 +#: pronterface.py:984 msgid "Open file to print" msgstr "Ouvrir un fichier à imprimer" -#: pronterface.py:1000 +#: pronterface.py:985 msgid "STL and GCODE files (;*.gcode;*.g;*.stl;*.STL;)" msgstr "Fichiers STL et GCODE (;*.gcode;*.g;*.stl;*.STL;)" -#: pronterface.py:1007 +#: pronterface.py:992 msgid "File not found!" msgstr "Fichier non trouvé" -#: pronterface.py:1029 -msgid "mm of filament used in this print\n" -msgstr "mm de filament utilisés pour cette impression\n" - -#: pronterface.py:1030 -#: pronterface.py:1031 -#: pronterface.py:1032 -msgid "the print goes from" -msgstr "" - -#: pronterface.py:1030 -#: pronterface.py:1031 -#: pronterface.py:1032 -msgid "mm to" -msgstr "mm à" - -#: pronterface.py:1030 -msgid "" -"mm in X\n" -"and is" -msgstr "" - -#: pronterface.py:1030 -#: pronterface.py:1031 -msgid "mm wide\n" -msgstr "" +#: pronterface.py:1011 +msgid "mm of filament used in this print" +msgstr "mm de filament utilisés pour cette impression" #: pronterface.py:1031 -msgid "" -"mm in Y\n" -"and is" -msgstr "" - -#: pronterface.py:1032 -msgid "" -"mm in Z\n" -"and is" -msgstr "" - -#: pronterface.py:1032 -msgid "mm high\n" -msgstr "" - -#: pronterface.py:1052 msgid "No file loaded. Please use load first." msgstr "Aucun fichier chargé. Veuillez charger un fichier avant." -#: pronterface.py:1063 +#: pronterface.py:1042 msgid "Restart" msgstr "Recommencer" -#: pronterface.py:1067 +#: pronterface.py:1046 msgid "File upload complete" msgstr "Envoi du fichier terminé" -#: pronterface.py:1086 +#: pronterface.py:1065 msgid "Pick SD filename" msgstr "Lister les fichiers sur la carte SD" -#: pronterface.py:1102 +#: pronterface.py:1081 msgid "Resume" msgstr "Reprendre" -#: pronterface.py:1168 +#: pronterface.py:1147 msgid "Are you sure you want to reset the printer?" msgstr "Etes-vous sûr de vouloir réinitialiser l'imprimante?" -#: pronterface.py:1168 +#: pronterface.py:1147 msgid "Reset?" msgstr "Réinitialiser ?" -#: pronterface.py:1193 -msgid "Save" -msgstr "Enregistrer" - -#: pronterface.py:1248 +#: pronterface.py:1226 msgid "Edit settings" msgstr "Modifier les paramètres" -#: pronterface.py:1250 +#: pronterface.py:1228 msgid "Defaults" msgstr "Paramètres par défaut" -#: pronterface.py:1272 +#: pronterface.py:1250 msgid "Custom button" msgstr "Commande personnalisée" -#: pronterface.py:1280 +#: pronterface.py:1258 msgid "Button title" msgstr "Titre du bouton" -#: pronterface.py:1283 +#: pronterface.py:1261 msgid "Command" msgstr "Commande" -#: pronterface.py:1292 +#: pronterface.py:1270 msgid "Color" msgstr "Couleur" -#~ msgid "&Print" -#~ msgstr "&Imprimer" +#~ msgid "&File" +#~ msgstr "&Fichier" + +#~ msgid "Clear console" +#~ msgstr "Effacer la console" + +#~ msgid " Clear output console" +#~ msgstr "Effacer le contenu de la console de sortie" + +#~ msgid "Macro name may contain only alphanumeric symbols and underscores" +#~ msgstr "" +#~ "Un nom de macro ne peut contenir que des caractères alphanumérique et des " +#~ "underscore (_)" + +#~ msgid "mm to" +#~ msgstr "mm à" + +#~ msgid "Save" +#~ msgstr "Enregistrer" From 6fce63a8365e7a5d03cdca5539e977a041095015 Mon Sep 17 00:00:00 2001 From: Cyril Laguilhon-Debat Date: Wed, 16 Nov 2011 16:55:02 +0100 Subject: [PATCH 16/16] - Update french translations --- locale/fr/LC_MESSAGES/fr.mo | Bin 8556 -> 0 bytes locale/fr/LC_MESSAGES/fr.po | 520 +++++++++++++-------------- locale/fr/LC_MESSAGES/pronterface.mo | Bin 8182 -> 9220 bytes locale/pronterface.pot | 467 ++++++++++++------------ 4 files changed, 471 insertions(+), 516 deletions(-) delete mode 100644 locale/fr/LC_MESSAGES/fr.mo diff --git a/locale/fr/LC_MESSAGES/fr.mo b/locale/fr/LC_MESSAGES/fr.mo deleted file mode 100644 index 1ab3f0326f9e887f9258098f9004ff4d6388ab90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8556 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\n" "Language-Team: FR \n" "Language: \n" @@ -15,316 +15,227 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -#: pronterface.py:10 +#: pronterface.py:15 msgid "WX is not installed. This program requires WX to run." msgstr "wxWidgets n'est pas installé. Ce programme nécessite la librairie wxWidgets pour fonctionner." -#: pronterface.py:55 +#: pronterface.py:67 msgid "Printer Interface" msgstr "Interface imprimante" -#: pronterface.py:67 -msgid "X+100" -msgstr "X+100" - -#: pronterface.py:68 -msgid "X+10" -msgstr "X+10" - -#: pronterface.py:69 -msgid "X+1" -msgstr "X+1" - -#: pronterface.py:70 -msgid "X+0.1" -msgstr "X+0.1" - -#: pronterface.py:71 -msgid "HomeX" -msgstr "Origine X" - -#: pronterface.py:72 -msgid "X-0.1" -msgstr "X-0.1" - -#: pronterface.py:73 -msgid "X-1" -msgstr "X-1" - -#: pronterface.py:74 -msgid "X-10" -msgstr "X-10" - -#: pronterface.py:75 -msgid "X-100" -msgstr "X-100" - -#: pronterface.py:76 -msgid "Y+100" -msgstr "Y+100" - -#: pronterface.py:77 -msgid "Y+10" -msgstr "Y+10" - -#: pronterface.py:78 -msgid "Y+1" -msgstr "Y+1" - -#: pronterface.py:79 -msgid "Y+0.1" -msgstr "Y+0.1" - #: pronterface.py:80 -msgid "HomeY" -msgstr "Origine Y" - -#: pronterface.py:81 -msgid "Y-0.1" -msgstr "Y-0.1" - -#: pronterface.py:82 -msgid "Y-1" -msgstr "Y-1" - -#: pronterface.py:83 -msgid "Y-10" -msgstr "Y-10" - -#: pronterface.py:84 -msgid "Y-100" -msgstr "Y-100" - -#: pronterface.py:85 msgid "Motors off" msgstr "Arrêter les moteurs" -#: pronterface.py:86 -msgid "Z+10" -msgstr "Z+10" - -#: pronterface.py:87 -msgid "Z+1" -msgstr "Z+1" - -#: pronterface.py:88 -msgid "Z+0.1" -msgstr "Z+0.1" - -#: pronterface.py:89 -msgid "HomeZ" -msgstr "Origine Z" - -#: pronterface.py:90 -msgid "Z-0.1" -msgstr "Z-0.1" - -#: pronterface.py:91 -msgid "Z-1" -msgstr "Z-1" - -#: pronterface.py:92 -msgid "Z-10" -msgstr "Z-10" - -#: pronterface.py:93 -msgid "Home" -msgstr "Origine" - -#: pronterface.py:94 +#: pronterface.py:81 msgid "Check temp" msgstr "Lire les températures" -#: pronterface.py:95 +#: pronterface.py:82 msgid "Extrude" msgstr "Extruder" -#: pronterface.py:96 +#: pronterface.py:83 msgid "Reverse" msgstr "Inverser" -#: pronterface.py:112 +#: pronterface.py:99 msgid "" "# 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" msgstr "" +"# 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" -#: pronterface.py:117 +#: pronterface.py:104 msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc" msgstr "Remarque! Vous avez spécifié des boutons personnalisés dans custombtn.txt et aussi dans .pronsolerc" -#: pronterface.py:118 +#: pronterface.py:105 msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt" msgstr "Ignorant custombtn.txt. Retirez tous les boutons en cours pour revenir à custombtn.txt" -#: pronterface.py:141 -#: pronterface.py:427 -#: pronterface.py:956 -#: pronterface.py:1003 -#: pronterface.py:1113 -#: pronterface.py:1140 -#: pronterface.py:1154 +#: pronterface.py:130 +#: pronterface.py:476 +#: pronterface.py:1228 +#: pronterface.py:1279 +#: pronterface.py:1396 +#: pronterface.py:1428 +#: pronterface.py:1443 msgid "Print" msgstr "Imprimer" -#: pronterface.py:145 -msgid "Printer is now online" +#: pronterface.py:134 +msgid "Printer is now online." msgstr "L'imprimante est connectée" -#: pronterface.py:194 +#: pronterface.py:188 msgid "Setting hotend temperature to " msgstr "Réglage de la température de la buse à" -#: pronterface.py:194 -#: pronterface.py:215 +#: pronterface.py:188 +#: pronterface.py:224 msgid " degrees Celsius." msgstr " degrés Celsius." -#: pronterface.py:198 -#: pronterface.py:219 +#: pronterface.py:207 +#: pronterface.py:242 msgid "Printer is not online." msgstr "L'imprimante est déconnectée" -#: pronterface.py:200 +#: pronterface.py:209 msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0." msgstr "Vous ne pouvez pas régler une température négative.Pour éteindre le chauffage de la buse, réglez sa température à 0°c." -#: pronterface.py:202 -#: pronterface.py:223 -msgid "You must enter a temperature." -msgstr "Vous devez saisir une température." - -#: pronterface.py:215 +#: pronterface.py:224 msgid "Setting bed temperature to " msgstr "Réglage de la température du plateau à " -#: pronterface.py:221 +#: pronterface.py:244 msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0." msgstr "Vous ne pouvez pas régler une température négative. Pour désactiver votre plateau chauffant, réglez sa température à 0°c." -#: pronterface.py:238 +#: pronterface.py:246 +msgid "You must enter a temperature." +msgstr "Vous devez saisir une température." + +#: pronterface.py:261 msgid "Do you want to erase the macro?" msgstr "Voulez-vous effacer la macro ?" -#: pronterface.py:242 +#: pronterface.py:265 msgid "Cancelled." msgstr "Annulé" -#: pronterface.py:271 +#: pronterface.py:295 msgid " Opens file" msgstr " Ouvrir un fichier" -#: pronterface.py:271 +#: pronterface.py:295 msgid "&Open..." msgstr "&Ouvrir..." -#: pronterface.py:272 +#: pronterface.py:296 msgid " Edit open file" msgstr " Éditer le fichier ouvert" -#: pronterface.py:272 +#: pronterface.py:296 msgid "&Edit..." msgstr "&Éditer..." -#: pronterface.py:274 -msgid " Adjust SFACT settings" -msgstr " Régler les paramètres SFACT" +#: pronterface.py:297 +msgid " Clear output console" +msgstr "Effacer le contenu de la console de sortie" -#: pronterface.py:274 -msgid "SFACT Settings" -msgstr "Paramètres &SFACT..." +#: pronterface.py:297 +msgid "Clear console" +msgstr "Effacer la console" -#: pronterface.py:277 -msgid " Quickly adjust SFACT settings for active profile" -msgstr " Réglages rapides des paramètres SFACT pour le profil actif." - -#: pronterface.py:277 -msgid "SFACT Quick Settings" -msgstr "Réglages rapides SFACT" - -#: pronterface.py:281 +#: pronterface.py:298 msgid " Closes the Window" msgstr " Quitter le programme" -#: pronterface.py:281 +#: pronterface.py:298 msgid "E&xit" msgstr "&Quitter" -#: pronterface.py:282 -msgid "&Print" -msgstr "&Imprimer" +#: pronterface.py:299 +msgid "&File" +msgstr "&Fichier" -#: pronterface.py:285 +#: pronterface.py:304 msgid "&Macros" msgstr "&Macros" -#: pronterface.py:286 +#: pronterface.py:305 msgid "<&New...>" msgstr "<&Nouvelle...>" -#: pronterface.py:287 +#: pronterface.py:306 msgid " Options dialog" msgstr " Fenêtre des options" -#: pronterface.py:287 +#: pronterface.py:306 msgid "&Options" msgstr "&Options" -#: pronterface.py:288 +#: pronterface.py:308 +msgid " Adjust SFACT settings" +msgstr " Régler les paramètres SFACT" + +#: pronterface.py:308 +msgid "SFACT Settings" +msgstr "Paramètres &SFACT..." + +#: pronterface.py:311 +msgid " Quickly adjust SFACT settings for active profile" +msgstr " Réglages rapides des paramètres SFACT pour le profil actif." + +#: pronterface.py:311 +msgid "SFACT Quick Settings" +msgstr "Réglages rapides SFACT" + +#: pronterface.py:315 msgid "&Settings" msgstr "&Paramètres" -#: pronterface.py:304 +#: pronterface.py:331 msgid "Enter macro name" msgstr "Saisissez le nom de la macro" -#: pronterface.py:307 +#: pronterface.py:334 msgid "Macro name:" msgstr "Nom :" -#: pronterface.py:310 +#: pronterface.py:337 msgid "Ok" msgstr "Valider" -#: pronterface.py:314 +#: pronterface.py:341 +#: pronterface.py:1465 msgid "Cancel" msgstr "Annuler" -#: pronterface.py:332 +#: pronterface.py:359 msgid "' is being used by built-in command" msgstr "' est utilisé par des commandes internes." -#: pronterface.py:332 +#: pronterface.py:359 msgid "Name '" msgstr "Le nom '" -#: pronterface.py:368 -msgid "Port:" +#: pronterface.py:362 +msgid "Macro name may contain only alphanumeric symbols and underscores" +msgstr "Un nom de macro ne peut contenir que des caractères alphanumérique et des underscore (_)" + +#: pronterface.py:411 +msgid "Port" msgstr "Port :" -#: pronterface.py:390 +#: pronterface.py:430 msgid "Connect" msgstr "Connecter" -#: pronterface.py:392 +#: pronterface.py:432 msgid "Connect to the printer" msgstr "Connecter l'imprimante" -#: pronterface.py:394 +#: pronterface.py:434 msgid "Disconnect" msgstr "Déconnecter" -#: pronterface.py:398 +#: pronterface.py:438 msgid "Reset" msgstr "Réinitialiser" -#: pronterface.py:401 -#: pronterface.py:579 +#: pronterface.py:441 +#: pronterface.py:687 msgid "Mini mode" msgstr "Mode réduit" -#: pronterface.py:407 +#: pronterface.py:455 msgid "" "Monitor\n" "printer" @@ -332,176 +243,189 @@ msgstr "" "Surveiller\n" "l'imprimante" -#: pronterface.py:416 +#: pronterface.py:465 msgid "Load file" msgstr "Charger un fichier" -#: pronterface.py:419 +#: pronterface.py:468 msgid "SD Upload" msgstr "Copier sur SD" -#: pronterface.py:423 +#: pronterface.py:472 msgid "SD Print" msgstr "Imprimer depuis SD" -#: pronterface.py:431 -#: pronterface.py:1004 -#: pronterface.py:1040 -#: pronterface.py:1088 -#: pronterface.py:1112 -#: pronterface.py:1139 -#: pronterface.py:1153 +#: pronterface.py:480 +#: pronterface.py:1280 +#: pronterface.py:1321 +#: pronterface.py:1370 +#: pronterface.py:1395 +#: pronterface.py:1427 +#: pronterface.py:1442 msgid "Pause" msgstr "Pause" -#: pronterface.py:445 +#: pronterface.py:494 msgid "Send" msgstr "Envoyer" -#: pronterface.py:453 -#: pronterface.py:511 +#: pronterface.py:502 +#: pronterface.py:603 msgid "mm/min" msgstr "mm/min" -#: pronterface.py:455 +#: pronterface.py:504 msgid "XY:" msgstr "XY:" -#: pronterface.py:457 +#: pronterface.py:506 msgid "Z:" msgstr "Z:" -#: pronterface.py:474 +#: pronterface.py:529 msgid "Heater:" msgstr "Buse :" -#: pronterface.py:482 -#: pronterface.py:494 +#: pronterface.py:532 +#: pronterface.py:552 +msgid "Off" +msgstr "Off" + +#: pronterface.py:544 +#: pronterface.py:564 msgid "Set" msgstr "Régler" -#: pronterface.py:486 +#: pronterface.py:549 msgid "Bed:" msgstr "Plateau :" -#: pronterface.py:505 +#: pronterface.py:597 msgid "mm" msgstr "mm" -#: pronterface.py:538 -#: pronterface.py:833 -#: pronterface.py:1034 +#: pronterface.py:636 +#: pronterface.py:1099 +#: pronterface.py:1315 msgid "Not connected to printer." msgstr "Imprimante non connectée" -#: pronterface.py:586 +#: pronterface.py:694 msgid "Full mode" msgstr "Mode complet" -#: pronterface.py:624 +#: pronterface.py:719 +msgid "Execute command: " +msgstr "Exécuter la commande :" + +#: pronterface.py:730 +msgid "click to add new custom button" +msgstr "Ajouter un bouton personnalisé" + +#: pronterface.py:751 msgid "Defines custom button. Usage: button \"title\" [/c \"colour\"] command" msgstr "Définit des boutons personnalidés. Utilisation : \"Libelle\" [/c \"couleur\"] commande" -#: pronterface.py:646 +#: pronterface.py:773 msgid "Custom button number should be between 0 and 63" msgstr "Les numéros des boutons personnalisés doivent être compris entre 0 et 63." -#: pronterface.py:736 +#: pronterface.py:865 msgid "Edit custom button '%s'" msgstr "Editer le bouton personnalisé n°'%s'" -#: pronterface.py:738 +#: pronterface.py:867 msgid "Move left <<" msgstr "Déplacer vers la gauche <<" -#: pronterface.py:741 +#: pronterface.py:870 msgid "Move right >>" msgstr "Déplacer vers la droite >>" -#: pronterface.py:745 +#: pronterface.py:874 msgid "Remove custom button '%s'" msgstr "Supprimer le bouton personnalisé n°'%s'" -#: pronterface.py:748 +#: pronterface.py:877 msgid "Add custom button" msgstr "Ajouter un bouton personnalisé" -#: pronterface.py:763 +#: pronterface.py:1022 msgid "event object missing" msgstr "evennement d'objet manquant" -#: pronterface.py:791 +#: pronterface.py:1050 msgid "Invalid period given." msgstr "La période donnée est invalide" -#: pronterface.py:794 +#: pronterface.py:1053 msgid "Monitoring printer." msgstr "Surveillance de l'imprimante" -#: pronterface.py:796 +#: pronterface.py:1055 msgid "Done monitoring." msgstr "Surveillance de l'imprimante effectuée." -#: pronterface.py:815 +#: pronterface.py:1077 msgid "Printer is online. " msgstr "L'imprimante est connectée" -#: pronterface.py:817 -#: pronterface.py:954 -#: pronterface.py:1002 +#: pronterface.py:1079 +#: pronterface.py:1226 +#: pronterface.py:1278 msgid "Loaded " msgstr "Chargé " -#: pronterface.py:820 +#: pronterface.py:1082 msgid "Bed" msgstr "Plateau" -#: pronterface.py:820 +#: pronterface.py:1082 msgid "Hotend" msgstr "Buse" -#: pronterface.py:823 +#: pronterface.py:1089 msgid " SD printing:%04.2f %%" msgstr "Impression SD : %04.2f %%" -#: pronterface.py:825 +#: pronterface.py:1091 msgid " Printing:%04.2f %%" msgstr "Impression : %04.2f %%" -#: pronterface.py:879 +#: pronterface.py:1149 msgid "Opening file failed." msgstr "L'ouverture du fichier a échoué" -#: pronterface.py:885 +#: pronterface.py:1155 msgid "Starting print" msgstr "Début de l'impression..." -#: pronterface.py:908 +#: pronterface.py:1178 msgid "Pick SD file" msgstr "Choisir un fichier sur la carte SD" -#: pronterface.py:908 +#: pronterface.py:1178 msgid "Select the file to print" msgstr "Sélectionnez le fichier à imprimer :" -#: pronterface.py:936 +#: pronterface.py:1206 msgid "Skeinforge execution failed." msgstr "Exécution de Skeinforge échoué" -#: pronterface.py:943 +#: pronterface.py:1213 msgid "Skeining..." msgstr "Skeining..." -#: pronterface.py:954 -#: pronterface.py:1002 +#: pronterface.py:1226 +#: pronterface.py:1278 msgid ", %d lines" msgstr ", %d lignes" -#: pronterface.py:963 +#: pronterface.py:1235 msgid "Skeining " msgstr "Skeining " -#: pronterface.py:965 +#: pronterface.py:1237 msgid "" "Skeinforge not found. \n" "Please copy Skeinforge into a directory named \"skeinforge\" in the same directory as this file." @@ -509,90 +433,140 @@ msgstr "" "Skeinforge non trouvé. \n" "Veuillez copier Skeinforge dans un répertoire nommé \"skeinforge\" placé dans le repertoire du programme." -#: pronterface.py:984 +#: pronterface.py:1256 msgid "Open file to print" msgstr "Ouvrir un fichier à imprimer" -#: pronterface.py:985 -msgid "STL and GCODE files (;*.gcode;*.g;*.stl;*.STL;)" -msgstr "Fichiers STL et GCODE (;*.gcode;*.g;*.stl;*.STL;)" +#: pronterface.py:1257 +msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)" +msgstr "Fichiers OBJ, STL et GCODE (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)" -#: pronterface.py:992 +#: pronterface.py:1264 msgid "File not found!" msgstr "Fichier non trouvé" -#: pronterface.py:1011 -msgid "mm of filament used in this print" -msgstr "mm de filament utilisés pour cette impression" +#: pronterface.py:1288 +msgid "mm of filament used in this print\n" +msgstr "mm de filament utilisés pour cette impression\n" -#: pronterface.py:1031 +#: pronterface.py:1289 +msgid "" +"mm in X\n" +"and is" +msgstr "" +"mm en X\n" +"et mesure" + +#: pronterface.py:1289 +#: pronterface.py:1290 +msgid "mm wide\n" +msgstr "mm de large\n" + +#: pronterface.py:1289 +#: pronterface.py:1290 +#: pronterface.py:1291 +msgid "mm to" +msgstr "mm à" + +#: pronterface.py:1289 +#: pronterface.py:1290 +#: pronterface.py:1291 +msgid "the print goes from" +msgstr "L'impression va de" + +#: pronterface.py:1290 +msgid "" +"mm in Y\n" +"and is" +msgstr "" +"mm en Y\n" +"et mesure" + +#: pronterface.py:1291 +msgid "mm high\n" +msgstr "mm de haut\n" + +#: pronterface.py:1291 +msgid "" +"mm in Z\n" +"and is" +msgstr "" +"mm en Z\n" +"et mesure" + +#: pronterface.py:1292 +msgid "Estimated duration (pessimistic): " +msgstr "Durée estimée (pessimiste)" + +#: pronterface.py:1312 msgid "No file loaded. Please use load first." msgstr "Aucun fichier chargé. Veuillez charger un fichier avant." -#: pronterface.py:1042 +#: pronterface.py:1323 msgid "Restart" msgstr "Recommencer" -#: pronterface.py:1046 +#: pronterface.py:1327 msgid "File upload complete" msgstr "Envoi du fichier terminé" -#: pronterface.py:1065 +#: pronterface.py:1346 msgid "Pick SD filename" msgstr "Lister les fichiers sur la carte SD" -#: pronterface.py:1081 +#: pronterface.py:1353 +msgid "Paused." +msgstr "En pause" + +#: pronterface.py:1363 msgid "Resume" msgstr "Reprendre" -#: pronterface.py:1147 +#: pronterface.py:1379 +msgid "Connecting..." +msgstr "Connection en cours..." + +#: pronterface.py:1410 +msgid "Disconnected." +msgstr "Déconnecté" + +#: pronterface.py:1435 +msgid "Reset." +msgstr "Réinitialiser" + +#: pronterface.py:1436 msgid "Are you sure you want to reset the printer?" msgstr "Etes-vous sûr de vouloir réinitialiser l'imprimante?" -#: pronterface.py:1147 +#: pronterface.py:1436 msgid "Reset?" msgstr "Réinitialiser ?" -#: pronterface.py:1226 +#: pronterface.py:1461 +msgid "Save" +msgstr "Enregistrer" + +#: pronterface.py:1519 msgid "Edit settings" msgstr "Modifier les paramètres" -#: pronterface.py:1228 +#: pronterface.py:1521 msgid "Defaults" msgstr "Paramètres par défaut" -#: pronterface.py:1250 +#: pronterface.py:1543 msgid "Custom button" msgstr "Commande personnalisée" -#: pronterface.py:1258 +#: pronterface.py:1551 msgid "Button title" msgstr "Titre du bouton" -#: pronterface.py:1261 +#: pronterface.py:1554 msgid "Command" msgstr "Commande" -#: pronterface.py:1270 +#: pronterface.py:1563 msgid "Color" msgstr "Couleur" -#~ msgid "&File" -#~ msgstr "&Fichier" - -#~ msgid "Clear console" -#~ msgstr "Effacer la console" - -#~ msgid " Clear output console" -#~ msgstr "Effacer le contenu de la console de sortie" - -#~ msgid "Macro name may contain only alphanumeric symbols and underscores" -#~ msgstr "" -#~ "Un nom de macro ne peut contenir que des caractères alphanumérique et des " -#~ "underscore (_)" - -#~ msgid "mm to" -#~ msgstr "mm à" - -#~ msgid "Save" -#~ msgstr "Enregistrer" diff --git a/locale/fr/LC_MESSAGES/pronterface.mo b/locale/fr/LC_MESSAGES/pronterface.mo index 62e3cb1680925e03067b629a2c1164899df31d93..ffc768977612487e3d8a122bec7cc7db98813594 100644 GIT binary patch delta 3751 zcmd7TYitzP8OHImHl(oe1utO0IQAHaV8C8{3Ad%?;@DgbCSbt04Y1xF+XH(sdogjS zvxJ1IQmL9~8bw8Es-}%13#BEpqN03gRcIB2(k4+`wM8PWDy1TAB1o%H6*X@E&+b?x z>X&}((Z2ILb9VO3nfJV7-`?=l*4(>+Y0nzk<3u%4GR>G*@L!+fK)c{KrV?Mpxp)Nw z_%4>?M|dy#IOx0-XXAa?f-R`uN3a4P!?So6XBd++3rdWc&cGtnJsXfOOta@&oXL4R z)?*iPPc!U|pF~Z32AAV=Sd5pEXEAReAM+-Md+_(D-~Tah&X~W_DP`a`Y9Z4&(L(&5 z0n`&zAs^G?xdB&jz7w_JG2Dt@LEYdjl%=c33AYuZ1g;UT5tljkkhE^pGPh9MbB~6eJ*(C z7c0oW27bbT_V5i9 zsEmJtns;W7Wv`?&A2rb~d<6I45xju+VFjyE3Rj?R(282%!`}D+>H!?o#3|1wJfB9@ z)OS#sxrDktcZH5p^bT?_^E-_DjQId{qdxMy3`bGL^nI+t*O7-XzwyRzARjZyVLi^B zSJ;XkBxxprXYmv&1Er*q1@QjU(H1O172C4H7iJ}@7S^K{umknO5!4f&M!i#tV1=UqcH^nM_+0M9s4a`*1s|242FPCOS_?H@t{^%-bB;e)AzRmnotGWesYg z5U$0CPzxHv0elX(;v}k=xA6E%`3_{r?8Q1fj#_|QL;f}4w-``$zKHesbJUZ)kNW-= zYC-=*KBkO~*Mgcnx8YLGZB%W1!}A5y-;q~Pwew@t)?P);`|H|VAw}02&|kJ&s7y?v zs=d-G{IC(VXKPSTbl7tcRh&uG0?whH@MriW{uy<{qYP>R8C1qj;bALz(zD7GXUntjRopdh*Sv@qX0AHtIDy?)jwWv$%rsmr*JIEo#fJqcWWP3mp~7 zN9e=dgkGENgxW#k5klE{ln4?h3AIDS0O1h*#8g{NXC0vwt7!ph-Gs6jC0d9F_5R;a z=Qz-|@Is6hU2 z^_S@LMw&5iY!|BN_7W*?Of_)C>x&+uiRdKsDzc0DLTpEEm)dZF{P6%sWj%lY2yP|5 zKzxxe(gc6N^3}fxL&PScfmlMQy7kIxPgfE9i8VxwP}@wX;8fIV`d_n=I7;j! z^3Oj?XCI+9NNgY|hkS*qxYULUm;^pXsM=MKYMBE0qwV!o#QLM9KR8L^7@-1HTTgW4 zdqxQ|<^-W?RNF>;Io~TBKL4qHn7*GVCiW1`M3H-D<{xtP);24i9I>NTI2N-;li8FN z$)+>OxYeJ{WRi)rpmD>$5@pN!e5NYGzz?T*>uv~5L`i6t2;9F1C;Avmtel_kS%>5LN(XIOJIn+j)~WWs6~w$o`R?(j`yX~;62kJ^!J#;_V#o&x<4wfxj&Lzw=6hFq%$#&jB`x(ALZEHzJ1+N z(>*ZYK3&#!PdJ;_-G5qE@4i>o=?l8c%0nCvl^>XRue{q=+kFAk z%!wScNSu%-KYXwwo4P!1Tehl1ox8PRFQqWJoXSX9vG7!N*jC8>U|!e6q4~RtN;f-^ zA;(UoE%v|B9jjjWztzb3s_to>32S)b`|-k46E9c)vQQScYgW7GYi<_xh1}zF z>)dm-i`NZ>vzh$f^Dw=BJ7dM|bT(yc`x!a-Un6~YN8F3GYZqHloAsv#?-oMW5+^>K N(n~;!M#5ZR{sUviDuDn1 delta 2770 zcmZA2e@vBC9LMoP@_ ztG-blzK}fVMMK$0j3Zu;HD)hPi{nChdYCbzaVMtYtC)<(a0K>Z0-m+)OE`-5ALzwl z@%_IqLpSXP9ExjjurXoNK}BPA*)JZkZbSMoyKoZjMLy<)z5fxa!!uZb7m>M}BxW-R zlW{nv;SkJ09x(-0A0{%ssieY8OdV<>%d9Ibv&HWvM>!t z;w)6Z)tH8hQT+t$_uUxB_+~p5rE(Xh;47$=zoiH8Bx*$;qB`ugp0<94TH!fdgcng; z{w5#+y!%2948#XsN}ylUGqOjCy{4l^(TGcgbK zwp3vcwxb3(i%RYHr~&%$F1(E^a3-r;g?n&3UJp~zjNIf)shf-waSCdMwWt*~V93Ra zQ4{!>bWFu7s0=03$ym%s9x-!K_m`tGxdG?kR#XO0p)wslPen8S6_u)+s8q)CYn_1v z)cw(@y~{!kJPq}`Ce%vXQKx?s`fv}bpI%gEK0}gf&e{9d`VE`wR5Zg|sF^3z&<}G_ z0~ew?@F5>l!9}lA6V_s1 z>ag8Fr7E5Sp$>CUTj51ba5idU71o8;M$}naiA~s!*?0oA!1Jhy^kJ*s|G%hcua`2K z25LdZHUZScwjjG=_Mr~po7PWI9sP(U_#5&u1ssF`&PPr34b)*fiWBg2)Of#RScmN< z75#}FPw!e`C930U)WG$qR0fcb*=~Ier_g>6bq1~=2i@F2osBqVuMCYs^*0`sfyt=9 zCne*^zgD_{8*IO6LofEAIyi{hs|ac(Ut2Gt4&hIz38b<-t*jik;%d~umr(ump)zv| z+c1^YJb^u#fn^#E zEy81O&avwCOAd2kQf8UGxd!uzjkev6vj|OY5z#>~c61V*SVgET?I*fwRh3nh5TVr1 zBOW4Jhzg>RPzh^)Rqi9!5*vteLhtH-rIktz@c`i`<`PQ3N;RRql>x{LRs8OZ3_r=}mga<$OBQ>kM&EaFsfF?)grKyVN=Cu8(P~b#{)-Oe&i?y{mfz z*QJfMWm6*mxa(a`!>DhZ`jiZ3e@gzKqK;t5xt21gxTMhI%l7(8XLt)dUXLe!NnK%s ze{--a*cmFEx4PS3nqBPidJ8>wo-1}*Q;)~?bO$17ql2zU;+XX==ehLD&XZ#gJN}HC z+`3J{wZV|zShJh&)LQP;S|dj?>SCOl%*B!Ynei^?MApWkRl)XkLI0*MCm}QA|I;tX aKJ9WIpXhUDPV954CgnPZCKV6X63o92DkTE| diff --git a/locale/pronterface.pot b/locale/pronterface.pot index fa4f0cc..7e07737 100644 --- a/locale/pronterface.pot +++ b/locale/pronterface.pot @@ -15,542 +15,523 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: pronterface.py:10 +#: pronterface.py:15 msgid "WX is not installed. This program requires WX to run." msgstr "" -#: pronterface.py:55 +#: pronterface.py:67 msgid "Printer Interface" msgstr "" -#: pronterface.py:67 -msgid "X+100" -msgstr "" - -#: pronterface.py:68 -msgid "X+10" -msgstr "" - -#: pronterface.py:69 -msgid "X+1" -msgstr "" - -#: pronterface.py:70 -msgid "X+0.1" -msgstr "" - -#: pronterface.py:71 -msgid "HomeX" -msgstr "" - -#: pronterface.py:72 -msgid "X-0.1" -msgstr "" - -#: pronterface.py:73 -msgid "X-1" -msgstr "" - -#: pronterface.py:74 -msgid "X-10" -msgstr "" - -#: pronterface.py:75 -msgid "X-100" -msgstr "" - -#: pronterface.py:76 -msgid "Y+100" -msgstr "" - -#: pronterface.py:77 -msgid "Y+10" -msgstr "" - -#: pronterface.py:78 -msgid "Y+1" -msgstr "" - -#: pronterface.py:79 -msgid "Y+0.1" -msgstr "" - #: pronterface.py:80 -msgid "HomeY" -msgstr "" - -#: pronterface.py:81 -msgid "Y-0.1" -msgstr "" - -#: pronterface.py:82 -msgid "Y-1" -msgstr "" - -#: pronterface.py:83 -msgid "Y-10" -msgstr "" - -#: pronterface.py:84 -msgid "Y-100" -msgstr "" - -#: pronterface.py:85 msgid "Motors off" msgstr "" -#: pronterface.py:86 -msgid "Z+10" -msgstr "" - -#: pronterface.py:87 -msgid "Z+1" -msgstr "" - -#: pronterface.py:88 -msgid "Z+0.1" -msgstr "" - -#: pronterface.py:89 -msgid "HomeZ" -msgstr "" - -#: pronterface.py:90 -msgid "Z-0.1" -msgstr "" - -#: pronterface.py:91 -msgid "Z-1" -msgstr "" - -#: pronterface.py:92 -msgid "Z-10" -msgstr "" - -#: pronterface.py:93 -msgid "Home" -msgstr "" - -#: pronterface.py:94 +#: pronterface.py:81 msgid "Check temp" msgstr "" -#: pronterface.py:95 +#: pronterface.py:82 msgid "Extrude" msgstr "" -#: pronterface.py:96 +#: pronterface.py:83 msgid "Reverse" msgstr "" -#: pronterface.py:112 +#: pronterface.py:99 msgid "" "# 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" msgstr "" -#: pronterface.py:117 +#: pronterface.py:104 msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc" msgstr "" -#: pronterface.py:118 +#: pronterface.py:105 msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt" msgstr "" -#: pronterface.py:141 pronterface.py:427 pronterface.py:956 -#: pronterface.py:1003 pronterface.py:1113 pronterface.py:1140 -#: pronterface.py:1154 +#: pronterface.py:130 pronterface.py:476 pronterface.py:1228 +#: pronterface.py:1279 pronterface.py:1396 pronterface.py:1428 +#: pronterface.py:1443 msgid "Print" msgstr "" -#: pronterface.py:145 -msgid "Printer is now online" +#: pronterface.py:134 +msgid "Printer is now online." msgstr "" -#: pronterface.py:194 +#: pronterface.py:188 msgid "Setting hotend temperature to " msgstr "" -#: pronterface.py:194 pronterface.py:215 +#: pronterface.py:188 pronterface.py:224 msgid " degrees Celsius." msgstr "" -#: pronterface.py:198 pronterface.py:219 +#: pronterface.py:207 pronterface.py:242 msgid "Printer is not online." msgstr "" -#: pronterface.py:200 +#: pronterface.py:209 msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0." msgstr "" -#: pronterface.py:202 pronterface.py:223 -msgid "You must enter a temperature." -msgstr "" - -#: pronterface.py:215 +#: pronterface.py:224 msgid "Setting bed temperature to " msgstr "" -#: pronterface.py:221 +#: pronterface.py:244 msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0." msgstr "" -#: pronterface.py:238 +#: pronterface.py:246 +msgid "You must enter a temperature." +msgstr "" + +#: pronterface.py:261 msgid "Do you want to erase the macro?" msgstr "" -#: pronterface.py:242 +#: pronterface.py:265 msgid "Cancelled." msgstr "" -#: pronterface.py:271 +#: pronterface.py:295 msgid " Opens file" msgstr "" -#: pronterface.py:271 +#: pronterface.py:295 msgid "&Open..." msgstr "" -#: pronterface.py:272 +#: pronterface.py:296 msgid " Edit open file" msgstr "" -#: pronterface.py:272 +#: pronterface.py:296 msgid "&Edit..." msgstr "" -#: pronterface.py:274 -msgid " Adjust SFACT settings" +#: pronterface.py:297 +msgid " Clear output console" msgstr "" -#: pronterface.py:274 -msgid "SFACT Settings" +#: pronterface.py:297 +msgid "Clear console" msgstr "" -#: pronterface.py:277 -msgid " Quickly adjust SFACT settings for active profile" -msgstr "" - -#: pronterface.py:277 -msgid "SFACT Quick Settings" -msgstr "" - -#: pronterface.py:281 +#: pronterface.py:298 msgid " Closes the Window" msgstr "" -#: pronterface.py:281 +#: pronterface.py:298 msgid "E&xit" msgstr "" -#: pronterface.py:282 -msgid "&Print" -msgstr "" - -#: pronterface.py:285 -msgid "&Macros" -msgstr "" - -#: pronterface.py:286 -msgid "<&New...>" -msgstr "" - -#: pronterface.py:287 -msgid " Options dialog" -msgstr "" - -#: pronterface.py:287 -msgid "&Options" -msgstr "" - -#: pronterface.py:288 -msgid "&Settings" +#: pronterface.py:299 +msgid "&File" msgstr "" #: pronterface.py:304 +msgid "&Macros" +msgstr "" + +#: pronterface.py:305 +msgid "<&New...>" +msgstr "" + +#: pronterface.py:306 +msgid " Options dialog" +msgstr "" + +#: pronterface.py:306 +msgid "&Options" +msgstr "" + +#: pronterface.py:308 +msgid " Adjust SFACT settings" +msgstr "" + +#: pronterface.py:308 +msgid "SFACT Settings" +msgstr "" + +#: pronterface.py:311 +msgid " Quickly adjust SFACT settings for active profile" +msgstr "" + +#: pronterface.py:311 +msgid "SFACT Quick Settings" +msgstr "" + +#: pronterface.py:315 +msgid "&Settings" +msgstr "" + +#: pronterface.py:331 msgid "Enter macro name" msgstr "" -#: pronterface.py:307 +#: pronterface.py:334 msgid "Macro name:" msgstr "" -#: pronterface.py:310 +#: pronterface.py:337 msgid "Ok" msgstr "" -#: pronterface.py:314 +#: pronterface.py:341 pronterface.py:1465 msgid "Cancel" msgstr "" -#: pronterface.py:332 +#: pronterface.py:359 msgid "' is being used by built-in command" msgstr "" -#: pronterface.py:332 +#: pronterface.py:359 msgid "Name '" msgstr "" -#: pronterface.py:368 -msgid "Port:" +#: pronterface.py:362 +msgid "Macro name may contain only alphanumeric symbols and underscores" msgstr "" -#: pronterface.py:390 +#: pronterface.py:411 +msgid "Port" +msgstr "" + +#: pronterface.py:430 msgid "Connect" msgstr "" -#: pronterface.py:392 +#: pronterface.py:432 msgid "Connect to the printer" msgstr "" -#: pronterface.py:394 +#: pronterface.py:434 msgid "Disconnect" msgstr "" -#: pronterface.py:398 +#: pronterface.py:438 msgid "Reset" msgstr "" -#: pronterface.py:401 pronterface.py:579 +#: pronterface.py:441 pronterface.py:687 msgid "Mini mode" msgstr "" -#: pronterface.py:407 +#: pronterface.py:455 msgid "" "Monitor\n" "printer" msgstr "" -#: pronterface.py:416 +#: pronterface.py:465 msgid "Load file" msgstr "" -#: pronterface.py:419 +#: pronterface.py:468 msgid "SD Upload" msgstr "" -#: pronterface.py:423 +#: pronterface.py:472 msgid "SD Print" msgstr "" -#: pronterface.py:431 pronterface.py:1004 pronterface.py:1040 -#: pronterface.py:1088 pronterface.py:1112 pronterface.py:1139 -#: pronterface.py:1153 +#: pronterface.py:480 pronterface.py:1280 pronterface.py:1321 +#: pronterface.py:1370 pronterface.py:1395 pronterface.py:1427 +#: pronterface.py:1442 msgid "Pause" msgstr "" -#: pronterface.py:445 +#: pronterface.py:494 msgid "Send" msgstr "" -#: pronterface.py:453 pronterface.py:511 +#: pronterface.py:502 pronterface.py:603 msgid "mm/min" msgstr "" -#: pronterface.py:455 +#: pronterface.py:504 msgid "XY:" msgstr "" -#: pronterface.py:457 +#: pronterface.py:506 msgid "Z:" msgstr "" -#: pronterface.py:474 +#: pronterface.py:529 msgid "Heater:" msgstr "" -#: pronterface.py:482 pronterface.py:494 +#: pronterface.py:532 pronterface.py:552 +msgid "Off" +msgstr "" + +#: pronterface.py:544 pronterface.py:564 msgid "Set" msgstr "" -#: pronterface.py:486 +#: pronterface.py:549 msgid "Bed:" msgstr "" -#: pronterface.py:505 +#: pronterface.py:597 msgid "mm" msgstr "" -#: pronterface.py:538 pronterface.py:833 pronterface.py:1034 +#: pronterface.py:636 pronterface.py:1099 pronterface.py:1315 msgid "Not connected to printer." msgstr "" -#: pronterface.py:586 +#: pronterface.py:694 msgid "Full mode" msgstr "" -#: pronterface.py:624 +#: pronterface.py:719 +msgid "Execute command: " +msgstr "" + +#: pronterface.py:730 +msgid "click to add new custom button" +msgstr "" + +#: pronterface.py:751 msgid "Defines custom button. Usage: button \"title\" [/c \"colour\"] command" msgstr "" -#: pronterface.py:646 +#: pronterface.py:773 msgid "Custom button number should be between 0 and 63" msgstr "" -#: pronterface.py:736 +#: pronterface.py:865 msgid "Edit custom button '%s'" msgstr "" -#: pronterface.py:738 +#: pronterface.py:867 msgid "Move left <<" msgstr "" -#: pronterface.py:741 +#: pronterface.py:870 msgid "Move right >>" msgstr "" -#: pronterface.py:745 +#: pronterface.py:874 msgid "Remove custom button '%s'" msgstr "" -#: pronterface.py:748 +#: pronterface.py:877 msgid "Add custom button" msgstr "" -#: pronterface.py:763 +#: pronterface.py:1022 msgid "event object missing" msgstr "" -#: pronterface.py:791 +#: pronterface.py:1050 msgid "Invalid period given." msgstr "" -#: pronterface.py:794 +#: pronterface.py:1053 msgid "Monitoring printer." msgstr "" -#: pronterface.py:796 +#: pronterface.py:1055 msgid "Done monitoring." msgstr "" -#: pronterface.py:815 +#: pronterface.py:1077 msgid "Printer is online. " msgstr "" -#: pronterface.py:817 pronterface.py:954 pronterface.py:1002 +#: pronterface.py:1079 pronterface.py:1226 pronterface.py:1278 msgid "Loaded " msgstr "" -#: pronterface.py:820 +#: pronterface.py:1082 msgid "Bed" msgstr "" -#: pronterface.py:820 +#: pronterface.py:1082 msgid "Hotend" msgstr "" -#: pronterface.py:823 +#: pronterface.py:1089 msgid " SD printing:%04.2f %%" msgstr "" -#: pronterface.py:825 +#: pronterface.py:1091 msgid " Printing:%04.2f %%" msgstr "" -#: pronterface.py:879 +#: pronterface.py:1149 msgid "Opening file failed." msgstr "" -#: pronterface.py:885 +#: pronterface.py:1155 msgid "Starting print" msgstr "" -#: pronterface.py:908 +#: pronterface.py:1178 msgid "Pick SD file" msgstr "" -#: pronterface.py:908 +#: pronterface.py:1178 msgid "Select the file to print" msgstr "" -#: pronterface.py:936 +#: pronterface.py:1206 msgid "Skeinforge execution failed." msgstr "" -#: pronterface.py:943 +#: pronterface.py:1213 msgid "Skeining..." msgstr "" -#: pronterface.py:954 pronterface.py:1002 +#: pronterface.py:1226 pronterface.py:1278 msgid ", %d lines" msgstr "" -#: pronterface.py:963 +#: pronterface.py:1235 msgid "Skeining " msgstr "" -#: pronterface.py:965 +#: pronterface.py:1237 msgid "" "Skeinforge not found. \n" "Please copy Skeinforge into a directory named \"skeinforge\" in the same directory as this file." msgstr "" -#: pronterface.py:984 +#: pronterface.py:1256 msgid "Open file to print" msgstr "" -#: pronterface.py:985 -msgid "STL and GCODE files (;*.gcode;*.g;*.stl;*.STL;)" +#: pronterface.py:1257 +msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)" msgstr "" -#: pronterface.py:992 +#: pronterface.py:1264 msgid "File not found!" msgstr "" -#: pronterface.py:1011 -msgid "mm of filament used in this print" +#: pronterface.py:1288 +msgid "" +"mm of filament used in this print\n" msgstr "" -#: pronterface.py:1031 +#: pronterface.py:1289 +msgid "" +"mm in X\n" +"and is" +msgstr "" + +#: pronterface.py:1289 pronterface.py:1290 +msgid "" +"mm wide\n" +msgstr "" + +#: pronterface.py:1289 pronterface.py:1290 pronterface.py:1291 +msgid "mm to" +msgstr "" + +#: pronterface.py:1289 pronterface.py:1290 pronterface.py:1291 +msgid "the print goes from" +msgstr "" + +#: pronterface.py:1290 +msgid "" +"mm in Y\n" +"and is" +msgstr "" + +#: pronterface.py:1291 +msgid "" +"mm high\n" +msgstr "" + +#: pronterface.py:1291 +msgid "" +"mm in Z\n" +"and is" +msgstr "" + +#: pronterface.py:1292 +msgid "Estimated duration (pessimistic): " +msgstr "" + +#: pronterface.py:1312 msgid "No file loaded. Please use load first." msgstr "" -#: pronterface.py:1042 +#: pronterface.py:1323 msgid "Restart" msgstr "" -#: pronterface.py:1046 +#: pronterface.py:1327 msgid "File upload complete" msgstr "" -#: pronterface.py:1065 +#: pronterface.py:1346 msgid "Pick SD filename" msgstr "" -#: pronterface.py:1081 +#: pronterface.py:1353 +msgid "Paused." +msgstr "" + +#: pronterface.py:1363 msgid "Resume" msgstr "" -#: pronterface.py:1147 +#: pronterface.py:1379 +msgid "Connecting..." +msgstr "" + +#: pronterface.py:1410 +msgid "Disconnected." +msgstr "" + +#: pronterface.py:1435 +msgid "Reset." +msgstr "" + +#: pronterface.py:1436 msgid "Are you sure you want to reset the printer?" msgstr "" -#: pronterface.py:1147 +#: pronterface.py:1436 msgid "Reset?" msgstr "" -#: pronterface.py:1226 +#: pronterface.py:1461 +msgid "Save" +msgstr "" + +#: pronterface.py:1519 msgid "Edit settings" msgstr "" -#: pronterface.py:1228 +#: pronterface.py:1521 msgid "Defaults" msgstr "" -#: pronterface.py:1250 +#: pronterface.py:1543 msgid "Custom button" msgstr "" -#: pronterface.py:1258 +#: pronterface.py:1551 msgid "Button title" msgstr "" -#: pronterface.py:1261 +#: pronterface.py:1554 msgid "Command" msgstr "" -#: pronterface.py:1270 +#: pronterface.py:1563 msgid "Color" msgstr ""