commit
05058c5bff
|
@ -25,6 +25,10 @@ now there is only one, for German. New ones can be created:
|
|||
# Edit the .po file to add messages for newlang
|
||||
msgfmt -o ${newlang}.mo ${newlang}.po
|
||||
|
||||
To update a previously created message catalog from the template, use :
|
||||
|
||||
msgmerge -U locale/fr/LC_MESSAGES/${lang}.po locale/pronterface.pot
|
||||
|
||||
As currently coded, the default location for these message catalogs is
|
||||
|
||||
/usr/share/pronterface/locale/
|
||||
|
|
|
@ -0,0 +1,997 @@
|
|||
#!/usr/bin/python
|
||||
import os
|
||||
import math
|
||||
import wx
|
||||
from wx import glcanvas
|
||||
import time
|
||||
import threading
|
||||
|
||||
import pyglet
|
||||
pyglet.options['shadow_window'] = False
|
||||
pyglet.options['debug_gl'] = False
|
||||
from pyglet.gl import *
|
||||
|
||||
import stltool
|
||||
|
||||
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):
|
||||
# Forcing a no full repaint to stop flickering
|
||||
style = style | wx.NO_FULL_REPAINT_ON_RESIZE
|
||||
#call super function
|
||||
super(GLPanel, self).__init__(parent, id, pos, size, style)
|
||||
|
||||
#init gl canvas data
|
||||
self.GLinitialized = False
|
||||
attribList = (glcanvas.WX_GL_RGBA, # RGBA
|
||||
glcanvas.WX_GL_DOUBLEBUFFER, # Double Buffered
|
||||
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.sizer.Add(self.canvas, 1, wx.EXPAND)
|
||||
self.SetSizer(self.sizer)
|
||||
#self.sizer.Fit(self)
|
||||
self.Layout()
|
||||
|
||||
# bind events
|
||||
self.canvas.Bind(wx.EVT_ERASE_BACKGROUND, self.processEraseBackgroundEvent)
|
||||
self.canvas.Bind(wx.EVT_SIZE, self.processSizeEvent)
|
||||
self.canvas.Bind(wx.EVT_PAINT, self.processPaintEvent)
|
||||
|
||||
#==========================================================================
|
||||
# Canvas Proxy Methods
|
||||
#==========================================================================
|
||||
def GetGLExtents(self):
|
||||
'''Get the extents of the OpenGL canvas.'''
|
||||
return self.canvas.GetClientSize()
|
||||
|
||||
def SwapBuffers(self):
|
||||
'''Swap the OpenGL buffers.'''
|
||||
self.canvas.SwapBuffers()
|
||||
|
||||
#==========================================================================
|
||||
# wxPython Window Handlers
|
||||
#==========================================================================
|
||||
def processEraseBackgroundEvent(self, event):
|
||||
'''Process the erase background event.'''
|
||||
pass # Do nothing, to avoid flashing on MSWin
|
||||
|
||||
def processSizeEvent(self, event):
|
||||
'''Process the resize event.'''
|
||||
if self.canvas.GetContext():
|
||||
# Make sure the frame is shown before calling SetCurrent.
|
||||
self.Show()
|
||||
self.canvas.SetCurrent()
|
||||
size = self.GetGLExtents()
|
||||
self.winsize = (size.width, size.height)
|
||||
self.width, self.height = size.width, size.height
|
||||
self.OnReshape(size.width, size.height)
|
||||
self.canvas.Refresh(False)
|
||||
event.Skip()
|
||||
|
||||
def processPaintEvent(self, event):
|
||||
'''Process the drawing event.'''
|
||||
self.canvas.SetCurrent()
|
||||
|
||||
# This is a 'perfect' time to initialize OpenGL ... only if we need to
|
||||
if not self.GLinitialized:
|
||||
self.OnInitGL()
|
||||
self.GLinitialized = True
|
||||
|
||||
self.OnDraw()
|
||||
event.Skip()
|
||||
|
||||
def Destroy(self):
|
||||
#clean up the pyglet OpenGL context
|
||||
#self.pygletcontext.destroy()
|
||||
#call the super method
|
||||
super(wx.Panel, self).Destroy()
|
||||
|
||||
#==========================================================================
|
||||
# GLFrame OpenGL Event Handlers
|
||||
#==========================================================================
|
||||
def OnInitGL(self):
|
||||
'''Initialize OpenGL for use in the window.'''
|
||||
#create a pyglet context for this panel
|
||||
self.pmat = (GLdouble * 16)()
|
||||
self.mvmat = (GLdouble * 16)()
|
||||
self.pygletcontext = Context(current_context)
|
||||
self.pygletcontext.set_current()
|
||||
self.dist = 1000
|
||||
self.vpmat = None
|
||||
#normal gl init
|
||||
glClearColor(0, 0, 0, 1)
|
||||
glColor3f(1, 0, 0)
|
||||
glEnable(GL_DEPTH_TEST)
|
||||
glEnable(GL_CULL_FACE)
|
||||
# Uncomment this line for a wireframe view
|
||||
#glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
|
||||
|
||||
# Simple light setup. On Windows GL_LIGHT0 is enabled by default,
|
||||
# but this is not the case on Linux or Mac, so remember to always
|
||||
# include it.
|
||||
glEnable(GL_LIGHTING)
|
||||
glEnable(GL_LIGHT0)
|
||||
glEnable(GL_LIGHT1)
|
||||
|
||||
# Define a simple function to create ctypes arrays of floats:
|
||||
def vec(*args):
|
||||
return (GLfloat * len(args))(*args)
|
||||
|
||||
glLightfv(GL_LIGHT0, GL_POSITION, vec(.5, .5, 1, 0))
|
||||
glLightfv(GL_LIGHT0, GL_SPECULAR, vec(.5, .5, 1, 1))
|
||||
glLightfv(GL_LIGHT0, GL_DIFFUSE, vec(1, 1, 1, 1))
|
||||
glLightfv(GL_LIGHT1, GL_POSITION, vec(1, 0, .5, 0))
|
||||
glLightfv(GL_LIGHT1, GL_DIFFUSE, vec(.5, .5, .5, 1))
|
||||
glLightfv(GL_LIGHT1, GL_SPECULAR, vec(1, 1, 1, 1))
|
||||
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.5, 0, 0.3, 1))
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, vec(1, 1, 1, 1))
|
||||
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 50)
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, vec(0, 0.1, 0, 0.9))
|
||||
#create objects to draw
|
||||
#self.create_objects()
|
||||
|
||||
def OnReshape(self, width, height):
|
||||
'''Reshape the OpenGL viewport based on the dimensions of the window.'''
|
||||
|
||||
if not self.GLinitialized:
|
||||
self.OnInitGL()
|
||||
self.GLinitialized = True
|
||||
self.pmat = (GLdouble * 16)()
|
||||
self.mvmat = (GLdouble * 16)()
|
||||
glViewport(0, 0, width, height)
|
||||
glMatrixMode(GL_PROJECTION)
|
||||
glLoadIdentity()
|
||||
gluPerspective(60., width / float(height), .1, 1000.)
|
||||
glMatrixMode(GL_MODELVIEW)
|
||||
glLoadIdentity()
|
||||
#pyglet stuff
|
||||
self.vpmat = (GLint * 4)(0, 0, *list(self.GetClientSize()))
|
||||
glGetDoublev(GL_PROJECTION_MATRIX, self.pmat)
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, self.mvmat)
|
||||
#glMatrixMode(GL_PROJECTION)
|
||||
|
||||
# Wrap text to the width of the window
|
||||
if self.GLinitialized:
|
||||
self.pygletcontext.set_current()
|
||||
self.update_object_resize()
|
||||
|
||||
def OnDraw(self, *args, **kwargs):
|
||||
"""Draw the window."""
|
||||
#clear the context
|
||||
self.canvas.SetCurrent()
|
||||
self.pygletcontext.set_current()
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
||||
#draw objects
|
||||
self.draw_objects()
|
||||
#update screen
|
||||
self.SwapBuffers()
|
||||
|
||||
#==========================================================================
|
||||
# To be implemented by a sub class
|
||||
#==========================================================================
|
||||
def create_objects(self):
|
||||
'''create opengl objects when opengl is initialized'''
|
||||
pass
|
||||
|
||||
def update_object_resize(self):
|
||||
'''called when the window recieves only if opengl is initialized'''
|
||||
pass
|
||||
|
||||
def draw_objects(self):
|
||||
'''called in the middle of ondraw after the buffer has been cleared'''
|
||||
pass
|
||||
|
||||
|
||||
def _dist(dist):
|
||||
"""return axis length, or 0 if None"""
|
||||
if dist is None:
|
||||
return 0
|
||||
else:
|
||||
return float(dist)
|
||||
|
||||
class gcpoint(object):
|
||||
"""gcode point
|
||||
stub for first line"""
|
||||
def __init__(self, x=0,y=0,z=0,e=0):
|
||||
self.x = x
|
||||
self.y = y
|
||||
self.z = z
|
||||
self.e = e
|
||||
self.length = 0
|
||||
|
||||
|
||||
class gcline(object):
|
||||
"""gcode move line
|
||||
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):
|
||||
if prev_gcline is None:
|
||||
self.prev_gcline = gcpoint()
|
||||
else:
|
||||
self.prev_gcline = prev_gcline
|
||||
if x is None:
|
||||
self.x = self.prev_gcline.x
|
||||
else:
|
||||
self.x = float(x)
|
||||
if y is None:
|
||||
self.y = self.prev_gcline.y
|
||||
else:
|
||||
self.y = float(y)
|
||||
if z is None:
|
||||
self.z = self.prev_gcline.z
|
||||
else:
|
||||
self.z = float(z)
|
||||
if e is None:
|
||||
self.e = self.prev_gcline.e
|
||||
else:
|
||||
self.e = float(e)
|
||||
|
||||
self.f = f
|
||||
|
||||
self.orgline = orgline
|
||||
|
||||
self.calc_delta()
|
||||
self.calc_len()
|
||||
|
||||
def __str__(self):
|
||||
return u"line from %s,%s,%s to %s,%s,%s with extrusion ratio %s and feedrate %s\n%s" % (
|
||||
self.prev_gcline.x,
|
||||
self.prev_gcline.y,
|
||||
self.prev_gcline.z,
|
||||
self.x,
|
||||
self.y,
|
||||
self.z,
|
||||
self.extrusion_ratio,
|
||||
self.f,
|
||||
self.orgline,
|
||||
)
|
||||
|
||||
def calc_delta(self, prev_gcline=None):
|
||||
if prev_gcline is None:
|
||||
prev_gcline = self.prev_gcline
|
||||
if self.prev_gcline is not None:
|
||||
self.dx = self.x - prev_gcline.x
|
||||
self.dy = self.y - prev_gcline.y
|
||||
self.dz = self.z - prev_gcline.z
|
||||
self.de = self.e - prev_gcline.e
|
||||
else:
|
||||
self.dx = self.x
|
||||
self.dy = self.y
|
||||
self.dz = self.z
|
||||
self.de = self.e
|
||||
|
||||
def calc_len(self):
|
||||
if self.dz != 0:
|
||||
self.length = math.sqrt(self.dx**2 + self.dy**2 + self.dz**2)
|
||||
else:
|
||||
self.length = math.sqrt(self.dx**2 + self.dy**2)
|
||||
if self.de:
|
||||
self.extrusion_ratio = self.length / self.de
|
||||
else:
|
||||
self.extrusion_ratio = 0
|
||||
|
||||
def glline(self):
|
||||
return [
|
||||
self.prev_gcline.x,
|
||||
self.prev_gcline.y,
|
||||
self.prev_gcline.z,
|
||||
self.x,
|
||||
self.y,
|
||||
self.z,
|
||||
]
|
||||
def glcolor(self, upper_limit = None, lower_limit = 0, max_feedrate = 0):
|
||||
if self.extrusion_ratio == 0:
|
||||
return [255,255,255,0,0,0]
|
||||
else:
|
||||
blue_color = 0
|
||||
green_color = 0
|
||||
if upper_limit is not None:
|
||||
if self.extrusion_ratio <= lower_limit:
|
||||
blue_color = 0
|
||||
else:
|
||||
blue_color = int ((self.extrusion_ratio - lower_limit) / (upper_limit - lower_limit) * 255)
|
||||
else:
|
||||
blue_color = 0
|
||||
if max_feedrate > 0 and self.f > 0:
|
||||
green_color = int((self.f/max_feedrate) * 255)
|
||||
|
||||
if green_color > 255:
|
||||
green_color = 255
|
||||
if green_color < 0:
|
||||
green_color = 0
|
||||
if blue_color > 255:
|
||||
blue_color = 255
|
||||
if blue_color < 0:
|
||||
blue_color = 0
|
||||
return[255,green_color,blue_color,128,green_color,blue_color/4]
|
||||
|
||||
|
||||
def float_from_line(axe, line):
|
||||
return float(line.split(axe)[1].split(" ")[0])
|
||||
|
||||
class gcThreadRenderer(threading.Thread):
|
||||
def __init__(self, gcview, lines):
|
||||
threading.Thread.__init__(self)
|
||||
self.gcview = gcview
|
||||
self.lines = lines
|
||||
print "q init"
|
||||
|
||||
def run(self):
|
||||
for line in self.lines:
|
||||
layer_name = line.z
|
||||
if line.z not in self.gcview.layers:
|
||||
self.gcview.layers[line.z] = pyglet.graphics.Batch()
|
||||
self.gcview.layerlist = self.gcview.layers.keys()
|
||||
self.gcview.layerlist.sort()
|
||||
self.gcview.layers[line.z].add(2, GL_LINES, None, ("v3f", line.glline()), ("c3B", line.glcolor(self.gcview.upper_limit, self.gcview.lower_limit, self.gcview.max_feedrate)))
|
||||
self.gcview.t2 = time.time()
|
||||
print "Rendered lines in %fs" % (self.gcview.t2-self.gcview.t1)
|
||||
|
||||
class gcview(object):
|
||||
"""gcode visualiser
|
||||
Holds opengl objects for all layers
|
||||
"""
|
||||
def __init__(self, lines, batch, w=0.5, h=0.5):
|
||||
if len(lines) == 0:
|
||||
return
|
||||
print "Loading %s lines" % (len(lines))
|
||||
#End pos of previous mode
|
||||
self.prev = gcpoint()
|
||||
# Correction for G92 moves
|
||||
self.delta = [0, 0, 0, 0]
|
||||
self.layers = {}
|
||||
self.t0 = time.time()
|
||||
self.lastf = 0
|
||||
lines = [self.transform(i) for i in lines]
|
||||
lines = [i for i in lines if i is not None]
|
||||
self.t1 = time.time()
|
||||
print "transformed %s lines in %fs" % (len(lines), self.t1- self.t0)
|
||||
self.upper_limit = 0
|
||||
self.lower_limit = None
|
||||
self.max_feedrate = 0
|
||||
for line in lines:
|
||||
if line.extrusion_ratio and line.length > 0.005: #lines shorter than 0.003 can have large extrusion ratio
|
||||
if line.extrusion_ratio > self.upper_limit:
|
||||
self.upper_limit = line.extrusion_ratio
|
||||
if self.lower_limit is None or line.extrusion_ratio < self.lower_limit:
|
||||
self.lower_limit = line.extrusion_ratio
|
||||
if line.f > self.max_feedrate:
|
||||
self.max_feedrate = line.f
|
||||
#print upper_limit, lower_limit
|
||||
#self.render_gl(lines)
|
||||
q = gcThreadRenderer(self, lines)
|
||||
q.setDaemon(True)
|
||||
q.start()
|
||||
|
||||
|
||||
|
||||
|
||||
def transform(self, line):
|
||||
"""transforms line of gcode into gcline object (or None if its not move)
|
||||
Tracks coordinates across resets in self.delta
|
||||
"""
|
||||
orgline = line
|
||||
line = line.split(";")[0]
|
||||
cur = [None, None, None, None, None]
|
||||
if len(line) > 0:
|
||||
if "G92" in line:
|
||||
#Recalculate delta on G92 (reset)
|
||||
if("X" in line):
|
||||
try:
|
||||
self.delta[0] = float_from_line("X", line) + self.prev.x
|
||||
except:
|
||||
self.delta[0] = 0
|
||||
if("Y" in line):
|
||||
try:
|
||||
self.delta[1] = float_from_line("Y", line) + self.prev.y
|
||||
except:
|
||||
self.delta[1] = 0
|
||||
if("Z" in line):
|
||||
try:
|
||||
self.delta[2] = float_from_line("Z", line) + self.prev.z
|
||||
except:
|
||||
self.delta[2] = 0
|
||||
if("E" in line):
|
||||
try:
|
||||
self.delta[3] = float_from_line("E", line) + self.prev.e
|
||||
except:
|
||||
self.delta[3] = 0
|
||||
return None
|
||||
|
||||
if "G1" in line or "G0" in line:
|
||||
#Create new gcline
|
||||
if("X" in line):
|
||||
cur[0] = float_from_line("X", line) + self.delta[0]
|
||||
if("Y" in line):
|
||||
cur[1] = float_from_line("Y", line) + self.delta[1]
|
||||
if("Z" in line):
|
||||
cur[2] = float_from_line("Z", line) + self.delta[2]
|
||||
if("E" in line):
|
||||
cur[3] = float_from_line("E", line) + self.delta[3]
|
||||
if "F" in line:
|
||||
cur[4] = float_from_line("F", line)
|
||||
|
||||
|
||||
if cur == [None, None, None, None, None]:
|
||||
return None
|
||||
else:
|
||||
#print cur
|
||||
if cur[4] is None:
|
||||
cur[4] = self.lastf
|
||||
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)
|
||||
self.prev = r
|
||||
return r
|
||||
return None
|
||||
|
||||
def delete(self):
|
||||
#for i in self.vlists:
|
||||
# i.delete()
|
||||
#self.vlists = []
|
||||
pass
|
||||
|
||||
|
||||
def trackball(p1x, p1y, p2x, p2y, r):
|
||||
TRACKBALLSIZE = r
|
||||
|
||||
#float a[3]; /* Axis of rotation */
|
||||
#float phi; /* how much to rotate about axis */
|
||||
#float p1[3], p2[3], d[3];
|
||||
#float t;
|
||||
|
||||
if (p1x == p2x and p1y == p2y):
|
||||
return [0.0, 0.0, 0.0, 1.0]
|
||||
|
||||
p1 = [p1x, p1y, project_to_sphere(TRACKBALLSIZE, p1x, p1y)]
|
||||
p2 = [p2x, p2y, project_to_sphere(TRACKBALLSIZE, p2x, p2y)]
|
||||
a = stltool.cross(p2, p1)
|
||||
|
||||
d = map(lambda x, y: x - y, p1, p2)
|
||||
t = math.sqrt(sum(map(lambda x: x * x, d))) / (2.0 * TRACKBALLSIZE)
|
||||
|
||||
if (t > 1.0):
|
||||
t = 1.0
|
||||
if (t < -1.0):
|
||||
t = -1.0
|
||||
phi = 2.0 * math.asin(t)
|
||||
|
||||
return axis_to_quat(a, phi)
|
||||
|
||||
|
||||
def vec(*args):
|
||||
return (GLfloat * len(args))(*args)
|
||||
|
||||
|
||||
def axis_to_quat(a, phi):
|
||||
#print a, phi
|
||||
lena = math.sqrt(sum(map(lambda x: x * x, a)))
|
||||
q = map(lambda x: x * (1 / lena), a)
|
||||
q = map(lambda x: x * math.sin(phi / 2.0), q)
|
||||
q.append(math.cos(phi / 2.0))
|
||||
return q
|
||||
|
||||
|
||||
def build_rotmatrix(q):
|
||||
m = (GLdouble * 16)()
|
||||
m[0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2])
|
||||
m[1] = 2.0 * (q[0] * q[1] - q[2] * q[3])
|
||||
m[2] = 2.0 * (q[2] * q[0] + q[1] * q[3])
|
||||
m[3] = 0.0
|
||||
|
||||
m[4] = 2.0 * (q[0] * q[1] + q[2] * q[3])
|
||||
m[5] = 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0])
|
||||
m[6] = 2.0 * (q[1] * q[2] - q[0] * q[3])
|
||||
m[7] = 0.0
|
||||
|
||||
m[8] = 2.0 * (q[2] * q[0] - q[1] * q[3])
|
||||
m[9] = 2.0 * (q[1] * q[2] + q[0] * q[3])
|
||||
m[10] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0])
|
||||
m[11] = 0.0
|
||||
|
||||
m[12] = 0.0
|
||||
m[13] = 0.0
|
||||
m[14] = 0.0
|
||||
m[15] = 1.0
|
||||
return m
|
||||
|
||||
|
||||
def project_to_sphere(r, x, y):
|
||||
d = math.sqrt(x * x + y * y)
|
||||
if (d < r * 0.70710678118654752440):
|
||||
return math.sqrt(r * r - d * d)
|
||||
else:
|
||||
t = r / 1.41421356237309504880
|
||||
return t * t / d
|
||||
|
||||
|
||||
def mulquat(q1, rq):
|
||||
return [q1[3] * rq[0] + q1[0] * rq[3] + q1[1] * rq[2] - q1[2] * rq[1],
|
||||
q1[3] * rq[1] + q1[1] * rq[3] + q1[2] * rq[0] - q1[0] * rq[2],
|
||||
q1[3] * rq[2] + q1[2] * rq[3] + q1[0] * rq[1] - q1[1] * rq[0],
|
||||
q1[3] * rq[3] - q1[0] * rq[0] - q1[1] * rq[1] - q1[2] * rq[2]]
|
||||
|
||||
|
||||
class TestGlPanel(GLPanel):
|
||||
|
||||
def __init__(self, parent, size, id=wx.ID_ANY):
|
||||
super(TestGlPanel, self).__init__(parent, id, wx.DefaultPosition, size, 0)
|
||||
self.batches = []
|
||||
self.rot = 0
|
||||
self.canvas.Bind(wx.EVT_MOUSE_EVENTS, self.move)
|
||||
self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.double)
|
||||
self.initialized = 1
|
||||
self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.wheel)
|
||||
self.parent = parent
|
||||
self.initpos = None
|
||||
self.dist = 200
|
||||
self.bedsize = [200, 200]
|
||||
self.transv = [0, 0, -self.dist]
|
||||
self.basequat = [0, 0, 0, 1]
|
||||
wx.CallAfter(self.forceresize)
|
||||
self.mousepos = [0, 0]
|
||||
|
||||
def double(self, event):
|
||||
p = event.GetPositionTuple()
|
||||
sz = self.GetClientSize()
|
||||
v = map(lambda m, w, b: b * m / w, p, sz, self.bedsize)
|
||||
v[1] = self.bedsize[1] - v[1]
|
||||
v += [300]
|
||||
print v
|
||||
self.add_file("../prusa/metric-prusa/x-end-idler.stl", v)
|
||||
|
||||
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()
|
||||
self.initialized = 0
|
||||
|
||||
def move_shape(self, delta):
|
||||
"""moves shape (selected in l, which is list ListBox of shapes)
|
||||
by an offset specified in tuple delta.
|
||||
Positive numbers move to (rigt, down)"""
|
||||
name = self.parent.l.GetSelection()
|
||||
if name == wx.NOT_FOUND:
|
||||
return False
|
||||
|
||||
name = self.parent.l.GetString(name)
|
||||
|
||||
model = self.parent.models[name]
|
||||
model.offsets = [
|
||||
model.offsets[0] + delta[0],
|
||||
model.offsets[1] + delta[1],
|
||||
model.offsets[2]
|
||||
]
|
||||
self.Refresh()
|
||||
return True
|
||||
|
||||
def move(self, event):
|
||||
"""react to mouse actions:
|
||||
no mouse: show red mousedrop
|
||||
LMB: move active object,
|
||||
with shift rotate viewport
|
||||
RMB: nothing
|
||||
with shift move viewport
|
||||
"""
|
||||
if event.Dragging() and event.LeftIsDown():
|
||||
if self.initpos == None:
|
||||
self.initpos = event.GetPositionTuple()
|
||||
else:
|
||||
if not event.ShiftDown():
|
||||
currentpos = event.GetPositionTuple()
|
||||
delta = (
|
||||
(currentpos[0] - self.initpos[0]),
|
||||
-(currentpos[1] - self.initpos[1])
|
||||
)
|
||||
self.move_shape(delta)
|
||||
self.initpos = None
|
||||
return
|
||||
#print self.initpos
|
||||
p1 = self.initpos
|
||||
self.initpos = None
|
||||
p2 = event.GetPositionTuple()
|
||||
sz = self.GetClientSize()
|
||||
p1x = (float(p1[0]) - sz[0] / 2) / (sz[0] / 2)
|
||||
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
|
||||
quat = trackball(p1x, p1y, p2x, p2y, -self.transv[2] / 250.0)
|
||||
if self.rot:
|
||||
self.basequat = mulquat(self.basequat, quat)
|
||||
#else:
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, self.mvmat)
|
||||
#self.basequat = quatx
|
||||
mat = build_rotmatrix(self.basequat)
|
||||
glLoadIdentity()
|
||||
glTranslatef(self.transv[0], self.transv[1], 0)
|
||||
glTranslatef(0, 0, self.transv[2])
|
||||
glMultMatrixd(mat)
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, self.mvmat)
|
||||
self.rot = 1
|
||||
|
||||
elif event.ButtonUp(wx.MOUSE_BTN_LEFT):
|
||||
if self.initpos is not None:
|
||||
self.initpos = None
|
||||
elif event.ButtonUp(wx.MOUSE_BTN_RIGHT):
|
||||
if self.initpos is not None:
|
||||
self.initpos = None
|
||||
|
||||
elif event.Dragging() and event.RightIsDown() and event.ShiftDown():
|
||||
if self.initpos is None:
|
||||
self.initpos = event.GetPositionTuple()
|
||||
else:
|
||||
p1 = self.initpos
|
||||
p2 = event.GetPositionTuple()
|
||||
sz = self.GetClientSize()
|
||||
p1 = list(p1)
|
||||
p2 = list(p2)
|
||||
p1[1] *= -1
|
||||
p2[1] *= -1
|
||||
|
||||
self.transv = map(lambda x, y, z, c: c - self.dist * (x - y) / z, list(p1) + [0], list(p2) + [0], list(sz) + [1], self.transv)
|
||||
|
||||
glLoadIdentity()
|
||||
glTranslatef(self.transv[0], self.transv[1], 0)
|
||||
glTranslatef(0, 0, self.transv[2])
|
||||
if(self.rot):
|
||||
glMultMatrixd(build_rotmatrix(self.basequat))
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, self.mvmat)
|
||||
self.rot = 1
|
||||
self.initpos = None
|
||||
else:
|
||||
#mouse is moving without a button press
|
||||
p = event.GetPositionTuple()
|
||||
sz = self.GetClientSize()
|
||||
v = map(lambda m, w, b: b * m / w, p, sz, self.bedsize)
|
||||
v[1] = self.bedsize[1] - v[1]
|
||||
self.mousepos = v
|
||||
|
||||
def rotate_shape(self, angle):
|
||||
"""rotates acive shape
|
||||
positive angle is clockwise
|
||||
"""
|
||||
name = self.parent.l.GetSelection()
|
||||
if name == wx.NOT_FOUND:
|
||||
return False
|
||||
name = self.parent.l.GetString(name)
|
||||
model = self.parent.models[name]
|
||||
model.rot += angle
|
||||
|
||||
def wheel(self, event):
|
||||
"""react to mouse wheel actions:
|
||||
rotate object
|
||||
with shift zoom viewport
|
||||
"""
|
||||
z = event.GetWheelRotation()
|
||||
angle = 10
|
||||
if not event.ShiftDown():
|
||||
i = self.parent.l.GetSelection()
|
||||
|
||||
if i < 0:
|
||||
try:
|
||||
self.parent.setlayerindex(z)
|
||||
except:
|
||||
pass
|
||||
return
|
||||
|
||||
if z > 0:
|
||||
self.rotate_shape(angle / 2)
|
||||
else:
|
||||
self.rotate_shape(-angle / 2)
|
||||
return
|
||||
if z > 0:
|
||||
self.transv[2] += angle
|
||||
else:
|
||||
self.transv[2] -= angle
|
||||
|
||||
glLoadIdentity()
|
||||
glTranslatef(*self.transv)
|
||||
if(self.rot):
|
||||
glMultMatrixd(build_rotmatrix(self.basequat))
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, self.mvmat)
|
||||
self.rot = 1
|
||||
|
||||
def keypress(self, event):
|
||||
"""gets keypress events and moves/rotates acive shape"""
|
||||
keycode = event.GetKeyCode()
|
||||
print keycode
|
||||
step = 5
|
||||
angle = 18
|
||||
if event.ControlDown():
|
||||
step = 1
|
||||
angle = 1
|
||||
#h
|
||||
if keycode == 72:
|
||||
self.move_shape((-step, 0))
|
||||
#l
|
||||
if keycode == 76:
|
||||
self.move_shape((step, 0))
|
||||
#j
|
||||
if keycode == 75:
|
||||
self.move_shape((0, step))
|
||||
#k
|
||||
if keycode == 74:
|
||||
self.move_shape((0, -step))
|
||||
#[
|
||||
if keycode == 91:
|
||||
self.rotate_shape(-angle)
|
||||
#]
|
||||
if keycode == 93:
|
||||
self.rotate_shape(angle)
|
||||
event.Skip()
|
||||
|
||||
def update(self):
|
||||
while(1):
|
||||
dt = 0.05
|
||||
time.sleep(0.05)
|
||||
try:
|
||||
wx.CallAfter(self.Refresh)
|
||||
except:
|
||||
return
|
||||
|
||||
def anim(self, obj):
|
||||
g = 50 * 9.8
|
||||
v = 20
|
||||
dt = 0.05
|
||||
basepos = obj.offsets[2]
|
||||
obj.offsets[2] += obj.animoffset
|
||||
while obj.offsets[2] > -1:
|
||||
time.sleep(dt)
|
||||
obj.offsets[2] -= v * dt
|
||||
v += g * dt
|
||||
if(obj.offsets[2] < 0):
|
||||
obj.scale[2] *= 1 - 3 * dt
|
||||
#return
|
||||
v = v / 4
|
||||
while obj.offsets[2] < basepos:
|
||||
time.sleep(dt)
|
||||
obj.offsets[2] += v * dt
|
||||
v -= g * dt
|
||||
obj.scale[2] *= 1 + 5 * dt
|
||||
obj.scale[2] = 1.0
|
||||
|
||||
def create_objects(self):
|
||||
'''create opengl objects when opengl is initialized'''
|
||||
self.initialized = 1
|
||||
wx.CallAfter(self.Refresh)
|
||||
|
||||
def drawmodel(self, m, n):
|
||||
batch = pyglet.graphics.Batch()
|
||||
stl = stlview(m.facets, batch=batch)
|
||||
m.batch = batch
|
||||
m.animoffset = 300
|
||||
#print m
|
||||
#threading.Thread(target = self.anim, args = (m, )).start()
|
||||
wx.CallAfter(self.Refresh)
|
||||
|
||||
def update_object_resize(self):
|
||||
'''called when the window recieves only if opengl is initialized'''
|
||||
pass
|
||||
|
||||
def draw_objects(self):
|
||||
'''called in the middle of ondraw after the buffer has been cleared'''
|
||||
if self.vpmat is None:
|
||||
return
|
||||
if not self.initialized:
|
||||
self.create_objects()
|
||||
|
||||
#glLoadIdentity()
|
||||
#print list(self.pmat)
|
||||
if self.rot == 1:
|
||||
glLoadIdentity()
|
||||
glMultMatrixd(self.mvmat)
|
||||
else:
|
||||
glLoadIdentity()
|
||||
glTranslatef(*self.transv)
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.2, 0.2, 0.2, 1))
|
||||
glBegin(GL_LINES)
|
||||
glNormal3f(0, 0, 1)
|
||||
rows = 10
|
||||
cols = 10
|
||||
zheight = 50
|
||||
for i in xrange(-rows, rows + 1):
|
||||
if i % 5 == 0:
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.6, 0.6, 0.6, 1))
|
||||
else:
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.2, 0.2, 0.2, 1))
|
||||
glVertex3f(10 * -cols, 10 * i, 0)
|
||||
glVertex3f(10 * cols, 10 * i, 0)
|
||||
for i in xrange(-cols, cols + 1):
|
||||
if i % 5 == 0:
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.6, 0.6, 0.6, 1))
|
||||
else:
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.2, 0.2, 0.2, 1))
|
||||
glVertex3f(10 * i, 10 * -rows, 0)
|
||||
glVertex3f(10 * i, 10 * rows, 0)
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.6, 0.6, 0.6, 1))
|
||||
glVertex3f(10 * -cols, 10 * -rows, 0)
|
||||
glVertex3f(10 * -cols, 10 * -rows, zheight)
|
||||
glVertex3f(10 * cols, 10 * rows, 0)
|
||||
glVertex3f(10 * cols, 10 * rows, zheight)
|
||||
glVertex3f(10 * cols, 10 * -rows, 0)
|
||||
glVertex3f(10 * cols, 10 * -rows, zheight)
|
||||
glVertex3f(10 * -cols, 10 * rows, 0)
|
||||
glVertex3f(10 * -cols, 10 * rows, zheight)
|
||||
|
||||
glVertex3f(10 * -cols, 10 * rows, zheight)
|
||||
glVertex3f(10 * cols, 10 * rows, zheight)
|
||||
glVertex3f(10 * cols, 10 * rows, zheight)
|
||||
glVertex3f(10 * cols, 10 * -rows, zheight)
|
||||
glVertex3f(10 * cols, 10 * -rows, zheight)
|
||||
glVertex3f(10 * -cols, 10 * -rows, zheight)
|
||||
glVertex3f(10 * -cols, 10 * -rows, zheight)
|
||||
glVertex3f(10 * -cols, 10 * rows, zheight)
|
||||
|
||||
glEnd()
|
||||
glPushMatrix()
|
||||
glTranslatef(self.mousepos[0] - self.bedsize[0] / 2, self.mousepos[1] - self.bedsize[1] / 2, 0)
|
||||
glBegin(GL_TRIANGLES)
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(1, 0, 0, 1))
|
||||
glNormal3f(0, 0, 1)
|
||||
glVertex3f(2, 2, 0)
|
||||
glVertex3f(-2, 2, 0)
|
||||
glVertex3f(-2, -2, 0)
|
||||
glVertex3f(2, -2, 0)
|
||||
glVertex3f(2, 2, 0)
|
||||
glVertex3f(-2, -2, 0)
|
||||
glEnd()
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.3, 0.7, 0.5, 1))
|
||||
#glTranslatef(0, 40, 0)
|
||||
glPopMatrix()
|
||||
glPushMatrix()
|
||||
glTranslatef(-100, -100, 0)
|
||||
glEnable(GL_LINE_SMOOTH)
|
||||
glEnable(GL_BLEND)
|
||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
|
||||
glHint (GL_LINE_SMOOTH_HINT, GL_NICEST)
|
||||
glLineWidth (1.5)
|
||||
|
||||
for i in self.parent.models.values():
|
||||
glPushMatrix()
|
||||
glTranslatef(*(i.offsets))
|
||||
glRotatef(i.rot, 0.0, 0.0, 1.0)
|
||||
glScalef(*i.scale)
|
||||
#glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.93, 0.37, 0.25, 1))
|
||||
glEnable(GL_COLOR_MATERIAL)
|
||||
|
||||
if i.curlayer == -1:
|
||||
# curlayer == -1 means we are over the top.
|
||||
glLineWidth (0.8)
|
||||
[i.gc.layers[j].draw() for j in i.gc.layerlist]
|
||||
else:
|
||||
glLineWidth (0.6)
|
||||
|
||||
tmpindex = i.gc.layerlist.index(i.curlayer)
|
||||
if tmpindex >= 5:
|
||||
thin_layer = i.gc.layerlist[tmpindex - 5]
|
||||
[i.gc.layers[j].draw() for j in i.gc.layerlist if j <= thin_layer]
|
||||
|
||||
if tmpindex > 4:
|
||||
glLineWidth (0.9)
|
||||
i.gc.layers[i.gc.layerlist[tmpindex - 4]].draw()
|
||||
|
||||
if tmpindex > 3:
|
||||
glLineWidth (1.1)
|
||||
i.gc.layers[i.gc.layerlist[tmpindex - 3]].draw()
|
||||
|
||||
if tmpindex > 2:
|
||||
glLineWidth (1.3)
|
||||
i.gc.layers[i.gc.layerlist[tmpindex - 2]].draw()
|
||||
|
||||
if tmpindex > 1:
|
||||
glLineWidth (2.2)
|
||||
i.gc.layers[i.gc.layerlist[tmpindex - 1]].draw()
|
||||
|
||||
glLineWidth (3.5)
|
||||
i.gc.layers[i.curlayer].draw()
|
||||
glLineWidth (1.5)
|
||||
|
||||
glDisable(GL_COLOR_MATERIAL)
|
||||
|
||||
glPopMatrix()
|
||||
glPopMatrix()
|
||||
#print "drawn batch"
|
||||
|
||||
|
||||
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):
|
||||
super(GCFrame, self).__init__(parent, ID, title, pos, (size[0] + 150, size[1]), style)
|
||||
|
||||
class d:
|
||||
def GetSelection(self):
|
||||
return wx.NOT_FOUND
|
||||
self.p = self
|
||||
m = d()
|
||||
m.offsets = [0, 0, 0]
|
||||
m.rot = 0
|
||||
m.curlayer = -1
|
||||
m.scale = [1.0, 1.0, 1.0]
|
||||
m.batch = pyglet.graphics.Batch()
|
||||
m.gc = gcview([], batch=m.batch)
|
||||
self.models = {"GCODE": m}
|
||||
self.l = d()
|
||||
self.modelindex = 0
|
||||
self.GLPanel1 = TestGlPanel(self, size)
|
||||
|
||||
def addfile(self, gcode=[]):
|
||||
self.models["GCODE"].gc.delete()
|
||||
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)
|
||||
|
||||
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))
|
||||
self.Refresh()
|
||||
wx.FutureCall(500, self.GLPanel1.forceresize)
|
||||
#threading.Thread(target = self.update).start()
|
||||
#self.initialized = 0
|
||||
|
||||
def setlayerindex(self, z):
|
||||
m = self.models["GCODE"]
|
||||
try:
|
||||
mlk = m.gc.layerlist
|
||||
except:
|
||||
mlk = []
|
||||
if z is None:
|
||||
self.modelindex = -1
|
||||
elif z > 0:
|
||||
if self.modelindex < len(mlk) - 1:
|
||||
if self.modelindex > -1:
|
||||
self.modelindex += 1
|
||||
else:
|
||||
self.modelindex = -1
|
||||
elif z < 0:
|
||||
if self.modelindex > 0:
|
||||
self.modelindex -= 1
|
||||
elif self.modelindex == -1:
|
||||
self.modelindex = len(mlk)
|
||||
|
||||
if self.modelindex >= 0:
|
||||
m.curlayer = mlk[self.modelindex]
|
||||
wx.CallAfter(self.SetTitle, "Gcode view, shift to move. Layer %d/%d, Z = %f" % (self.modelindex, len(mlk), m.curlayer))
|
||||
else:
|
||||
m.curlayer = -1
|
||||
wx.CallAfter(self.SetTitle, "Gcode view, shift to move view, mousewheel to set layer")
|
||||
|
||||
|
||||
|
||||
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))
|
||||
import sys
|
||||
for filename in sys.argv:
|
||||
if ".gcode" in filename:
|
||||
frame.addfile(list(open(filename)))
|
||||
elif ".stl" in filename:
|
||||
#TODO: add stl here
|
||||
pass
|
||||
|
||||
#frame = wx.Frame(None, -1, "GL Window", size=(400, 400))
|
||||
#panel = TestGlPanel(frame, size=(300,300))
|
||||
frame.Show(True)
|
||||
app.MainLoop()
|
||||
app.Destroy()
|
||||
|
||||
if __name__ == "__main__":
|
||||
#import cProfile
|
||||
#print cProfile.run("main()")
|
||||
main()
|
|
@ -0,0 +1,267 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
# This file is part of the Printrun suite.
|
||||
#
|
||||
# Printrun is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Printrun is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Printrun. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import wx, random
|
||||
|
||||
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):
|
||||
# Forcing a no full repaint to stop flickering
|
||||
style = style | wx.NO_FULL_REPAINT_ON_RESIZE
|
||||
#call super function
|
||||
#super(Graph, self).__init__(parent, id, pos, size, style)
|
||||
BufferedCanvas.__init__(self, parent, id)
|
||||
|
||||
self.SetSize(wx.Size(170, 100))
|
||||
|
||||
self.extruder0temps = [0]
|
||||
self.extruder0targettemps = [0]
|
||||
self.extruder1temps = [0]
|
||||
self.extruder1targettemps = [0]
|
||||
self.bedtemps = [0]
|
||||
self.bedtargettemps = [0]
|
||||
|
||||
self.timer = wx.Timer(self)
|
||||
self.Bind(wx.EVT_TIMER, self.updateTemperatures, self.timer)
|
||||
|
||||
self.maxyvalue = 250
|
||||
self.ybars = 5
|
||||
self.xbars = 6 # One bar per 10 second
|
||||
self.xsteps = 60 # Covering 1 minute in the graph
|
||||
|
||||
self.y_offset = 1 # This is to show the line even when value is 0 and maxyvalue
|
||||
|
||||
self._lastyvalue = 0
|
||||
|
||||
|
||||
#self.sizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
#self.sizer.Add(wx.Button(self, -1, "Button1", (0,0)))
|
||||
#self.SetSizer(self.sizer)
|
||||
|
||||
|
||||
|
||||
def OnPaint(self, evt):
|
||||
dc = wx.PaintDC(self)
|
||||
gc = wx.GraphicsContext.Create(dc)
|
||||
|
||||
def Destroy(self):
|
||||
#call the super method
|
||||
super(wx.Panel, self).Destroy()
|
||||
|
||||
|
||||
def updateTemperatures(self, event):
|
||||
self.AddBedTemperature(self.bedtemps[-1])
|
||||
self.AddBedTargetTemperature(self.bedtargettemps[-1])
|
||||
self.AddExtruder0Temperature(self.extruder0temps[-1])
|
||||
self.AddExtruder0TargetTemperature(self.extruder0targettemps[-1])
|
||||
#self.AddExtruder1Temperature(self.extruder1temps[-1])
|
||||
#self.AddExtruder1TargetTemperature(self.extruder1targettemps[-1])
|
||||
self.Refresh()
|
||||
|
||||
|
||||
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)
|
||||
|
||||
#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.SetBrush(b)
|
||||
gc.DrawRectangle(0, 0, self.width, self.height)
|
||||
|
||||
#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.DrawLines(wx.Point(0,0), wx.Point(50,10))
|
||||
|
||||
#path = gc.CreatePath()
|
||||
#path.MoveToPoint(0.0, 0.0)
|
||||
#path.AddLineToPoint(0.0, 100.0)
|
||||
#path.AddLineToPoint(100.0, 0.0)
|
||||
#path.AddCircle( 50.0, 50.0, 50.0 )
|
||||
#path.CloseSubpath()
|
||||
#gc.DrawPath(path)
|
||||
#gc.StrokePath(path)
|
||||
|
||||
|
||||
font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD)
|
||||
gc.SetFont(font, wx.Colour(23,44,44))
|
||||
|
||||
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))
|
||||
for y in range(self.ybars):
|
||||
y_pos = y*(float(self.height)/self.ybars)
|
||||
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.DrawText("Graph offline", self.width/2 - (font.GetPointSize() * 3), self.height/2 - (font.GetPointSize() * 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))
|
||||
|
||||
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))
|
||||
else:
|
||||
dc.SetPen(wx.Pen(wx.Colour(r,g,b,a), 1))
|
||||
|
||||
x_add = float(self.width)/self.xsteps
|
||||
x_pos = float(0.0)
|
||||
lastxvalue = float(0.0)
|
||||
|
||||
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)
|
||||
|
||||
lastxvalue = x_pos
|
||||
x_pos = float(x_pos) + x_add
|
||||
self._lastyvalue = y_pos
|
||||
|
||||
if len(text) > 0:
|
||||
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))
|
||||
else:
|
||||
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))
|
||||
#gc.DrawText(text, self.width - (font.GetPixelSize().GetWidth() * ((len(text) * text_xoffset + 1) + 1)), self.height - self._lastyvalue - (font.GetPointSize() / 2))
|
||||
|
||||
|
||||
def drawbedtemp(self, dc, gc):
|
||||
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)
|
||||
|
||||
|
||||
def drawextruder0temp(self, dc, gc):
|
||||
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)
|
||||
|
||||
|
||||
def drawextruder1temp(self, dc, gc):
|
||||
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)
|
||||
|
||||
|
||||
def SetBedTemperature(self, value):
|
||||
self.bedtemps.pop()
|
||||
self.bedtemps.append(value)
|
||||
|
||||
def AddBedTemperature(self, value):
|
||||
self.bedtemps.append(value)
|
||||
if (len(self.bedtemps)-1) * float(self.width)/self.xsteps > self.width:
|
||||
self.bedtemps.pop(0)
|
||||
|
||||
|
||||
def SetBedTargetTemperature(self, value):
|
||||
self.bedtargettemps.pop()
|
||||
self.bedtargettemps.append(value)
|
||||
|
||||
def AddBedTargetTemperature(self, value):
|
||||
self.bedtargettemps.append(value)
|
||||
if (len(self.bedtargettemps)-1) * float(self.width)/self.xsteps > self.width:
|
||||
self.bedtargettemps.pop(0)
|
||||
|
||||
|
||||
def SetExtruder0Temperature(self, value):
|
||||
self.extruder0temps.pop()
|
||||
self.extruder0temps.append(value)
|
||||
|
||||
def AddExtruder0Temperature(self, value):
|
||||
self.extruder0temps.append(value)
|
||||
if (len(self.extruder0temps)-1) * float(self.width)/self.xsteps > self.width:
|
||||
self.extruder0temps.pop(0)
|
||||
|
||||
|
||||
def SetExtruder0TargetTemperature(self, value):
|
||||
self.extruder0targettemps.pop()
|
||||
self.extruder0targettemps.append(value)
|
||||
|
||||
def AddExtruder0TargetTemperature(self, value):
|
||||
self.extruder0targettemps.append(value)
|
||||
if (len(self.extruder0targettemps)-1) * float(self.width)/self.xsteps > self.width:
|
||||
self.extruder0targettemps.pop(0)
|
||||
|
||||
|
||||
def SetExtruder1Temperature(self, value):
|
||||
self.extruder1temps.pop()
|
||||
self.extruder1temps.append(value)
|
||||
|
||||
def AddExtruder1Temperature(self, value):
|
||||
self.extruder1temps.append(value)
|
||||
if (len(self.extruder1temps)-1) * float(self.width)/self.xsteps > self.width:
|
||||
self.extruder1temps.pop(0)
|
||||
|
||||
|
||||
def SetExtruder1TargetTemperature(self, value):
|
||||
self.extruder1targettemps.pop()
|
||||
self.extruder1targettemps.append(value)
|
||||
|
||||
def AddExtruder1TargetTemperature(self, value):
|
||||
self.extruder1targettemps.append(value)
|
||||
if (len(self.extruder1targettemps)-1) * float(self.width)/self.xsteps > self.width:
|
||||
self.extruder1targettemps.pop(0)
|
||||
|
||||
|
||||
def StartPlotting(self, time):
|
||||
self.Refresh()
|
||||
self.timer.Start(time)
|
||||
|
||||
def StopPlotting(self):
|
||||
self.timer.Stop()
|
||||
self.Refresh()
|
||||
|
||||
def draw(self, dc, w, h):
|
||||
dc.Clear()
|
||||
gc = wx.GraphicsContext.Create(dc)
|
||||
self.width = w
|
||||
self.height = h
|
||||
self.drawgrid(dc, gc)
|
||||
self.drawbedtargettemp(dc, gc)
|
||||
self.drawbedtemp(dc, gc)
|
||||
self.drawextruder0targettemp(dc, gc)
|
||||
self.drawextruder0temp(dc, gc)
|
||||
self.drawextruder1targettemp(dc, gc)
|
||||
self.drawextruder1temp(dc, gc)
|
||||
|
||||
|
16
gviz.py
16
gviz.py
|
@ -47,13 +47,21 @@ class window(wx.Frame):
|
|||
else:
|
||||
event.Skip()
|
||||
|
||||
|
||||
def key(self, event):
|
||||
x=event.GetKeyCode()
|
||||
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)
|
||||
else:
|
||||
if x==wx.WXK_UP:
|
||||
self.p.layerup()
|
||||
if x==wx.WXK_DOWN:
|
||||
self.p.layerdown()
|
||||
#print x
|
||||
if x==wx.WXK_UP:
|
||||
self.p.layerup()
|
||||
if x==wx.WXK_DOWN:
|
||||
self.p.layerdown()
|
||||
|
||||
#print p.lines.keys()
|
||||
def zoom(self, event):
|
||||
|
|
Binary file not shown.
|
@ -5,77 +5,21 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pronterface jm1\n"
|
||||
"POT-Creation-Date: 2012-01-19 09:21+CET\n"
|
||||
"POT-Creation-Date: 2012-02-26 02:12+CET\n"
|
||||
"PO-Revision-Date: 2012-01-23 10:01+0100\n"
|
||||
"Last-Translator: Christian Metzen <metzench@ccux-linux.de>\n"
|
||||
"Language-Team: DE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: pronsole.py:250
|
||||
msgid "Communications Speed (default: 115200)"
|
||||
msgstr "Kommunikationsgeschwindigkeit (Vorgabe: 115200)"
|
||||
|
||||
#: pronsole.py:251
|
||||
msgid "Heated Build Platform temp for ABS (default: 110 deg C)"
|
||||
msgstr "Heizbett Temp. für ABS (Vorgabe: 110 Grad Celsius)"
|
||||
|
||||
#: pronsole.py:252
|
||||
msgid "Heated Build Platform temp for PLA (default: 60 deg C)"
|
||||
msgstr "Heizbett Temp. für PLA (Vorgabe: 60 Grad Celsius)"
|
||||
|
||||
#: pronsole.py:253
|
||||
msgid "Feedrate for Control Panel Moves in Extrusions (default: 300mm/min)"
|
||||
msgstr "Vorschub Control Panel Bewegungen Extrudierung (Vorgabe: 300mm/min)"
|
||||
|
||||
#: pronsole.py:254
|
||||
msgid "Port used to communicate with printer"
|
||||
msgstr "Port für Druckerkommunikation"
|
||||
|
||||
#: pronsole.py:255
|
||||
msgid ""
|
||||
"Slice command\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py $s)"
|
||||
msgstr ""
|
||||
"Kommando Slicing\n"
|
||||
" Vorgabe:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py $s)"
|
||||
|
||||
#: pronsole.py:256
|
||||
msgid ""
|
||||
"Slice settings command\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge.py"
|
||||
msgstr ""
|
||||
"Kommando Slicing Einstellungen\n"
|
||||
" Vorgabe:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge.py"
|
||||
|
||||
#: pronsole.py:257
|
||||
msgid "Extruder temp for ABS (default: 230 deg C)"
|
||||
msgstr "Extruder Temperatur für ABS (Vorgabe: 230 Grad Celsius)"
|
||||
|
||||
#: pronsole.py:258
|
||||
msgid "Extruder temp for PLA (default: 185 deg C)"
|
||||
msgstr "Extruder Temperatur für PLA (Vorgabe: 185 Grad Celsius)"
|
||||
|
||||
#: pronsole.py:259
|
||||
msgid "Feedrate for Control Panel Moves in X and Y (default: 3000mm/min)"
|
||||
msgstr "Vorschub Control Panel Bewegungen X und Y (Vorgabe: 3000mm/min)"
|
||||
|
||||
#: pronsole.py:260
|
||||
msgid "Feedrate for Control Panel Moves in Z (default: 200mm/min)"
|
||||
msgstr "Vorschub Control Panel Bewegungen Z (Vorgabe: 200mm/min)"
|
||||
|
||||
#: pronterface.py:15
|
||||
#: pronterface.py:30
|
||||
msgid "WX is not installed. This program requires WX to run."
|
||||
msgstr "WX ist nicht installiert. Dieses Programm erfordert WX zum Starten."
|
||||
|
||||
#: pronterface.py:66
|
||||
#: pronterface.py:81
|
||||
msgid ""
|
||||
"Dimensions of Build Platform\n"
|
||||
" & optional offset of origin\n"
|
||||
|
@ -93,55 +37,55 @@ msgstr ""
|
|||
" XXX,YYY,ZZZ\n"
|
||||
" XXXxYYYxZZZ+OffX+OffY+OffZ"
|
||||
|
||||
#: pronterface.py:67
|
||||
#: pronterface.py:82
|
||||
msgid "Last Set Temperature for the Heated Print Bed"
|
||||
msgstr "Letzte gesetzte Temperatur für das Heizbett"
|
||||
|
||||
#: pronterface.py:68
|
||||
#: pronterface.py:83
|
||||
msgid "Folder of last opened file"
|
||||
msgstr "Verzeichniss der zuletzt geöffneten Datei"
|
||||
|
||||
#: pronterface.py:69
|
||||
#: pronterface.py:84
|
||||
msgid "Last Temperature of the Hot End"
|
||||
msgstr "Letzte Hotend Temperatur"
|
||||
|
||||
#: pronterface.py:70
|
||||
#: pronterface.py:85
|
||||
msgid "Width of Extrusion in Preview (default: 0.5)"
|
||||
msgstr "Vorschaubreite der Extrudierung (Vorgabe: 0.5)"
|
||||
|
||||
#: pronterface.py:71
|
||||
#: pronterface.py:86
|
||||
msgid "Fine Grid Spacing (default: 10)"
|
||||
msgstr "Feiner Rasterabstand (Vorgabe: 10)"
|
||||
|
||||
#: pronterface.py:72
|
||||
#: pronterface.py:87
|
||||
msgid "Coarse Grid Spacing (default: 50)"
|
||||
msgstr "Grober Rasterabstand (Vorgabe: 50)"
|
||||
|
||||
#: pronterface.py:73
|
||||
#: pronterface.py:88
|
||||
msgid "Pronterface background color (default: #FFFFFF)"
|
||||
msgstr "Pronterface Hintergrundfarbe (Vorgabe: #FFFFFF)"
|
||||
|
||||
#: pronterface.py:76
|
||||
#: pronterface.py:91
|
||||
msgid "Printer Interface"
|
||||
msgstr "Printer Interface"
|
||||
|
||||
#: pronterface.py:93
|
||||
#: pronterface.py:108
|
||||
msgid "Motors off"
|
||||
msgstr "Motoren aus"
|
||||
|
||||
#: pronterface.py:94
|
||||
#: pronterface.py:109
|
||||
msgid "Check temp"
|
||||
msgstr "Temperatur prüfen"
|
||||
|
||||
#: pronterface.py:95
|
||||
#: pronterface.py:110
|
||||
msgid "Extrude"
|
||||
msgstr "Extrudieren"
|
||||
|
||||
#: pronterface.py:96
|
||||
#: pronterface.py:111
|
||||
msgid "Reverse"
|
||||
msgstr "Rückwärts"
|
||||
|
||||
#: pronterface.py:114
|
||||
#: pronterface.py:129
|
||||
msgid ""
|
||||
"# I moved all your custom buttons into .pronsolerc.\n"
|
||||
"# Please don't add them here any more.\n"
|
||||
|
@ -151,552 +95,560 @@ msgstr ""
|
|||
"# Bitte fügen Sie sie hier nicht mehr ein.\n"
|
||||
"# Backup Ihrer alten Buttons befindet sich in custombtn.old\n"
|
||||
|
||||
#: pronterface.py:119
|
||||
msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc"
|
||||
msgstr "Achtung! Sie haben benutzerdefinierte Buttons in custombtn.txt und .pronsolerc angegeben"
|
||||
#: pronterface.py:134
|
||||
msgid ""
|
||||
"Note!!! You have specified custom buttons in both custombtn.txt and ."
|
||||
"pronsolerc"
|
||||
msgstr ""
|
||||
"Achtung! Sie haben benutzerdefinierte Buttons in custombtn.txt und ."
|
||||
"pronsolerc angegeben"
|
||||
|
||||
#: pronterface.py:120
|
||||
msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"
|
||||
msgstr "Ignoriere custombtn.txt. Alle aktuellen Buttons entfernen um wieder zu custombtn.txt zurückzukehren"
|
||||
#: pronterface.py:135
|
||||
msgid ""
|
||||
"Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"
|
||||
msgstr ""
|
||||
"Ignoriere custombtn.txt. Alle aktuellen Buttons entfernen um wieder zu "
|
||||
"custombtn.txt zurückzukehren"
|
||||
|
||||
#: pronterface.py:148
|
||||
#: pronterface.py:499
|
||||
#: pronterface.py:1319
|
||||
#: pronterface.py:1373
|
||||
#: pronterface.py:1495
|
||||
#: pronterface.py:1529
|
||||
#: pronterface.py:1544
|
||||
#: pronterface.py:163 pronterface.py:514 pronterface.py:1333
|
||||
#: pronterface.py:1387 pronterface.py:1509 pronterface.py:1543
|
||||
#: pronterface.py:1558
|
||||
msgid "Print"
|
||||
msgstr "Drucken"
|
||||
|
||||
#: pronterface.py:152
|
||||
#: pronterface.py:167
|
||||
msgid "Printer is now online."
|
||||
msgstr "Drucker ist jetzt Online."
|
||||
|
||||
#: pronterface.py:212
|
||||
msgid "Setting hotend temperature to "
|
||||
msgstr "Setze Hotend Temperatur auf "
|
||||
#: pronterface.py:168
|
||||
msgid "Disconnect"
|
||||
msgstr "Trennen"
|
||||
|
||||
#: pronterface.py:212
|
||||
#: pronterface.py:248
|
||||
msgid " degrees Celsius."
|
||||
msgstr " Grad Celsius."
|
||||
#: pronterface.py:227
|
||||
msgid "Setting hotend temperature to %f degrees Celsius."
|
||||
msgstr "Setze Hotend Temperatur auf %f Grad Celsius."
|
||||
|
||||
#: pronterface.py:231
|
||||
#: pronterface.py:267
|
||||
#: pronterface.py:325
|
||||
#: pronterface.py:246 pronterface.py:282 pronterface.py:340
|
||||
msgid "Printer is not online."
|
||||
msgstr "Drucker ist nicht online."
|
||||
|
||||
#: pronterface.py:233
|
||||
msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0."
|
||||
msgstr "Sie können keine negativen Temperaturen einstellen. Um das Hotend ganz auszuschalten, Temperatur auf 0 setzen."
|
||||
|
||||
#: pronterface.py:248
|
||||
msgid "Setting bed temperature to "
|
||||
msgstr "Setze Heizbett Temperatur auf"
|
||||
msgid ""
|
||||
"You cannot set negative temperatures. To turn the hotend off entirely, set "
|
||||
"its temperature to 0."
|
||||
msgstr ""
|
||||
"Sie können keine negativen Temperaturen einstellen. Um das Hotend ganz "
|
||||
"auszuschalten, Temperatur auf 0 setzen."
|
||||
|
||||
#: pronterface.py:269
|
||||
msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0."
|
||||
msgstr "Sie können keine negativen Temperaturen einstellen. Um das Heizbett ganz auszuschalten, Temperatur auf 0 setzen."
|
||||
#: pronterface.py:250
|
||||
msgid "You must enter a temperature. (%s)"
|
||||
msgstr "Sie müssen eine Temperatur eingeben. (%s)"
|
||||
|
||||
#: pronterface.py:271
|
||||
#: pronterface.py:263
|
||||
msgid "Setting bed temperature to %f degrees Celsius."
|
||||
msgstr "Setze Heizbett Temperatur auf %f Grad Celsius."
|
||||
|
||||
#: pronterface.py:284
|
||||
msgid ""
|
||||
"You cannot set negative temperatures. To turn the bed off entirely, set its "
|
||||
"temperature to 0."
|
||||
msgstr ""
|
||||
"Sie können keine negativen Temperaturen einstellen. Um das Heizbett ganz "
|
||||
"auszuschalten, Temperatur auf 0 setzen."
|
||||
|
||||
#: pronterface.py:286
|
||||
msgid "You must enter a temperature."
|
||||
msgstr "Sie müssen eine Temperatur eingeben."
|
||||
|
||||
#: pronterface.py:286
|
||||
#: pronterface.py:301
|
||||
msgid "Do you want to erase the macro?"
|
||||
msgstr "Möchten Sie das Makro löschen?"
|
||||
|
||||
#: pronterface.py:290
|
||||
#: pronterface.py:305
|
||||
msgid "Cancelled."
|
||||
msgstr "Abgebrochen."
|
||||
|
||||
#: pronterface.py:331
|
||||
#: pronterface.py:346
|
||||
msgid " Opens file"
|
||||
msgstr " Öffnet eine Datei"
|
||||
|
||||
#: pronterface.py:331
|
||||
#: pronterface.py:346
|
||||
msgid "&Open..."
|
||||
msgstr "&Öffnen..."
|
||||
|
||||
#: pronterface.py:332
|
||||
#: pronterface.py:347
|
||||
msgid " Edit open file"
|
||||
msgstr " Offene Datei bearbeiten"
|
||||
|
||||
#: pronterface.py:332
|
||||
#: pronterface.py:347
|
||||
msgid "&Edit..."
|
||||
msgstr "&Bearbeiten..."
|
||||
|
||||
#: pronterface.py:333
|
||||
#: pronterface.py:348
|
||||
msgid " Clear output console"
|
||||
msgstr " Ausgabe Konsole leeren"
|
||||
|
||||
#: pronterface.py:333
|
||||
#: pronterface.py:348
|
||||
msgid "Clear console"
|
||||
msgstr "Konsole leeren"
|
||||
|
||||
#: pronterface.py:334
|
||||
#: pronterface.py:349
|
||||
msgid " Project slices"
|
||||
msgstr " Projekt Slices"
|
||||
|
||||
#: pronterface.py:334
|
||||
#: pronterface.py:349
|
||||
msgid "Projector"
|
||||
msgstr "Projektor"
|
||||
|
||||
#: pronterface.py:335
|
||||
#: pronterface.py:350
|
||||
msgid " Closes the Window"
|
||||
msgstr " Schliesst das Fenster"
|
||||
|
||||
#: pronterface.py:335
|
||||
#: pronterface.py:350
|
||||
msgid "E&xit"
|
||||
msgstr "&Verlassen"
|
||||
|
||||
#: pronterface.py:336
|
||||
#: pronterface.py:351
|
||||
msgid "&File"
|
||||
msgstr "&Datei"
|
||||
|
||||
#: pronterface.py:341
|
||||
#: pronterface.py:356
|
||||
msgid "&Macros"
|
||||
msgstr "&Makros"
|
||||
|
||||
#: pronterface.py:342
|
||||
#: pronterface.py:357
|
||||
msgid "<&New...>"
|
||||
msgstr "<&Neu...>"
|
||||
|
||||
#: pronterface.py:343
|
||||
#: pronterface.py:358
|
||||
msgid " Options dialog"
|
||||
msgstr " Optionen Dialog"
|
||||
|
||||
#: pronterface.py:343
|
||||
#: pronterface.py:358
|
||||
msgid "&Options"
|
||||
msgstr "&Optionen"
|
||||
|
||||
#: pronterface.py:345
|
||||
#: pronterface.py:360
|
||||
msgid " Adjust slicing settings"
|
||||
msgstr " Slicing Einstellungen anpassen"
|
||||
|
||||
#: pronterface.py:345
|
||||
#: pronterface.py:360
|
||||
msgid "Slicing Settings"
|
||||
msgstr "Slicing Einstellungen"
|
||||
|
||||
#: pronterface.py:352
|
||||
#: pronterface.py:367
|
||||
msgid "&Settings"
|
||||
msgstr "&Einstellungen"
|
||||
|
||||
#: pronterface.py:368
|
||||
#: pronterface.py:383
|
||||
msgid "Enter macro name"
|
||||
msgstr "Makro Name eingeben"
|
||||
|
||||
#: pronterface.py:371
|
||||
#: pronterface.py:386
|
||||
msgid "Macro name:"
|
||||
msgstr "Makro Name:"
|
||||
|
||||
#: pronterface.py:374
|
||||
#: pronterface.py:389
|
||||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
||||
#: pronterface.py:378
|
||||
#: pronterface.py:1330
|
||||
#: pronterface.py:1587
|
||||
#: pronterface.py:393 pronterface.py:1344 pronterface.py:1601
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: pronterface.py:396
|
||||
msgid "' is being used by built-in command"
|
||||
msgstr "' wird durch eingebautes Kommando genutzt"
|
||||
#: pronterface.py:411
|
||||
msgid "Name '%s' is being used by built-in command"
|
||||
msgstr "Name '%s' wird durch eingebautes Kommando genutzt"
|
||||
|
||||
#: pronterface.py:396
|
||||
msgid "Name '"
|
||||
msgstr "Name '"
|
||||
|
||||
#: pronterface.py:399
|
||||
#: pronterface.py:414
|
||||
msgid "Macro name may contain only alphanumeric symbols and underscores"
|
||||
msgstr "Makro Name darf nur alphanumerische Zeichen und Unterstriche enthalten"
|
||||
|
||||
#: pronterface.py:448
|
||||
#: pronterface.py:463
|
||||
msgid "Port"
|
||||
msgstr "Port:"
|
||||
|
||||
#: pronterface.py:467
|
||||
#: pronterface.py:482
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: pronterface.py:469
|
||||
#: pronterface.py:484
|
||||
msgid "Connect to the printer"
|
||||
msgstr "Drucker Verbinden"
|
||||
|
||||
#: pronterface.py:471
|
||||
#: pronterface.py:486
|
||||
msgid "Reset"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: pronterface.py:474
|
||||
#: pronterface.py:751
|
||||
#: pronterface.py:489 pronterface.py:766
|
||||
msgid "Mini mode"
|
||||
msgstr "Mini-Modus"
|
||||
|
||||
#: pronterface.py:478
|
||||
#: pronterface.py:493
|
||||
msgid "Monitor Printer"
|
||||
msgstr "Drucker überwachen"
|
||||
|
||||
#: pronterface.py:488
|
||||
#: pronterface.py:503
|
||||
msgid "Load file"
|
||||
msgstr "Datei laden"
|
||||
|
||||
#: pronterface.py:491
|
||||
#: pronterface.py:506
|
||||
msgid "Compose"
|
||||
msgstr "Zusammenstellen"
|
||||
|
||||
#: pronterface.py:495
|
||||
#: pronterface.py:510
|
||||
msgid "SD"
|
||||
msgstr "SD"
|
||||
|
||||
#: pronterface.py:503
|
||||
#: pronterface.py:1374
|
||||
#: pronterface.py:1419
|
||||
#: pronterface.py:1469
|
||||
#: pronterface.py:1494
|
||||
#: pronterface.py:1528
|
||||
#: pronterface.py:1543
|
||||
#: pronterface.py:518 pronterface.py:1388 pronterface.py:1433
|
||||
#: pronterface.py:1483 pronterface.py:1508 pronterface.py:1542
|
||||
#: pronterface.py:1557
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
#: pronterface.py:516
|
||||
#: pronterface.py:531
|
||||
msgid "Send"
|
||||
msgstr "Senden"
|
||||
|
||||
#: pronterface.py:524
|
||||
#: pronterface.py:625
|
||||
#: pronterface.py:539 pronterface.py:640
|
||||
msgid "mm/min"
|
||||
msgstr "mm/min"
|
||||
|
||||
#: pronterface.py:526
|
||||
#: pronterface.py:541
|
||||
msgid "XY:"
|
||||
msgstr "XY:"
|
||||
|
||||
#: pronterface.py:528
|
||||
#: pronterface.py:543
|
||||
msgid "Z:"
|
||||
msgstr "Z:"
|
||||
|
||||
#: pronterface.py:551
|
||||
#: pronterface.py:632
|
||||
#: pronterface.py:566 pronterface.py:647
|
||||
msgid "Heater:"
|
||||
msgstr "Heizelement:"
|
||||
|
||||
#: pronterface.py:554
|
||||
#: pronterface.py:574
|
||||
#: pronterface.py:569 pronterface.py:589
|
||||
msgid "Off"
|
||||
msgstr "Aus"
|
||||
|
||||
#: pronterface.py:566
|
||||
#: pronterface.py:586
|
||||
#: pronterface.py:581 pronterface.py:601
|
||||
msgid "Set"
|
||||
msgstr "Ein"
|
||||
|
||||
#: pronterface.py:571
|
||||
#: pronterface.py:634
|
||||
#: pronterface.py:586 pronterface.py:649
|
||||
msgid "Bed:"
|
||||
msgstr "Heizbett:"
|
||||
|
||||
#: pronterface.py:619
|
||||
#: pronterface.py:634
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
#: pronterface.py:677
|
||||
#: pronterface.py:1182
|
||||
#: pronterface.py:1413
|
||||
#: pronterface.py:692 pronterface.py:1196 pronterface.py:1427
|
||||
msgid "Not connected to printer."
|
||||
msgstr "Keine Verbindung zum Drucker."
|
||||
|
||||
#: pronterface.py:706
|
||||
#: pronterface.py:721
|
||||
msgid "SD Upload"
|
||||
msgstr "SD Laden"
|
||||
|
||||
#: pronterface.py:710
|
||||
#: pronterface.py:725
|
||||
msgid "SD Print"
|
||||
msgstr "SD Drucken"
|
||||
|
||||
#: pronterface.py:758
|
||||
#: pronterface.py:773
|
||||
msgid "Full mode"
|
||||
msgstr "Voll-Modus"
|
||||
|
||||
#: pronterface.py:783
|
||||
#: pronterface.py:798
|
||||
msgid "Execute command: "
|
||||
msgstr "Kommando ausführen:"
|
||||
|
||||
#: pronterface.py:794
|
||||
#: pronterface.py:809
|
||||
msgid "click to add new custom button"
|
||||
msgstr "Individuellen Button hinzufügen"
|
||||
|
||||
#: pronterface.py:813
|
||||
msgid "Defines custom button. Usage: button <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr "Definiert einen individuellen Button. Nutzung: button <num> \"title\" [/c \"colour\"] command"
|
||||
#: pronterface.py:828
|
||||
msgid ""
|
||||
"Defines custom button. Usage: button <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr ""
|
||||
"Definiert einen individuellen Button. Nutzung: button <num> \"title\" [/c "
|
||||
"\"colour\"] command"
|
||||
|
||||
#: pronterface.py:835
|
||||
#: pronterface.py:850
|
||||
msgid "Custom button number should be between 0 and 63"
|
||||
msgstr "Nummer des individuellen Button sollte zwischen 0 und 63 sein."
|
||||
|
||||
#: pronterface.py:927
|
||||
#: pronterface.py:942
|
||||
msgid "Edit custom button '%s'"
|
||||
msgstr "Individuellen Button '%s' bearbeiten"
|
||||
|
||||
#: pronterface.py:929
|
||||
#: pronterface.py:944
|
||||
msgid "Move left <<"
|
||||
msgstr "Links bewegen <<"
|
||||
|
||||
#: pronterface.py:932
|
||||
#: pronterface.py:947
|
||||
msgid "Move right >>"
|
||||
msgstr "Rechts bewegen >>"
|
||||
|
||||
#: pronterface.py:936
|
||||
#: pronterface.py:951
|
||||
msgid "Remove custom button '%s'"
|
||||
msgstr "Individuellen Button '%s' entfernen"
|
||||
|
||||
#: pronterface.py:939
|
||||
#: pronterface.py:954
|
||||
msgid "Add custom button"
|
||||
msgstr "Individuellen Button hinzufuegen"
|
||||
|
||||
#: pronterface.py:1084
|
||||
#: pronterface.py:1099
|
||||
msgid "event object missing"
|
||||
msgstr "Ereigniss Objekt fehlt"
|
||||
|
||||
#: pronterface.py:1112
|
||||
#: pronterface.py:1127
|
||||
msgid "Invalid period given."
|
||||
msgstr "Ungültiger Abschnitt angegeben."
|
||||
|
||||
#: pronterface.py:1115
|
||||
#: pronterface.py:1130
|
||||
msgid "Monitoring printer."
|
||||
msgstr "Überwache Drucker."
|
||||
|
||||
#: pronterface.py:1117
|
||||
#: pronterface.py:1132
|
||||
msgid "Done monitoring."
|
||||
msgstr "Überwachung abgeschlossen."
|
||||
|
||||
#: pronterface.py:1139
|
||||
#: pronterface.py:1154
|
||||
msgid "Printer is online. "
|
||||
msgstr "Drucker ist online."
|
||||
msgstr "Drucker ist online. "
|
||||
|
||||
#: pronterface.py:1141
|
||||
#: pronterface.py:1317
|
||||
#: pronterface.py:1372
|
||||
#: pronterface.py:1156 pronterface.py:1331
|
||||
msgid "Loaded "
|
||||
msgstr "Geladen"
|
||||
msgstr "Geladen "
|
||||
|
||||
#: pronterface.py:1144
|
||||
#: pronterface.py:1159
|
||||
msgid "Bed"
|
||||
msgstr "Heizbett"
|
||||
|
||||
#: pronterface.py:1144
|
||||
#: pronterface.py:1159
|
||||
msgid "Hotend"
|
||||
msgstr "Hotend"
|
||||
|
||||
#: pronterface.py:1154
|
||||
#: pronterface.py:1169
|
||||
msgid " SD printing:%04.2f %%"
|
||||
msgstr "SD Drucken:%04.2f %%"
|
||||
|
||||
#: pronterface.py:1157
|
||||
#: pronterface.py:1172
|
||||
msgid " Printing:%04.2f %% |"
|
||||
msgstr " Drucken:%04.2f %% |"
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid " Line# "
|
||||
msgstr "Zeile#"
|
||||
#: pronterface.py:1173
|
||||
msgid " Line# %d of %d lines |"
|
||||
msgstr " Zeile# %d von %d Zeilen |"
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid " lines |"
|
||||
msgstr " Zeilen |"
|
||||
#: pronterface.py:1178
|
||||
msgid " Est: %s of %s remaining | "
|
||||
msgstr " Erw: %s von %s verbleibend | "
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid "of "
|
||||
msgstr "von"
|
||||
|
||||
#: pronterface.py:1163
|
||||
msgid " Est: "
|
||||
msgstr " Erw:"
|
||||
|
||||
#: pronterface.py:1164
|
||||
msgid " of: "
|
||||
msgstr " von: "
|
||||
|
||||
#: pronterface.py:1165
|
||||
msgid " Remaining | "
|
||||
msgstr " Verbleibend | "
|
||||
|
||||
#: pronterface.py:1166
|
||||
#: pronterface.py:1180
|
||||
msgid " Z: %0.2f mm"
|
||||
msgstr " Z: %0.2f mm"
|
||||
|
||||
#: pronterface.py:1233
|
||||
#: pronterface.py:1247
|
||||
msgid "Opening file failed."
|
||||
msgstr "Datei öffnen fehlgeschlagen."
|
||||
|
||||
#: pronterface.py:1239
|
||||
#: pronterface.py:1253
|
||||
msgid "Starting print"
|
||||
msgstr "Starte Druck"
|
||||
|
||||
#: pronterface.py:1262
|
||||
#: pronterface.py:1276
|
||||
msgid "Pick SD file"
|
||||
msgstr "Wähle SD Datei"
|
||||
|
||||
#: pronterface.py:1262
|
||||
#: pronterface.py:1276
|
||||
msgid "Select the file to print"
|
||||
msgstr "Wähle Druckdatei"
|
||||
|
||||
#: pronterface.py:1297
|
||||
#: pronterface.py:1311
|
||||
msgid "Failed to execute slicing software: "
|
||||
msgstr "Fehler beim Ausführen der Slicing Software:"
|
||||
|
||||
#: pronterface.py:1304
|
||||
#: pronterface.py:1318
|
||||
msgid "Slicing..."
|
||||
msgstr "Slicing..."
|
||||
|
||||
#: pronterface.py:1317
|
||||
#: pronterface.py:1372
|
||||
#: pronterface.py:1331
|
||||
msgid ", %d lines"
|
||||
msgstr ", %d Zeilen"
|
||||
|
||||
#: pronterface.py:1324
|
||||
#: pronterface.py:1338
|
||||
msgid "Load File"
|
||||
msgstr "Datei laden"
|
||||
|
||||
#: pronterface.py:1331
|
||||
#: pronterface.py:1345
|
||||
msgid "Slicing "
|
||||
msgstr "Slicing"
|
||||
|
||||
#: pronterface.py:1350
|
||||
#: pronterface.py:1364
|
||||
msgid "Open file to print"
|
||||
msgstr "Öffne zu druckende Datei"
|
||||
|
||||
#: pronterface.py:1351
|
||||
#: pronterface.py:1365
|
||||
msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)"
|
||||
msgstr "OBJ,STL und GCODE Dateien (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)"
|
||||
msgstr ""
|
||||
"OBJ,STL und GCODE Dateien (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)"
|
||||
|
||||
#: pronterface.py:1358
|
||||
#: pronterface.py:1372
|
||||
msgid "File not found!"
|
||||
msgstr "Datei nicht gefunden!"
|
||||
|
||||
#: pronterface.py:1382
|
||||
#: pronterface.py:1386
|
||||
msgid "Loaded %s, %d lines"
|
||||
msgstr "Geladen %s, %d Zeilen"
|
||||
|
||||
#: pronterface.py:1396
|
||||
msgid "mm of filament used in this print\n"
|
||||
msgstr "mm Filament in Druck genutzt\n"
|
||||
|
||||
#: pronterface.py:1383
|
||||
#: pronterface.py:1397
|
||||
msgid ""
|
||||
"mm in X\n"
|
||||
"and is"
|
||||
"the print goes from %f mm to %f mm in X\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
"mm in X\n"
|
||||
"und ist"
|
||||
"Der Druck verläuft von %f mm bis %f mm in X\n"
|
||||
"und ist %f mm breit\n"
|
||||
|
||||
#: pronterface.py:1383
|
||||
#: pronterface.py:1384
|
||||
msgid "mm wide\n"
|
||||
msgstr "mm breit\n"
|
||||
|
||||
#: pronterface.py:1383
|
||||
#: pronterface.py:1384
|
||||
#: pronterface.py:1385
|
||||
msgid "mm to"
|
||||
msgstr "mm bis"
|
||||
|
||||
#: pronterface.py:1383
|
||||
#: pronterface.py:1384
|
||||
#: pronterface.py:1385
|
||||
msgid "the print goes from"
|
||||
msgstr "Der Druck verläuft von"
|
||||
|
||||
#: pronterface.py:1384
|
||||
#: pronterface.py:1398
|
||||
msgid ""
|
||||
"mm in Y\n"
|
||||
"and is"
|
||||
"the print goes from %f mm to %f mm in Y\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
"mm in Y\n"
|
||||
"und ist"
|
||||
"Der Druck verläuft von %f mm bis %f mm in Y\n"
|
||||
"und ist %f mm breit\n"
|
||||
|
||||
#: pronterface.py:1385
|
||||
msgid "mm high\n"
|
||||
msgstr "mm hoch\n"
|
||||
|
||||
#: pronterface.py:1385
|
||||
#: pronterface.py:1399
|
||||
msgid ""
|
||||
"mm in Z\n"
|
||||
"and is"
|
||||
"the print goes from %f mm to %f mm in Z\n"
|
||||
"and is %f mm high\n"
|
||||
msgstr ""
|
||||
"mm in Z\n"
|
||||
"und ist"
|
||||
"Der Druck verläuft von %f mm bis %f mm in Z\n"
|
||||
"und ist %f mm hoch\n"
|
||||
|
||||
#: pronterface.py:1386
|
||||
#: pronterface.py:1400
|
||||
msgid "Estimated duration (pessimistic): "
|
||||
msgstr "Geschätze Dauer (pessimistisch):"
|
||||
msgstr "Geschätze Dauer (pessimistisch): "
|
||||
|
||||
#: pronterface.py:1410
|
||||
#: pronterface.py:1424
|
||||
msgid "No file loaded. Please use load first."
|
||||
msgstr "Keine Datei geladen. Benutze zuerst laden."
|
||||
|
||||
#: pronterface.py:1421
|
||||
#: pronterface.py:1435
|
||||
msgid "Restart"
|
||||
msgstr "Neustart"
|
||||
|
||||
#: pronterface.py:1425
|
||||
#: pronterface.py:1439
|
||||
msgid "File upload complete"
|
||||
msgstr "Datei Upload komplett"
|
||||
|
||||
#: pronterface.py:1444
|
||||
#: pronterface.py:1458
|
||||
msgid "Pick SD filename"
|
||||
msgstr "Wähle SD Dateiname"
|
||||
|
||||
#: pronterface.py:1452
|
||||
#: pronterface.py:1466
|
||||
msgid "Paused."
|
||||
msgstr "Pausiert."
|
||||
|
||||
#: pronterface.py:1462
|
||||
#: pronterface.py:1476
|
||||
msgid "Resume"
|
||||
msgstr "Fortsetzen"
|
||||
|
||||
#: pronterface.py:1478
|
||||
#: pronterface.py:1492
|
||||
msgid "Connecting..."
|
||||
msgstr "Verbinde..."
|
||||
|
||||
#: pronterface.py:1509
|
||||
#: pronterface.py:1523
|
||||
msgid "Disconnected."
|
||||
msgstr "Getrennt."
|
||||
|
||||
#: pronterface.py:1536
|
||||
#: pronterface.py:1550
|
||||
msgid "Reset."
|
||||
msgstr "Zurücksetzen."
|
||||
|
||||
#: pronterface.py:1537
|
||||
#: pronterface.py:1551
|
||||
msgid "Are you sure you want to reset the printer?"
|
||||
msgstr "Möchten Sie den Drucker wirklich zurücksetzen?"
|
||||
|
||||
#: pronterface.py:1537
|
||||
#: pronterface.py:1551
|
||||
msgid "Reset?"
|
||||
msgstr "Zurücksetzen?"
|
||||
|
||||
#: pronterface.py:1583
|
||||
#: pronterface.py:1597
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: pronterface.py:1639
|
||||
#: pronterface.py:1653
|
||||
msgid "Edit settings"
|
||||
msgstr "Einstellungen bearbeiten"
|
||||
|
||||
#: pronterface.py:1641
|
||||
#: pronterface.py:1655
|
||||
msgid "Defaults"
|
||||
msgstr "Standardwerte"
|
||||
|
||||
#: pronterface.py:1670
|
||||
#: pronterface.py:1684
|
||||
msgid "Custom button"
|
||||
msgstr "Individueller Button"
|
||||
|
||||
#: pronterface.py:1675
|
||||
#: pronterface.py:1689
|
||||
msgid "Button title"
|
||||
msgstr "Button Titel"
|
||||
|
||||
#: pronterface.py:1678
|
||||
#: pronterface.py:1692
|
||||
msgid "Command"
|
||||
msgstr "Kommando"
|
||||
|
||||
#: pronterface.py:1687
|
||||
#: pronterface.py:1701
|
||||
msgid "Color"
|
||||
msgstr "Farbe"
|
||||
|
||||
#~ msgid "Communications Speed (default: 115200)"
|
||||
#~ msgstr "Kommunikationsgeschwindigkeit (Vorgabe: 115200)"
|
||||
|
||||
#~ msgid "Heated Build Platform temp for ABS (default: 110 deg C)"
|
||||
#~ msgstr "Heizbett Temp. für ABS (Vorgabe: 110 Grad Celsius)"
|
||||
|
||||
#~ msgid "Heated Build Platform temp for PLA (default: 60 deg C)"
|
||||
#~ msgstr "Heizbett Temp. für PLA (Vorgabe: 60 Grad Celsius)"
|
||||
|
||||
#~ msgid "Feedrate for Control Panel Moves in Extrusions (default: 300mm/min)"
|
||||
#~ msgstr "Vorschub Control Panel Bewegungen Extrudierung (Vorgabe: 300mm/min)"
|
||||
|
||||
#~ msgid "Port used to communicate with printer"
|
||||
#~ msgstr "Port für Druckerkommunikation"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Slice command\n"
|
||||
#~ " default:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge_utilities/"
|
||||
#~ "skeinforge_craft.py $s)"
|
||||
#~ msgstr ""
|
||||
#~ "Kommando Slicing\n"
|
||||
#~ " Vorgabe:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge_utilities/"
|
||||
#~ "skeinforge_craft.py $s)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Slice settings command\n"
|
||||
#~ " default:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge.py"
|
||||
#~ msgstr ""
|
||||
#~ "Kommando Slicing Einstellungen\n"
|
||||
#~ " Vorgabe:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge.py"
|
||||
|
||||
#~ msgid "Extruder temp for ABS (default: 230 deg C)"
|
||||
#~ msgstr "Extruder Temperatur für ABS (Vorgabe: 230 Grad Celsius)"
|
||||
|
||||
#~ msgid "Extruder temp for PLA (default: 185 deg C)"
|
||||
#~ msgstr "Extruder Temperatur für PLA (Vorgabe: 185 Grad Celsius)"
|
||||
|
||||
#~ msgid "Feedrate for Control Panel Moves in X and Y (default: 3000mm/min)"
|
||||
#~ msgstr "Vorschub Control Panel Bewegungen X und Y (Vorgabe: 3000mm/min)"
|
||||
|
||||
#~ msgid "Feedrate for Control Panel Moves in Z (default: 200mm/min)"
|
||||
#~ msgstr "Vorschub Control Panel Bewegungen Z (Vorgabe: 200mm/min)"
|
||||
|
|
|
@ -1,572 +0,0 @@
|
|||
# Pronterface Message Catalog Template
|
||||
# Copyright (C) 2011 Jonathan Marsden
|
||||
# Jonathan Marsden <jmarsden@fastmail.fm>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pronterface jm1\n"
|
||||
"POT-Creation-Date: 2011-08-06 13:27+PDT\n"
|
||||
"PO-Revision-Date: 2011-11-16 16:53+0100\n"
|
||||
"Last-Translator: Cyril Laguilhon-Debat <c.laguilhon.debat@gmail.com>\n"
|
||||
"Language-Team: FR <c.laguilhon.debat@gmail.com>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: 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:67
|
||||
msgid "Printer Interface"
|
||||
msgstr "Interface imprimante"
|
||||
|
||||
#: pronterface.py:80
|
||||
msgid "Motors off"
|
||||
msgstr "Arrêter les moteurs"
|
||||
|
||||
#: pronterface.py:81
|
||||
msgid "Check temp"
|
||||
msgstr "Lire les températures"
|
||||
|
||||
#: pronterface.py:82
|
||||
msgid "Extrude"
|
||||
msgstr "Extruder"
|
||||
|
||||
#: pronterface.py:83
|
||||
msgid "Reverse"
|
||||
msgstr "Inverser"
|
||||
|
||||
#: 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: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: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: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:134
|
||||
msgid "Printer is now online."
|
||||
msgstr "L'imprimante est connectée"
|
||||
|
||||
#: pronterface.py:188
|
||||
msgid "Setting hotend temperature to "
|
||||
msgstr "Réglage de la température de la buse à"
|
||||
|
||||
#: pronterface.py:188
|
||||
#: pronterface.py:224
|
||||
msgid " degrees Celsius."
|
||||
msgstr " degrés Celsius."
|
||||
|
||||
#: pronterface.py:207
|
||||
#: pronterface.py:242
|
||||
msgid "Printer is not online."
|
||||
msgstr "L'imprimante est déconnectée"
|
||||
|
||||
#: 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:224
|
||||
msgid "Setting bed temperature to "
|
||||
msgstr "Réglage de la température du plateau à "
|
||||
|
||||
#: 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: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:265
|
||||
msgid "Cancelled."
|
||||
msgstr "Annulé"
|
||||
|
||||
#: pronterface.py:295
|
||||
msgid " Opens file"
|
||||
msgstr " Ouvrir un fichier"
|
||||
|
||||
#: pronterface.py:295
|
||||
msgid "&Open..."
|
||||
msgstr "&Ouvrir..."
|
||||
|
||||
#: pronterface.py:296
|
||||
msgid " Edit open file"
|
||||
msgstr " Éditer le fichier ouvert"
|
||||
|
||||
#: pronterface.py:296
|
||||
msgid "&Edit..."
|
||||
msgstr "&Éditer..."
|
||||
|
||||
#: pronterface.py:297
|
||||
msgid " Clear output console"
|
||||
msgstr "Effacer le contenu de la console de sortie"
|
||||
|
||||
#: pronterface.py:297
|
||||
msgid "Clear console"
|
||||
msgstr "Effacer la console"
|
||||
|
||||
#: pronterface.py:298
|
||||
msgid " Closes the Window"
|
||||
msgstr " Quitter le programme"
|
||||
|
||||
#: pronterface.py:298
|
||||
msgid "E&xit"
|
||||
msgstr "&Quitter"
|
||||
|
||||
#: pronterface.py:299
|
||||
msgid "&File"
|
||||
msgstr "&Fichier"
|
||||
|
||||
#: pronterface.py:304
|
||||
msgid "&Macros"
|
||||
msgstr "&Macros"
|
||||
|
||||
#: pronterface.py:305
|
||||
msgid "<&New...>"
|
||||
msgstr "<&Nouvelle...>"
|
||||
|
||||
#: pronterface.py:306
|
||||
msgid " Options dialog"
|
||||
msgstr " Fenêtre des options"
|
||||
|
||||
#: pronterface.py:306
|
||||
msgid "&Options"
|
||||
msgstr "&Options"
|
||||
|
||||
#: 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:331
|
||||
msgid "Enter macro name"
|
||||
msgstr "Saisissez le nom de la macro"
|
||||
|
||||
#: pronterface.py:334
|
||||
msgid "Macro name:"
|
||||
msgstr "Nom :"
|
||||
|
||||
#: pronterface.py:337
|
||||
msgid "Ok"
|
||||
msgstr "Valider"
|
||||
|
||||
#: pronterface.py:341
|
||||
#: pronterface.py:1465
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: pronterface.py:359
|
||||
msgid "' is being used by built-in command"
|
||||
msgstr "' est utilisé par des commandes internes."
|
||||
|
||||
#: pronterface.py:359
|
||||
msgid "Name '"
|
||||
msgstr "Le nom '"
|
||||
|
||||
#: 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:430
|
||||
msgid "Connect"
|
||||
msgstr "Connecter"
|
||||
|
||||
#: pronterface.py:432
|
||||
msgid "Connect to the printer"
|
||||
msgstr "Connecter l'imprimante"
|
||||
|
||||
#: pronterface.py:434
|
||||
msgid "Disconnect"
|
||||
msgstr "Déconnecter"
|
||||
|
||||
#: pronterface.py:438
|
||||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
||||
#: pronterface.py:441
|
||||
#: pronterface.py:687
|
||||
msgid "Mini mode"
|
||||
msgstr "Mode réduit"
|
||||
|
||||
#: pronterface.py:455
|
||||
msgid ""
|
||||
"Monitor\n"
|
||||
"printer"
|
||||
msgstr ""
|
||||
"Surveiller\n"
|
||||
"l'imprimante"
|
||||
|
||||
#: pronterface.py:465
|
||||
msgid "Load file"
|
||||
msgstr "Charger un fichier"
|
||||
|
||||
#: pronterface.py:468
|
||||
msgid "SD Upload"
|
||||
msgstr "Copier sur SD"
|
||||
|
||||
#: pronterface.py:472
|
||||
msgid "SD Print"
|
||||
msgstr "Imprimer depuis SD"
|
||||
|
||||
#: 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:494
|
||||
msgid "Send"
|
||||
msgstr "Envoyer"
|
||||
|
||||
#: pronterface.py:502
|
||||
#: pronterface.py:603
|
||||
msgid "mm/min"
|
||||
msgstr "mm/min"
|
||||
|
||||
#: pronterface.py:504
|
||||
msgid "XY:"
|
||||
msgstr "XY:"
|
||||
|
||||
#: pronterface.py:506
|
||||
msgid "Z:"
|
||||
msgstr "Z:"
|
||||
|
||||
#: pronterface.py:529
|
||||
msgid "Heater:"
|
||||
msgstr "Buse :"
|
||||
|
||||
#: pronterface.py:532
|
||||
#: pronterface.py:552
|
||||
msgid "Off"
|
||||
msgstr "Off"
|
||||
|
||||
#: pronterface.py:544
|
||||
#: pronterface.py:564
|
||||
msgid "Set"
|
||||
msgstr "Régler"
|
||||
|
||||
#: pronterface.py:549
|
||||
msgid "Bed:"
|
||||
msgstr "Plateau :"
|
||||
|
||||
#: pronterface.py:597
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
#: pronterface.py:636
|
||||
#: pronterface.py:1099
|
||||
#: pronterface.py:1315
|
||||
msgid "Not connected to printer."
|
||||
msgstr "Imprimante non connectée"
|
||||
|
||||
#: pronterface.py:694
|
||||
msgid "Full mode"
|
||||
msgstr "Mode complet"
|
||||
|
||||
#: 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 <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr "Définit des boutons personnalidés. Utilisation : <numero> \"Libelle\" [/c \"couleur\"] commande"
|
||||
|
||||
#: 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:865
|
||||
msgid "Edit custom button '%s'"
|
||||
msgstr "Editer le bouton personnalisé n°'%s'"
|
||||
|
||||
#: pronterface.py:867
|
||||
msgid "Move left <<"
|
||||
msgstr "Déplacer vers la gauche <<"
|
||||
|
||||
#: pronterface.py:870
|
||||
msgid "Move right >>"
|
||||
msgstr "Déplacer vers la droite >>"
|
||||
|
||||
#: pronterface.py:874
|
||||
msgid "Remove custom button '%s'"
|
||||
msgstr "Supprimer le bouton personnalisé n°'%s'"
|
||||
|
||||
#: pronterface.py:877
|
||||
msgid "Add custom button"
|
||||
msgstr "Ajouter un bouton personnalisé"
|
||||
|
||||
#: pronterface.py:1022
|
||||
msgid "event object missing"
|
||||
msgstr "evennement d'objet manquant"
|
||||
|
||||
#: pronterface.py:1050
|
||||
msgid "Invalid period given."
|
||||
msgstr "La période donnée est invalide"
|
||||
|
||||
#: pronterface.py:1053
|
||||
msgid "Monitoring printer."
|
||||
msgstr "Surveillance de l'imprimante"
|
||||
|
||||
#: pronterface.py:1055
|
||||
msgid "Done monitoring."
|
||||
msgstr "Surveillance de l'imprimante effectuée."
|
||||
|
||||
#: pronterface.py:1077
|
||||
msgid "Printer is online. "
|
||||
msgstr "L'imprimante est connectée"
|
||||
|
||||
#: pronterface.py:1079
|
||||
#: pronterface.py:1226
|
||||
#: pronterface.py:1278
|
||||
msgid "Loaded "
|
||||
msgstr "Chargé "
|
||||
|
||||
#: pronterface.py:1082
|
||||
msgid "Bed"
|
||||
msgstr "Plateau"
|
||||
|
||||
#: pronterface.py:1082
|
||||
msgid "Hotend"
|
||||
msgstr "Buse"
|
||||
|
||||
#: pronterface.py:1089
|
||||
msgid " SD printing:%04.2f %%"
|
||||
msgstr "Impression SD : %04.2f %%"
|
||||
|
||||
#: pronterface.py:1091
|
||||
msgid " Printing:%04.2f %%"
|
||||
msgstr "Impression : %04.2f %%"
|
||||
|
||||
#: pronterface.py:1149
|
||||
msgid "Opening file failed."
|
||||
msgstr "L'ouverture du fichier a échoué"
|
||||
|
||||
#: pronterface.py:1155
|
||||
msgid "Starting print"
|
||||
msgstr "Début de l'impression..."
|
||||
|
||||
#: pronterface.py:1178
|
||||
msgid "Pick SD file"
|
||||
msgstr "Choisir un fichier sur la carte SD"
|
||||
|
||||
#: pronterface.py:1178
|
||||
msgid "Select the file to print"
|
||||
msgstr "Sélectionnez le fichier à imprimer :"
|
||||
|
||||
#: pronterface.py:1206
|
||||
msgid "Skeinforge execution failed."
|
||||
msgstr "Exécution de Skeinforge échoué"
|
||||
|
||||
#: pronterface.py:1213
|
||||
msgid "Skeining..."
|
||||
msgstr "Skeining..."
|
||||
|
||||
#: pronterface.py:1226
|
||||
#: pronterface.py:1278
|
||||
msgid ", %d lines"
|
||||
msgstr ", %d lignes"
|
||||
|
||||
#: pronterface.py:1235
|
||||
msgid "Skeining "
|
||||
msgstr "Skeining "
|
||||
|
||||
#: pronterface.py:1237
|
||||
msgid ""
|
||||
"Skeinforge not found. \n"
|
||||
"Please copy Skeinforge into a directory named \"skeinforge\" in the same directory as this file."
|
||||
msgstr ""
|
||||
"Skeinforge non trouvé. \n"
|
||||
"Veuillez copier Skeinforge dans un répertoire nommé \"skeinforge\" placé dans le repertoire du programme."
|
||||
|
||||
#: pronterface.py:1256
|
||||
msgid "Open file to print"
|
||||
msgstr "Ouvrir un fichier à imprimer"
|
||||
|
||||
#: 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:1264
|
||||
msgid "File not found!"
|
||||
msgstr "Fichier non trouvé"
|
||||
|
||||
#: pronterface.py:1288
|
||||
msgid "mm of filament used in this print\n"
|
||||
msgstr "mm de filament utilisés pour cette impression\n"
|
||||
|
||||
#: 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:1323
|
||||
msgid "Restart"
|
||||
msgstr "Recommencer"
|
||||
|
||||
#: pronterface.py:1327
|
||||
msgid "File upload complete"
|
||||
msgstr "Envoi du fichier terminé"
|
||||
|
||||
#: pronterface.py:1346
|
||||
msgid "Pick SD filename"
|
||||
msgstr "Lister les fichiers sur la carte SD"
|
||||
|
||||
#: pronterface.py:1353
|
||||
msgid "Paused."
|
||||
msgstr "En pause"
|
||||
|
||||
#: pronterface.py:1363
|
||||
msgid "Resume"
|
||||
msgstr "Reprendre"
|
||||
|
||||
#: 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:1436
|
||||
msgid "Reset?"
|
||||
msgstr "Réinitialiser ?"
|
||||
|
||||
#: pronterface.py:1461
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: pronterface.py:1519
|
||||
msgid "Edit settings"
|
||||
msgstr "Modifier les paramètres"
|
||||
|
||||
#: pronterface.py:1521
|
||||
msgid "Defaults"
|
||||
msgstr "Paramètres par défaut"
|
||||
|
||||
#: pronterface.py:1543
|
||||
msgid "Custom button"
|
||||
msgstr "Commande personnalisée"
|
||||
|
||||
#: pronterface.py:1551
|
||||
msgid "Button title"
|
||||
msgstr "Titre du bouton"
|
||||
|
||||
#: pronterface.py:1554
|
||||
msgid "Command"
|
||||
msgstr "Commande"
|
||||
|
||||
#: pronterface.py:1563
|
||||
msgid "Color"
|
||||
msgstr "Couleur"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,95 @@
|
|||
# French Plater Message Catalog
|
||||
# Copyright (C) 2012 Guillaume Seguin
|
||||
# Guillaume Seguin <guillaume@segu.in>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Plater\n"
|
||||
"POT-Creation-Date: 2012-02-26 02:40+CET\n"
|
||||
"PO-Revision-Date: 2012-02-26 02:41+0100\n"
|
||||
"Last-Translator: Guillaume Seguin <guillaume@segu.in>\n"
|
||||
"Language-Team: FR <guillaume@segu.in>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: plater.py:247
|
||||
msgid "Plate building tool"
|
||||
msgstr "Outil d'assemblage de plateau"
|
||||
|
||||
#: plater.py:253
|
||||
msgid "Clear"
|
||||
msgstr "Vider"
|
||||
|
||||
#: plater.py:254
|
||||
msgid "Load"
|
||||
msgstr "Charger"
|
||||
|
||||
#: plater.py:256
|
||||
msgid "Export"
|
||||
msgstr "Exporter"
|
||||
|
||||
#: plater.py:259
|
||||
msgid "Done"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: plater.py:261
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: plater.py:263
|
||||
msgid "Snap to Z = 0"
|
||||
msgstr "Poser en Z = 0"
|
||||
|
||||
#: plater.py:264
|
||||
msgid "Put at 100, 100"
|
||||
msgstr "Placer en 100, 100"
|
||||
|
||||
#: plater.py:265
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: plater.py:266
|
||||
msgid "Auto"
|
||||
msgstr "Auto"
|
||||
|
||||
#: plater.py:290
|
||||
msgid "Autoplating"
|
||||
msgstr "Placement auto"
|
||||
|
||||
#: plater.py:318
|
||||
msgid "Bed full, sorry sir :("
|
||||
msgstr "Le lit est plein, désolé :("
|
||||
|
||||
#: plater.py:328
|
||||
msgid ""
|
||||
"Are you sure you want to clear the grid? All unsaved changes will be lost."
|
||||
msgstr ""
|
||||
"Êtes vous sur de vouloir vider la grille ? Toutes les modifications non "
|
||||
"enregistrées seront perdues."
|
||||
|
||||
#: plater.py:328
|
||||
msgid "Clear the grid?"
|
||||
msgstr "Vider la grille ?"
|
||||
|
||||
#: plater.py:370
|
||||
msgid "Pick file to save to"
|
||||
msgstr "Choisir le fichier dans lequel enregistrer"
|
||||
|
||||
#: plater.py:371
|
||||
msgid "STL files (;*.stl;*.STL;)"
|
||||
msgstr "Fichiers STL (;*.stl;*.STL;)"
|
||||
|
||||
#: plater.py:391
|
||||
msgid "wrote %s"
|
||||
msgstr "%s écrit"
|
||||
|
||||
#: plater.py:394
|
||||
msgid "Pick file to load"
|
||||
msgstr "Choisir le fichier à charger"
|
||||
|
||||
#: plater.py:395
|
||||
msgid "STL files (;*.stl;*.STL;)|*.stl|OpenSCAD files (;*.scad;)|*.scad"
|
||||
msgstr "Fichiers STL (;*.stl;*.STL;)|*.stl|Fichiers OpenSCAD (;*.scad;)|*.scad"
|
Binary file not shown.
|
@ -0,0 +1,609 @@
|
|||
# Pronterface Message Catalog Template
|
||||
# Copyright (C) 2011 Jonathan Marsden
|
||||
# Jonathan Marsden <jmarsden@fastmail.fm>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pronterface jm1\n"
|
||||
"POT-Creation-Date: 2012-03-16 03:48+CET\n"
|
||||
"PO-Revision-Date: 2012-03-16 03:50+0100\n"
|
||||
"Last-Translator: Guillaume Seguin <guillaume@segu.in>\n"
|
||||
"Language-Team: FR <c.laguilhon.debat@gmail.com>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: pronterface.py:30
|
||||
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:81
|
||||
msgid ""
|
||||
"Dimensions of Build Platform\n"
|
||||
" & optional offset of origin\n"
|
||||
"\n"
|
||||
"Examples:\n"
|
||||
" XXXxYYY\n"
|
||||
" XXX,YYY,ZZZ\n"
|
||||
" XXXxYYYxZZZ+OffX+OffY+OffZ"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:82
|
||||
msgid "Last Set Temperature for the Heated Print Bed"
|
||||
msgstr "Dernière température du plateau chauffant définie"
|
||||
|
||||
#: pronterface.py:83
|
||||
msgid "Folder of last opened file"
|
||||
msgstr "Dossier du dernier fichier ouvert"
|
||||
|
||||
#: pronterface.py:84
|
||||
msgid "Last Temperature of the Hot End"
|
||||
msgstr "Dernière température de la buse définie"
|
||||
|
||||
#: pronterface.py:85
|
||||
msgid "Width of Extrusion in Preview (default: 0.5)"
|
||||
msgstr "Largeur de l'extrusion dans la prévisualisation (défaut : 0.5)"
|
||||
|
||||
#: pronterface.py:86
|
||||
msgid "Fine Grid Spacing (default: 10)"
|
||||
msgstr "Espacement fin de la grille (défaut : 10)"
|
||||
|
||||
#: pronterface.py:87
|
||||
msgid "Coarse Grid Spacing (default: 50)"
|
||||
msgstr "Espacement large de la grille (défaut : 50)"
|
||||
|
||||
#: pronterface.py:88
|
||||
msgid "Pronterface background color (default: #FFFFFF)"
|
||||
msgstr "Couleur de fond de la Pronterface (défaut : #FFFFFF)"
|
||||
|
||||
#: pronterface.py:91
|
||||
msgid "Printer Interface"
|
||||
msgstr "Interface de l'imprimante"
|
||||
|
||||
#: pronterface.py:109
|
||||
msgid "Motors off"
|
||||
msgstr "Arrêter les moteurs"
|
||||
|
||||
#: pronterface.py:110
|
||||
msgid "Check temp"
|
||||
msgstr "Lire les températures"
|
||||
|
||||
#: pronterface.py:111
|
||||
msgid "Extrude"
|
||||
msgstr "Extruder"
|
||||
|
||||
#: pronterface.py:112
|
||||
msgid "Reverse"
|
||||
msgstr "Inverser"
|
||||
|
||||
#: pronterface.py:130
|
||||
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 ""
|
||||
"# Tous vos boutons personalisés ont été déplacés dans le fichier ."
|
||||
"pronsolerc.\n"
|
||||
"# Veuillez ne plus en ajouter ici.\n"
|
||||
"# Une sauvegarde de vos anciens boutons est dans le fichier custombtn.old\n"
|
||||
|
||||
#: pronterface.py:135
|
||||
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:136
|
||||
msgid ""
|
||||
"Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"
|
||||
msgstr ""
|
||||
"custombtn.txt ignoré. Retirez tous les boutons en cours pour revenir à "
|
||||
"custombtn.txt"
|
||||
|
||||
#: pronterface.py:165 pronterface.py:520 pronterface.py:1343
|
||||
#: pronterface.py:1397 pronterface.py:1521 pronterface.py:1555
|
||||
#: pronterface.py:1567
|
||||
msgid "Print"
|
||||
msgstr "Imprimer"
|
||||
|
||||
#: pronterface.py:169
|
||||
msgid "Printer is now online."
|
||||
msgstr "L'imprimante est connectée"
|
||||
|
||||
#: pronterface.py:170
|
||||
msgid "Disconnect"
|
||||
msgstr "Déconnecter"
|
||||
|
||||
#: pronterface.py:229
|
||||
msgid "Setting hotend temperature to %f degrees Celsius."
|
||||
msgstr "Réglage de la température de la buse à %f degrés Celsius."
|
||||
|
||||
#: pronterface.py:248 pronterface.py:284 pronterface.py:346
|
||||
msgid "Printer is not online."
|
||||
msgstr "L'imprimante est déconnectée"
|
||||
|
||||
#: pronterface.py:250
|
||||
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 la buse, "
|
||||
"réglez sa température à 0°C."
|
||||
|
||||
#: pronterface.py:252
|
||||
msgid "You must enter a temperature. (%s)"
|
||||
msgstr "Vous devez saisir une température. (%s)"
|
||||
|
||||
#: pronterface.py:265
|
||||
msgid "Setting bed temperature to %f degrees Celsius."
|
||||
msgstr "Réglage de la température du plateau à %f degrés Celsius."
|
||||
|
||||
#: pronterface.py:286
|
||||
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:288
|
||||
msgid "You must enter a temperature."
|
||||
msgstr "Vous devez saisir une température."
|
||||
|
||||
#: pronterface.py:303
|
||||
msgid "Do you want to erase the macro?"
|
||||
msgstr "Voulez-vous effacer la macro ?"
|
||||
|
||||
#: pronterface.py:307
|
||||
msgid "Cancelled."
|
||||
msgstr "Annulé"
|
||||
|
||||
#: pronterface.py:352
|
||||
msgid " Opens file"
|
||||
msgstr " Ouvrir un fichier"
|
||||
|
||||
#: pronterface.py:352
|
||||
msgid "&Open..."
|
||||
msgstr "&Ouvrir..."
|
||||
|
||||
#: pronterface.py:353
|
||||
msgid " Edit open file"
|
||||
msgstr " Éditer le fichier ouvert"
|
||||
|
||||
#: pronterface.py:353
|
||||
msgid "&Edit..."
|
||||
msgstr "&Éditer..."
|
||||
|
||||
#: pronterface.py:354
|
||||
msgid " Clear output console"
|
||||
msgstr " Effacer le contenu de la console de sortie"
|
||||
|
||||
#: pronterface.py:354
|
||||
msgid "Clear console"
|
||||
msgstr "Effacer la console"
|
||||
|
||||
#: pronterface.py:355
|
||||
msgid " Project slices"
|
||||
msgstr " Projeter les couches"
|
||||
|
||||
#: pronterface.py:355
|
||||
msgid "Projector"
|
||||
msgstr "Projecteur"
|
||||
|
||||
#: pronterface.py:356
|
||||
msgid " Closes the Window"
|
||||
msgstr " Quitter le programme"
|
||||
|
||||
#: pronterface.py:356
|
||||
msgid "E&xit"
|
||||
msgstr "&Quitter"
|
||||
|
||||
#: pronterface.py:357
|
||||
msgid "&File"
|
||||
msgstr "&Fichier"
|
||||
|
||||
#: pronterface.py:362
|
||||
msgid "&Macros"
|
||||
msgstr "&Macros"
|
||||
|
||||
#: pronterface.py:363
|
||||
msgid "<&New...>"
|
||||
msgstr "<&Nouvelle...>"
|
||||
|
||||
#: pronterface.py:364
|
||||
msgid " Options dialog"
|
||||
msgstr " Fenêtre des options"
|
||||
|
||||
#: pronterface.py:364
|
||||
msgid "&Options"
|
||||
msgstr "&Options"
|
||||
|
||||
#: pronterface.py:366
|
||||
msgid " Adjust slicing settings"
|
||||
msgstr " Régler les paramètres de slicing"
|
||||
|
||||
#: pronterface.py:366
|
||||
msgid "Slicing Settings"
|
||||
msgstr "Paramètres de slicing"
|
||||
|
||||
#: pronterface.py:373
|
||||
msgid "&Settings"
|
||||
msgstr "&Paramètres"
|
||||
|
||||
#: pronterface.py:389
|
||||
msgid "Enter macro name"
|
||||
msgstr "Saisissez le nom de la macro"
|
||||
|
||||
#: pronterface.py:392
|
||||
msgid "Macro name:"
|
||||
msgstr "Nom :"
|
||||
|
||||
#: pronterface.py:395
|
||||
msgid "Ok"
|
||||
msgstr "Valider"
|
||||
|
||||
#: pronterface.py:399 pronterface.py:1354 pronterface.py:1613
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: pronterface.py:417
|
||||
msgid "Name '%s' is being used by built-in command"
|
||||
msgstr "Le nom '%s' est utilisé par une commande interne"
|
||||
|
||||
#: pronterface.py:420
|
||||
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:469
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: pronterface.py:488
|
||||
msgid "Connect"
|
||||
msgstr "Connecter"
|
||||
|
||||
#: pronterface.py:490
|
||||
msgid "Connect to the printer"
|
||||
msgstr "Connecter l'imprimante"
|
||||
|
||||
#: pronterface.py:492
|
||||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
||||
#: pronterface.py:495 pronterface.py:772
|
||||
msgid "Mini mode"
|
||||
msgstr "Mode réduit"
|
||||
|
||||
#: pronterface.py:499
|
||||
msgid "Monitor Printer"
|
||||
msgstr "Surveiller l'imprimante"
|
||||
|
||||
#: pronterface.py:509
|
||||
msgid "Load file"
|
||||
msgstr "Charger un fichier"
|
||||
|
||||
#: pronterface.py:512
|
||||
msgid "Compose"
|
||||
msgstr "Composer"
|
||||
|
||||
#: pronterface.py:516
|
||||
msgid "SD"
|
||||
msgstr "SD"
|
||||
|
||||
#: pronterface.py:524 pronterface.py:1398 pronterface.py:1444
|
||||
#: pronterface.py:1495 pronterface.py:1520 pronterface.py:1554
|
||||
#: pronterface.py:1570
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
#: pronterface.py:537
|
||||
msgid "Send"
|
||||
msgstr "Envoyer"
|
||||
|
||||
#: pronterface.py:545 pronterface.py:646
|
||||
msgid "mm/min"
|
||||
msgstr "mm/min"
|
||||
|
||||
#: pronterface.py:547
|
||||
msgid "XY:"
|
||||
msgstr "XY:"
|
||||
|
||||
#: pronterface.py:549
|
||||
msgid "Z:"
|
||||
msgstr "Z:"
|
||||
|
||||
#: pronterface.py:572 pronterface.py:653
|
||||
msgid "Heater:"
|
||||
msgstr "Buse :"
|
||||
|
||||
#: pronterface.py:575 pronterface.py:595
|
||||
msgid "Off"
|
||||
msgstr "Off"
|
||||
|
||||
#: pronterface.py:587 pronterface.py:607
|
||||
msgid "Set"
|
||||
msgstr "Régler"
|
||||
|
||||
#: pronterface.py:592 pronterface.py:655
|
||||
msgid "Bed:"
|
||||
msgstr "Plateau :"
|
||||
|
||||
#: pronterface.py:640
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
#: pronterface.py:698 pronterface.py:1206 pronterface.py:1438
|
||||
msgid "Not connected to printer."
|
||||
msgstr "Imprimante non connectée."
|
||||
|
||||
#: pronterface.py:727
|
||||
msgid "SD Upload"
|
||||
msgstr "Copier sur SD"
|
||||
|
||||
#: pronterface.py:731
|
||||
msgid "SD Print"
|
||||
msgstr "Imprimer depuis SD"
|
||||
|
||||
#: pronterface.py:779
|
||||
msgid "Full mode"
|
||||
msgstr "Mode complet"
|
||||
|
||||
#: pronterface.py:804
|
||||
msgid "Execute command: "
|
||||
msgstr "Exécuter la commande :"
|
||||
|
||||
#: pronterface.py:815
|
||||
msgid "click to add new custom button"
|
||||
msgstr "Ajouter un bouton personnalisé"
|
||||
|
||||
#: pronterface.py:834
|
||||
msgid ""
|
||||
"Defines custom button. Usage: button <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr ""
|
||||
"Définit des boutons personnalidés. Utilisation : <numero> \"Libelle\" [/c "
|
||||
"\"couleur\"] commande"
|
||||
|
||||
#: pronterface.py:856
|
||||
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:948
|
||||
msgid "Edit custom button '%s'"
|
||||
msgstr "Editer le bouton personnalisé '%s'"
|
||||
|
||||
#: pronterface.py:950
|
||||
msgid "Move left <<"
|
||||
msgstr "Déplacer vers la gauche <<"
|
||||
|
||||
#: pronterface.py:953
|
||||
msgid "Move right >>"
|
||||
msgstr "Déplacer vers la droite >>"
|
||||
|
||||
#: pronterface.py:957
|
||||
msgid "Remove custom button '%s'"
|
||||
msgstr "Supprimer le bouton personnalisé '%s'"
|
||||
|
||||
#: pronterface.py:960
|
||||
msgid "Add custom button"
|
||||
msgstr "Ajouter un bouton personnalisé"
|
||||
|
||||
#: pronterface.py:1105
|
||||
msgid "event object missing"
|
||||
msgstr "événement d'objet manquant"
|
||||
|
||||
#: pronterface.py:1133
|
||||
msgid "Invalid period given."
|
||||
msgstr "La période donnée est invalide"
|
||||
|
||||
#: pronterface.py:1136
|
||||
msgid "Monitoring printer."
|
||||
msgstr "Imprimante sous surveillance."
|
||||
|
||||
#: pronterface.py:1138
|
||||
msgid "Done monitoring."
|
||||
msgstr "Surveillance de l'imprimante effectuée."
|
||||
|
||||
#: pronterface.py:1160
|
||||
msgid "Printer is online. "
|
||||
msgstr "L'imprimante est connectée. "
|
||||
|
||||
#: pronterface.py:1162 pronterface.py:1341
|
||||
msgid "Loaded "
|
||||
msgstr "Chargé "
|
||||
|
||||
#: pronterface.py:1165
|
||||
msgid "Bed"
|
||||
msgstr "Plateau"
|
||||
|
||||
#: pronterface.py:1165
|
||||
msgid "Hotend"
|
||||
msgstr "Buse"
|
||||
|
||||
#: pronterface.py:1175
|
||||
msgid " SD printing:%04.2f %%"
|
||||
msgstr " Impression SD : %04.2f %%"
|
||||
|
||||
#: pronterface.py:1178
|
||||
msgid " Printing:%04.2f %% |"
|
||||
msgstr " Impression : %04.2f %% |"
|
||||
|
||||
#: pronterface.py:1179
|
||||
msgid " Line# %d of %d lines |"
|
||||
msgstr " Ligne# %d sur %d lignes |"
|
||||
|
||||
#: pronterface.py:1184
|
||||
msgid " Est: %s of %s remaining | "
|
||||
msgstr " ETA: %s restant sur %s | "
|
||||
|
||||
#: pronterface.py:1186
|
||||
msgid " Z: %0.2f mm"
|
||||
msgstr " Z: %0.2f mm"
|
||||
|
||||
#: pronterface.py:1257
|
||||
msgid "Opening file failed."
|
||||
msgstr "L'ouverture du fichier a échoué"
|
||||
|
||||
#: pronterface.py:1263
|
||||
msgid "Starting print"
|
||||
msgstr "Début de l'impression..."
|
||||
|
||||
#: pronterface.py:1286
|
||||
msgid "Pick SD file"
|
||||
msgstr "Choisir un fichier sur la carte SD"
|
||||
|
||||
#: pronterface.py:1286
|
||||
msgid "Select the file to print"
|
||||
msgstr "Sélectionnez le fichier à imprimer :"
|
||||
|
||||
#: pronterface.py:1321
|
||||
msgid "Failed to execute slicing software: "
|
||||
msgstr "Une erreur s'est produite lors du slicing : "
|
||||
|
||||
#: pronterface.py:1328
|
||||
msgid "Slicing..."
|
||||
msgstr "Slicing..."
|
||||
|
||||
#: pronterface.py:1341
|
||||
msgid ", %d lines"
|
||||
msgstr ", %d lignes"
|
||||
|
||||
#: pronterface.py:1348
|
||||
msgid "Load File"
|
||||
msgstr "Charger un fichier"
|
||||
|
||||
#: pronterface.py:1355
|
||||
msgid "Slicing "
|
||||
msgstr "Slicing "
|
||||
|
||||
#: pronterface.py:1374
|
||||
msgid "Open file to print"
|
||||
msgstr "Ouvrir un fichier à imprimer"
|
||||
|
||||
#: pronterface.py:1375
|
||||
msgid ""
|
||||
"OBJ, STL, and GCODE files (*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ)|*."
|
||||
"gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ|All Files (*.*)|*.*"
|
||||
msgstr ""
|
||||
"Fichiers OBJ, STL et GCODE (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)|*."
|
||||
"gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ|Tous les fichiers (*.*)|*.*"
|
||||
|
||||
#: pronterface.py:1382
|
||||
msgid "File not found!"
|
||||
msgstr "Fichier non trouvé"
|
||||
|
||||
#: pronterface.py:1396
|
||||
msgid "Loaded %s, %d lines"
|
||||
msgstr "%s chargé, %d lignes"
|
||||
|
||||
#: pronterface.py:1406
|
||||
msgid "mm of filament used in this print\n"
|
||||
msgstr "mm de filament utilisés pour cette impression\n"
|
||||
|
||||
#: pronterface.py:1407
|
||||
msgid ""
|
||||
"the print goes from %f mm to %f mm in X\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
"L'impression va de %f mm à %f m en X\n"
|
||||
"et mesure %f mm de large\n"
|
||||
|
||||
#: pronterface.py:1408
|
||||
msgid ""
|
||||
"the print goes from %f mm to %f mm in Y\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
"L'impression va de %f mm à %f m en Y\n"
|
||||
"et mesure %f mm de large\n"
|
||||
|
||||
#: pronterface.py:1409
|
||||
msgid ""
|
||||
"the print goes from %f mm to %f mm in Z\n"
|
||||
"and is %f mm high\n"
|
||||
msgstr ""
|
||||
"L'impression va de %f mm à %f m en Y\n"
|
||||
"et mesure %f mm de haut\n"
|
||||
|
||||
#: pronterface.py:1410
|
||||
msgid "Estimated duration (pessimistic): "
|
||||
msgstr "Durée estimée (pessimiste) : "
|
||||
|
||||
#: pronterface.py:1435
|
||||
msgid "No file loaded. Please use load first."
|
||||
msgstr "Aucun fichier chargé. Veuillez charger un fichier avant."
|
||||
|
||||
#: pronterface.py:1446
|
||||
msgid "Restart"
|
||||
msgstr "Recommencer"
|
||||
|
||||
#: pronterface.py:1450
|
||||
msgid "File upload complete"
|
||||
msgstr "Envoi du fichier terminé"
|
||||
|
||||
#: pronterface.py:1469
|
||||
msgid "Pick SD filename"
|
||||
msgstr "Lister les fichiers sur la carte SD"
|
||||
|
||||
#: pronterface.py:1477
|
||||
msgid "Paused."
|
||||
msgstr "En pause."
|
||||
|
||||
#: pronterface.py:1488
|
||||
msgid "Resume"
|
||||
msgstr "Reprendre"
|
||||
|
||||
#: pronterface.py:1504
|
||||
msgid "Connecting..."
|
||||
msgstr "Connection en cours..."
|
||||
|
||||
#: pronterface.py:1535
|
||||
msgid "Disconnected."
|
||||
msgstr "Déconnecté."
|
||||
|
||||
#: pronterface.py:1562
|
||||
msgid "Reset."
|
||||
msgstr "Réinitialisée."
|
||||
|
||||
#: pronterface.py:1563
|
||||
msgid "Are you sure you want to reset the printer?"
|
||||
msgstr "Etes-vous sûr de vouloir réinitialiser l'imprimante?"
|
||||
|
||||
#: pronterface.py:1563
|
||||
msgid "Reset?"
|
||||
msgstr "Réinitialiser ?"
|
||||
|
||||
#: pronterface.py:1609
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: pronterface.py:1665
|
||||
msgid "Edit settings"
|
||||
msgstr "Modifier les paramètres"
|
||||
|
||||
#: pronterface.py:1667
|
||||
msgid "Defaults"
|
||||
msgstr "Paramètres par défaut"
|
||||
|
||||
#: pronterface.py:1696
|
||||
msgid "Custom button"
|
||||
msgstr "Commande personnalisée"
|
||||
|
||||
#: pronterface.py:1701
|
||||
msgid "Button title"
|
||||
msgstr "Titre du bouton"
|
||||
|
||||
#: pronterface.py:1704
|
||||
msgid "Command"
|
||||
msgstr "Commande"
|
||||
|
||||
#: pronterface.py:1713
|
||||
msgid "Color"
|
||||
msgstr "Couleur"
|
Binary file not shown.
|
@ -5,77 +5,21 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2012-01-19 09:21+CET\n"
|
||||
"POT-Creation-Date: 2012-02-26 02:12+CET\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Italian RepRap Community <reprap-italia@googlegroups.com>\n"
|
||||
"Language-Team: Italian RepRap Community <reprap-italia@googlegroups.com>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
#: pronsole.py:250
|
||||
msgid "Communications Speed (default: 115200)"
|
||||
msgstr "Velocità di comunicazione (default: 115200)"
|
||||
|
||||
#: pronsole.py:251
|
||||
msgid "Heated Build Platform temp for ABS (default: 110 deg C)"
|
||||
msgstr "Temperatura piano di stampa per ABS (default: 110° C) "
|
||||
|
||||
#: pronsole.py:252
|
||||
msgid "Heated Build Platform temp for PLA (default: 60 deg C)"
|
||||
msgstr "Temperatura piano di stampa per PLA (default: 60° C)"
|
||||
|
||||
#: pronsole.py:253
|
||||
msgid "Feedrate for Control Panel Moves in Extrusions (default: 300mm/min)"
|
||||
msgstr "Velocità dei movimenti dell'estrusore in modalità manuale (default: 300mm/min)"
|
||||
|
||||
#: pronsole.py:254
|
||||
msgid "Port used to communicate with printer"
|
||||
msgstr "Porta usata per comunicare con la stampante"
|
||||
|
||||
#: pronsole.py:255
|
||||
msgid ""
|
||||
"Slice command\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py $s)"
|
||||
msgstr ""
|
||||
"Comando del generatore di percorso\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py $s)"
|
||||
|
||||
#: pronsole.py:256
|
||||
msgid ""
|
||||
"Slice settings command\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge.py"
|
||||
msgstr ""
|
||||
"Comando di configurazione del generatore di percorso\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge.py"
|
||||
|
||||
#: pronsole.py:257
|
||||
msgid "Extruder temp for ABS (default: 230 deg C)"
|
||||
msgstr "Temperatura di estrusione per ABS (default: 230° C)"
|
||||
|
||||
#: pronsole.py:258
|
||||
msgid "Extruder temp for PLA (default: 185 deg C)"
|
||||
msgstr "Temperatura di estrusione per PLA (default: 185° C"
|
||||
|
||||
#: pronsole.py:259
|
||||
msgid "Feedrate for Control Panel Moves in X and Y (default: 3000mm/min)"
|
||||
msgstr "Velocità dei movimenti degli assi X e Y in modalità manuale (default: 3000mm/min)"
|
||||
|
||||
#: pronsole.py:260
|
||||
msgid "Feedrate for Control Panel Moves in Z (default: 200mm/min)"
|
||||
msgstr "Velocità dei movimenti dell'asse Z in modalità manuale (default: 200mm/min)"
|
||||
|
||||
#: pronterface.py:15
|
||||
#: pronterface.py:30
|
||||
msgid "WX is not installed. This program requires WX to run."
|
||||
msgstr "WX non è installato. Questo software richiede WX per funzionare."
|
||||
|
||||
#: pronterface.py:66
|
||||
#: pronterface.py:81
|
||||
msgid ""
|
||||
"Dimensions of Build Platform\n"
|
||||
" & optional offset of origin\n"
|
||||
|
@ -93,55 +37,55 @@ msgstr ""
|
|||
" XXX,YYY,ZZZ\n"
|
||||
" XXXxYYYxZZZ+SposX+SposY+SposZ"
|
||||
|
||||
#: pronterface.py:67
|
||||
#: pronterface.py:82
|
||||
msgid "Last Set Temperature for the Heated Print Bed"
|
||||
msgstr "Ultima temperatura impostata per il letto riscaldato"
|
||||
|
||||
#: pronterface.py:68
|
||||
#: pronterface.py:83
|
||||
msgid "Folder of last opened file"
|
||||
msgstr "Cartella dell'ultimo file aperto"
|
||||
|
||||
#: pronterface.py:69
|
||||
#: pronterface.py:84
|
||||
msgid "Last Temperature of the Hot End"
|
||||
msgstr "Ultima temperatura dell'estrusore"
|
||||
|
||||
#: pronterface.py:70
|
||||
#: pronterface.py:85
|
||||
msgid "Width of Extrusion in Preview (default: 0.5)"
|
||||
msgstr "Larghezza dell'estrusione nell'anteprima (default: 0.5)"
|
||||
|
||||
#: pronterface.py:71
|
||||
#: pronterface.py:86
|
||||
msgid "Fine Grid Spacing (default: 10)"
|
||||
msgstr "Spaziatura fine della griglia (default: 10)"
|
||||
|
||||
#: pronterface.py:72
|
||||
#: pronterface.py:87
|
||||
msgid "Coarse Grid Spacing (default: 50)"
|
||||
msgstr "Spaziatura larga della griglia (default: 50)"
|
||||
|
||||
#: pronterface.py:73
|
||||
#: pronterface.py:88
|
||||
msgid "Pronterface background color (default: #FFFFFF)"
|
||||
msgstr "Colore di sfondo di Pronterface (default: #FFFFFF)"
|
||||
|
||||
#: pronterface.py:76
|
||||
#: pronterface.py:91
|
||||
msgid "Printer Interface"
|
||||
msgstr "Interfaccia di stampa"
|
||||
|
||||
#: pronterface.py:93
|
||||
#: pronterface.py:108
|
||||
msgid "Motors off"
|
||||
msgstr "Spegni motori"
|
||||
|
||||
#: pronterface.py:94
|
||||
#: pronterface.py:109
|
||||
msgid "Check temp"
|
||||
msgstr "Leggi temperatura"
|
||||
|
||||
#: pronterface.py:95
|
||||
#: pronterface.py:110
|
||||
msgid "Extrude"
|
||||
msgstr "Estrudi"
|
||||
|
||||
#: pronterface.py:96
|
||||
#: pronterface.py:111
|
||||
msgid "Reverse"
|
||||
msgstr "Ritrai"
|
||||
|
||||
#: pronterface.py:114
|
||||
#: pronterface.py:129
|
||||
msgid ""
|
||||
"# I moved all your custom buttons into .pronsolerc.\n"
|
||||
"# Please don't add them here any more.\n"
|
||||
|
@ -151,528 +95,566 @@ msgstr ""
|
|||
"# Per favore non aggiungerne altri qui.\n"
|
||||
"# Un backup dei tuoi vecchi pulsanti è in custombtn.old\n"
|
||||
|
||||
#: pronterface.py:119
|
||||
msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc"
|
||||
msgstr "Nota!!! Hai specificato pulsanti personalizzati sia in custombtn.txt che in .pronsolerc"
|
||||
#: pronterface.py:134
|
||||
msgid ""
|
||||
"Note!!! You have specified custom buttons in both custombtn.txt and ."
|
||||
"pronsolerc"
|
||||
msgstr ""
|
||||
"Nota!!! Hai specificato pulsanti personalizzati sia in custombtn.txt che in ."
|
||||
"pronsolerc"
|
||||
|
||||
#: pronterface.py:120
|
||||
msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"
|
||||
msgstr "Ignoro custombtn.txt. Elimina tutti i pulsanti attuali per tornare a custombtn.txt"
|
||||
#: pronterface.py:135
|
||||
msgid ""
|
||||
"Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"
|
||||
msgstr ""
|
||||
"Ignoro custombtn.txt. Elimina tutti i pulsanti attuali per tornare a "
|
||||
"custombtn.txt"
|
||||
|
||||
#: pronterface.py:148 pronterface.py:499 pronterface.py:1319
|
||||
#: pronterface.py:1373 pronterface.py:1495 pronterface.py:1529
|
||||
#: pronterface.py:1544
|
||||
#: pronterface.py:163 pronterface.py:514 pronterface.py:1333
|
||||
#: pronterface.py:1387 pronterface.py:1509 pronterface.py:1543
|
||||
#: pronterface.py:1558
|
||||
msgid "Print"
|
||||
msgstr "Stampa"
|
||||
|
||||
#: pronterface.py:152
|
||||
#: pronterface.py:167
|
||||
msgid "Printer is now online."
|
||||
msgstr "La stampante ora è connessa."
|
||||
|
||||
#: pronterface.py:212
|
||||
msgid "Setting hotend temperature to "
|
||||
msgstr "Imposto la temperatura dell'estrusore a "
|
||||
#: pronterface.py:168
|
||||
msgid "Disconnect"
|
||||
msgstr "Disconnettere."
|
||||
|
||||
#: pronterface.py:212 pronterface.py:248
|
||||
msgid " degrees Celsius."
|
||||
msgstr " gradi Celsius"
|
||||
#: pronterface.py:227
|
||||
msgid "Setting hotend temperature to %f degrees Celsius."
|
||||
msgstr "Imposto la temperatura dell'estrusore a %f gradi Celsius."
|
||||
|
||||
#: pronterface.py:231 pronterface.py:267 pronterface.py:325
|
||||
#: pronterface.py:246 pronterface.py:282 pronterface.py:340
|
||||
msgid "Printer is not online."
|
||||
msgstr "La stampante non è connessa."
|
||||
|
||||
#: pronterface.py:233
|
||||
msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0."
|
||||
msgstr "Non è possibile impostare temperature negative. Per raffreddare l'ugello imposta la sua temperatura a 0."
|
||||
|
||||
#: pronterface.py:248
|
||||
msgid "Setting bed temperature to "
|
||||
msgstr "Imposto la temperatura del piano di stampa a "
|
||||
msgid ""
|
||||
"You cannot set negative temperatures. To turn the hotend off entirely, set "
|
||||
"its temperature to 0."
|
||||
msgstr ""
|
||||
"Non è possibile impostare temperature negative. Per raffreddare l'ugello "
|
||||
"imposta la sua temperatura a 0."
|
||||
|
||||
#: pronterface.py:269
|
||||
msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0."
|
||||
msgstr "Non è possibile impostare temperature negative. Per raffreddare il piano di stampa imposta la sua temperatura a 0."
|
||||
#: pronterface.py:250
|
||||
msgid "You must enter a temperature. (%s)"
|
||||
msgstr "Devi inserire una temperatura. (%s)"
|
||||
|
||||
#: pronterface.py:271
|
||||
#: pronterface.py:263
|
||||
msgid "Setting bed temperature to %f degrees Celsius."
|
||||
msgstr "Imposto la temperatura del piano di stampa a %f gradi Celsius."
|
||||
|
||||
#: pronterface.py:284
|
||||
msgid ""
|
||||
"You cannot set negative temperatures. To turn the bed off entirely, set its "
|
||||
"temperature to 0."
|
||||
msgstr ""
|
||||
"Non è possibile impostare temperature negative. Per raffreddare il piano di "
|
||||
"stampa imposta la sua temperatura a 0."
|
||||
|
||||
#: pronterface.py:286
|
||||
msgid "You must enter a temperature."
|
||||
msgstr "Devi inserire una temperatura."
|
||||
|
||||
#: pronterface.py:286
|
||||
#: pronterface.py:301
|
||||
msgid "Do you want to erase the macro?"
|
||||
msgstr "Vuoi cancellare la macro?"
|
||||
|
||||
#: pronterface.py:290
|
||||
#: pronterface.py:305
|
||||
msgid "Cancelled."
|
||||
msgstr "Annullato."
|
||||
|
||||
#: pronterface.py:331
|
||||
#: pronterface.py:346
|
||||
msgid " Opens file"
|
||||
msgstr " Apre un file"
|
||||
|
||||
#: pronterface.py:331
|
||||
#: pronterface.py:346
|
||||
msgid "&Open..."
|
||||
msgstr "&Apri..."
|
||||
|
||||
#: pronterface.py:332
|
||||
#: pronterface.py:347
|
||||
msgid " Edit open file"
|
||||
msgstr " Modifica file aperto"
|
||||
|
||||
#: pronterface.py:332
|
||||
#: pronterface.py:347
|
||||
msgid "&Edit..."
|
||||
msgstr "&Modifica"
|
||||
|
||||
#: pronterface.py:333
|
||||
#: pronterface.py:348
|
||||
msgid " Clear output console"
|
||||
msgstr " Svuota la console"
|
||||
|
||||
#: pronterface.py:333
|
||||
#: pronterface.py:348
|
||||
msgid "Clear console"
|
||||
msgstr "Pulisci console"
|
||||
|
||||
#: pronterface.py:334
|
||||
#: pronterface.py:349
|
||||
msgid " Project slices"
|
||||
msgstr " Proietta i layer"
|
||||
|
||||
#: pronterface.py:334
|
||||
#: pronterface.py:349
|
||||
msgid "Projector"
|
||||
msgstr "Proiettore"
|
||||
|
||||
#: pronterface.py:335
|
||||
#: pronterface.py:350
|
||||
msgid " Closes the Window"
|
||||
msgstr " Chiude la finestra"
|
||||
|
||||
#: pronterface.py:335
|
||||
#: pronterface.py:350
|
||||
msgid "E&xit"
|
||||
msgstr "&Esci"
|
||||
|
||||
#: pronterface.py:336
|
||||
#: pronterface.py:351
|
||||
msgid "&File"
|
||||
msgstr "&File"
|
||||
|
||||
#: pronterface.py:341
|
||||
#: pronterface.py:356
|
||||
msgid "&Macros"
|
||||
msgstr "&Macro"
|
||||
|
||||
#: pronterface.py:342
|
||||
#: pronterface.py:357
|
||||
msgid "<&New...>"
|
||||
msgstr "<&Nuovo...>"
|
||||
|
||||
#: pronterface.py:343
|
||||
#: pronterface.py:358
|
||||
msgid " Options dialog"
|
||||
msgstr " Finestra di opzioni"
|
||||
|
||||
#: pronterface.py:343
|
||||
#: pronterface.py:358
|
||||
msgid "&Options"
|
||||
msgstr "&Opzioni"
|
||||
|
||||
#: pronterface.py:345
|
||||
#: pronterface.py:360
|
||||
msgid " Adjust slicing settings"
|
||||
msgstr " Configura la generazione del percorso"
|
||||
|
||||
#: pronterface.py:345
|
||||
#: pronterface.py:360
|
||||
msgid "Slicing Settings"
|
||||
msgstr "Impostazioni di generazione del percorso"
|
||||
|
||||
#: pronterface.py:352
|
||||
#: pronterface.py:367
|
||||
msgid "&Settings"
|
||||
msgstr "&Impostazioni"
|
||||
|
||||
#: pronterface.py:368
|
||||
#: pronterface.py:383
|
||||
msgid "Enter macro name"
|
||||
msgstr "Inserisci il nome della macro"
|
||||
|
||||
#: pronterface.py:371
|
||||
#: pronterface.py:386
|
||||
msgid "Macro name:"
|
||||
msgstr "Nome macro:"
|
||||
|
||||
#: pronterface.py:374
|
||||
#: pronterface.py:389
|
||||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
||||
#: pronterface.py:378 pronterface.py:1330 pronterface.py:1587
|
||||
#: pronterface.py:393 pronterface.py:1344 pronterface.py:1601
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: pronterface.py:396
|
||||
msgid "' is being used by built-in command"
|
||||
msgstr "' è usato da un comando interno"
|
||||
#: pronterface.py:411
|
||||
msgid "Name '%s' is being used by built-in command"
|
||||
msgstr "Nome '%s' è usato da un comando interno"
|
||||
|
||||
#: pronterface.py:396
|
||||
msgid "Name '"
|
||||
msgstr "Nome '"
|
||||
|
||||
#: pronterface.py:399
|
||||
#: pronterface.py:414
|
||||
msgid "Macro name may contain only alphanumeric symbols and underscores"
|
||||
msgstr "I nomi delle macro possono contenere solo simboli alfanumerici e underscore"
|
||||
msgstr ""
|
||||
"I nomi delle macro possono contenere solo simboli alfanumerici e underscore"
|
||||
|
||||
#: pronterface.py:448
|
||||
#: pronterface.py:463
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
#: pronterface.py:467
|
||||
#: pronterface.py:482
|
||||
msgid "Connect"
|
||||
msgstr "Connetti"
|
||||
|
||||
#: pronterface.py:469
|
||||
#: pronterface.py:484
|
||||
msgid "Connect to the printer"
|
||||
msgstr "Connetti alla stampante"
|
||||
|
||||
#: pronterface.py:471
|
||||
#: pronterface.py:486
|
||||
msgid "Reset"
|
||||
msgstr "Reset"
|
||||
|
||||
#: pronterface.py:474 pronterface.py:751
|
||||
#: pronterface.py:489 pronterface.py:766
|
||||
msgid "Mini mode"
|
||||
msgstr "Contrai"
|
||||
|
||||
#: pronterface.py:478
|
||||
#: pronterface.py:493
|
||||
msgid "Monitor Printer"
|
||||
msgstr "Controllo automatico temperatura"
|
||||
|
||||
#: pronterface.py:488
|
||||
#: pronterface.py:503
|
||||
msgid "Load file"
|
||||
msgstr "Carica file"
|
||||
|
||||
#: pronterface.py:491
|
||||
#: pronterface.py:506
|
||||
msgid "Compose"
|
||||
msgstr "Componi"
|
||||
|
||||
#: pronterface.py:495
|
||||
#: pronterface.py:510
|
||||
msgid "SD"
|
||||
msgstr "SD"
|
||||
|
||||
#: pronterface.py:503 pronterface.py:1374 pronterface.py:1419
|
||||
#: pronterface.py:1469 pronterface.py:1494 pronterface.py:1528
|
||||
#: pronterface.py:1543
|
||||
#: pronterface.py:518 pronterface.py:1388 pronterface.py:1433
|
||||
#: pronterface.py:1483 pronterface.py:1508 pronterface.py:1542
|
||||
#: pronterface.py:1557
|
||||
msgid "Pause"
|
||||
msgstr "Pausa"
|
||||
|
||||
#: pronterface.py:516
|
||||
#: pronterface.py:531
|
||||
msgid "Send"
|
||||
msgstr "Invia"
|
||||
|
||||
#: pronterface.py:524 pronterface.py:625
|
||||
#: pronterface.py:539 pronterface.py:640
|
||||
msgid "mm/min"
|
||||
msgstr "mm/min"
|
||||
|
||||
#: pronterface.py:526
|
||||
#: pronterface.py:541
|
||||
msgid "XY:"
|
||||
msgstr "XY:"
|
||||
|
||||
#: pronterface.py:528
|
||||
#: pronterface.py:543
|
||||
msgid "Z:"
|
||||
msgstr "Z:"
|
||||
|
||||
#: pronterface.py:551 pronterface.py:632
|
||||
#: pronterface.py:566 pronterface.py:647
|
||||
msgid "Heater:"
|
||||
msgstr "Estrusore:"
|
||||
|
||||
#: pronterface.py:554 pronterface.py:574
|
||||
#: pronterface.py:569 pronterface.py:589
|
||||
msgid "Off"
|
||||
msgstr "Off"
|
||||
|
||||
#: pronterface.py:566 pronterface.py:586
|
||||
#: pronterface.py:581 pronterface.py:601
|
||||
msgid "Set"
|
||||
msgstr "On"
|
||||
|
||||
#: pronterface.py:571 pronterface.py:634
|
||||
#: pronterface.py:586 pronterface.py:649
|
||||
msgid "Bed:"
|
||||
msgstr "Piano:"
|
||||
|
||||
#: pronterface.py:619
|
||||
#: pronterface.py:634
|
||||
msgid "mm"
|
||||
msgstr "mm"
|
||||
|
||||
#: pronterface.py:677 pronterface.py:1182 pronterface.py:1413
|
||||
#: pronterface.py:692 pronterface.py:1196 pronterface.py:1427
|
||||
msgid "Not connected to printer."
|
||||
msgstr "Non connesso alla stampante."
|
||||
|
||||
#: pronterface.py:706
|
||||
#: pronterface.py:721
|
||||
msgid "SD Upload"
|
||||
msgstr "Carica SD"
|
||||
|
||||
#: pronterface.py:710
|
||||
#: pronterface.py:725
|
||||
msgid "SD Print"
|
||||
msgstr "Stampa SD"
|
||||
|
||||
#: pronterface.py:758
|
||||
#: pronterface.py:773
|
||||
msgid "Full mode"
|
||||
msgstr "Espandi"
|
||||
|
||||
#: pronterface.py:783
|
||||
#: pronterface.py:798
|
||||
msgid "Execute command: "
|
||||
msgstr "Esegui comando: "
|
||||
|
||||
#: pronterface.py:794
|
||||
#: pronterface.py:809
|
||||
msgid "click to add new custom button"
|
||||
msgstr "clicca per aggiungere un nuovo pulsante personalizzato"
|
||||
|
||||
#: pronterface.py:813
|
||||
msgid "Defines custom button. Usage: button <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr "Definisce un pulsante personalizzato. Uso: button <num> \"titolo\" [/c \"colore\"] comando"
|
||||
#: pronterface.py:828
|
||||
msgid ""
|
||||
"Defines custom button. Usage: button <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr ""
|
||||
"Definisce un pulsante personalizzato. Uso: button <num> \"titolo\" [/c "
|
||||
"\"colore\"] comando"
|
||||
|
||||
#: pronterface.py:835
|
||||
#: pronterface.py:850
|
||||
msgid "Custom button number should be between 0 and 63"
|
||||
msgstr "Il numero del pulsante personalizzato dev'essere tra 0 e 63"
|
||||
|
||||
#: pronterface.py:927
|
||||
#: pronterface.py:942
|
||||
msgid "Edit custom button '%s'"
|
||||
msgstr "Modifica pulsante personalizzato '%s'"
|
||||
|
||||
#: pronterface.py:929
|
||||
#: pronterface.py:944
|
||||
msgid "Move left <<"
|
||||
msgstr "Muovi a sinistra <<"
|
||||
|
||||
#: pronterface.py:932
|
||||
#: pronterface.py:947
|
||||
msgid "Move right >>"
|
||||
msgstr "Muovi a destra >>"
|
||||
|
||||
#: pronterface.py:936
|
||||
#: pronterface.py:951
|
||||
msgid "Remove custom button '%s'"
|
||||
msgstr "Elimina pulsante personalizzato '%s'"
|
||||
|
||||
#: pronterface.py:939
|
||||
#: pronterface.py:954
|
||||
msgid "Add custom button"
|
||||
msgstr "Aggiungi pulsante personalizzato"
|
||||
|
||||
#: pronterface.py:1084
|
||||
#: pronterface.py:1099
|
||||
msgid "event object missing"
|
||||
msgstr "oggetto dell'evento mancante"
|
||||
|
||||
#: pronterface.py:1112
|
||||
#: pronterface.py:1127
|
||||
msgid "Invalid period given."
|
||||
msgstr "Periodo non valido."
|
||||
|
||||
#: pronterface.py:1115
|
||||
#: pronterface.py:1130
|
||||
msgid "Monitoring printer."
|
||||
msgstr "Sto controllando la stampante."
|
||||
|
||||
#: pronterface.py:1117
|
||||
#: pronterface.py:1132
|
||||
msgid "Done monitoring."
|
||||
msgstr "Controllo terminato."
|
||||
|
||||
#: pronterface.py:1139
|
||||
#: pronterface.py:1154
|
||||
msgid "Printer is online. "
|
||||
msgstr "La stampante è online. "
|
||||
|
||||
#: pronterface.py:1141 pronterface.py:1317 pronterface.py:1372
|
||||
#: pronterface.py:1156 pronterface.py:1331
|
||||
msgid "Loaded "
|
||||
msgstr "Caricato "
|
||||
|
||||
#: pronterface.py:1144
|
||||
#: pronterface.py:1159
|
||||
msgid "Bed"
|
||||
msgstr "Letto"
|
||||
|
||||
#: pronterface.py:1144
|
||||
#: pronterface.py:1159
|
||||
msgid "Hotend"
|
||||
msgstr "Estrusore"
|
||||
|
||||
#: pronterface.py:1154
|
||||
#: pronterface.py:1169
|
||||
msgid " SD printing:%04.2f %%"
|
||||
msgstr " stampa da scheda SD:%04.2f %%"
|
||||
|
||||
#: pronterface.py:1157
|
||||
#: pronterface.py:1172
|
||||
msgid " Printing:%04.2f %% |"
|
||||
msgstr " Stampa in corso:%04.2f %% |"
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid " Line# "
|
||||
msgstr " Linea# "
|
||||
#: pronterface.py:1173
|
||||
msgid " Line# %d of %d lines |"
|
||||
msgstr " Linea# %d di %d linee |"
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid " lines |"
|
||||
msgstr " linee |"
|
||||
#: pronterface.py:1178
|
||||
msgid " Est: %s of %s remaining | "
|
||||
msgstr " Stima: %s di %s rimanente | "
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid "of "
|
||||
msgstr "di "
|
||||
|
||||
#: pronterface.py:1163
|
||||
msgid " Est: "
|
||||
msgstr " Stima: "
|
||||
|
||||
#: pronterface.py:1164
|
||||
msgid " of: "
|
||||
msgstr " di: "
|
||||
|
||||
#: pronterface.py:1165
|
||||
msgid " Remaining | "
|
||||
msgstr " Rimanente | "
|
||||
|
||||
#: pronterface.py:1166
|
||||
#: pronterface.py:1180
|
||||
msgid " Z: %0.2f mm"
|
||||
msgstr " Z: %0.2f mm"
|
||||
|
||||
#: pronterface.py:1233
|
||||
#: pronterface.py:1247
|
||||
msgid "Opening file failed."
|
||||
msgstr "Apertura del file fallita."
|
||||
|
||||
#: pronterface.py:1239
|
||||
#: pronterface.py:1253
|
||||
msgid "Starting print"
|
||||
msgstr "Inizio della stampa"
|
||||
|
||||
#: pronterface.py:1262
|
||||
#: pronterface.py:1276
|
||||
msgid "Pick SD file"
|
||||
msgstr "Scegli un file dalla scheda SD"
|
||||
|
||||
#: pronterface.py:1262
|
||||
#: pronterface.py:1276
|
||||
msgid "Select the file to print"
|
||||
msgstr "Seleziona il file da stampare"
|
||||
|
||||
#: pronterface.py:1297
|
||||
#: pronterface.py:1311
|
||||
msgid "Failed to execute slicing software: "
|
||||
msgstr "Imposibile eseguire il software di generazione percorso: "
|
||||
|
||||
#: pronterface.py:1304
|
||||
#: pronterface.py:1318
|
||||
msgid "Slicing..."
|
||||
msgstr "Generazione percorso..."
|
||||
|
||||
#: pronterface.py:1317 pronterface.py:1372
|
||||
#: pronterface.py:1331
|
||||
msgid ", %d lines"
|
||||
msgstr ", %d linee"
|
||||
|
||||
#: pronterface.py:1324
|
||||
#: pronterface.py:1338
|
||||
msgid "Load File"
|
||||
msgstr "Apri file"
|
||||
|
||||
#: pronterface.py:1331
|
||||
#: pronterface.py:1345
|
||||
msgid "Slicing "
|
||||
msgstr "Generazione del percorso "
|
||||
|
||||
#: pronterface.py:1350
|
||||
#: pronterface.py:1364
|
||||
msgid "Open file to print"
|
||||
msgstr "Apri il file da stampare"
|
||||
|
||||
#: pronterface.py:1351
|
||||
#: pronterface.py:1365
|
||||
msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)"
|
||||
msgstr "files OBJ, STL e GCODE (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)"
|
||||
|
||||
#: pronterface.py:1358
|
||||
#: pronterface.py:1372
|
||||
msgid "File not found!"
|
||||
msgstr "File non trovato!"
|
||||
|
||||
#: pronterface.py:1382
|
||||
msgid ""
|
||||
"mm of filament used in this print\n"
|
||||
msgstr ""
|
||||
"mm di filamento usato in questa stampa\n"
|
||||
|
||||
#: pronterface.py:1383
|
||||
msgid ""
|
||||
"mm in X\n"
|
||||
"and is"
|
||||
msgstr ""
|
||||
"mm in X\n"
|
||||
"ed è"
|
||||
|
||||
#: pronterface.py:1383 pronterface.py:1384
|
||||
msgid ""
|
||||
"mm wide\n"
|
||||
msgstr ""
|
||||
"mm di larghezza\n"
|
||||
|
||||
#: pronterface.py:1383 pronterface.py:1384 pronterface.py:1385
|
||||
msgid "mm to"
|
||||
msgstr "mm a"
|
||||
|
||||
#: pronterface.py:1383 pronterface.py:1384 pronterface.py:1385
|
||||
msgid "the print goes from"
|
||||
msgstr "la stampa va da"
|
||||
|
||||
#: pronterface.py:1384
|
||||
msgid ""
|
||||
"mm in Y\n"
|
||||
"and is"
|
||||
msgstr ""
|
||||
"mm in Y\n"
|
||||
"ed è"
|
||||
|
||||
#: pronterface.py:1385
|
||||
msgid ""
|
||||
"mm high\n"
|
||||
msgstr ""
|
||||
"mm di altezza\n"
|
||||
|
||||
#: pronterface.py:1385
|
||||
msgid ""
|
||||
"mm in Z\n"
|
||||
"and is"
|
||||
msgstr ""
|
||||
"mm in Z\n"
|
||||
"ed è"
|
||||
|
||||
#: pronterface.py:1386
|
||||
msgid "Loaded %s, %d lines"
|
||||
msgstr "Caricato %s, %d linee"
|
||||
|
||||
#: pronterface.py:1396
|
||||
msgid "mm of filament used in this print\n"
|
||||
msgstr "mm di filamento usato in questa stampa\n"
|
||||
|
||||
#: pronterface.py:1397
|
||||
msgid ""
|
||||
"the print goes from %f mm to %f mm in X\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
"la stampa va da %f mm a %f mm in X\n"
|
||||
"ed è %f mm di larghezza\n"
|
||||
|
||||
#: pronterface.py:1398
|
||||
msgid ""
|
||||
"the print goes from %f mm to %f mm in Y\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
"la stampa va da %f mm a %f mm in Y\n"
|
||||
"ed è %f mm di larghezza\n"
|
||||
|
||||
#: pronterface.py:1399
|
||||
msgid ""
|
||||
"the print goes from %f mm to %f mm in Z\n"
|
||||
"and is %f mm high\n"
|
||||
msgstr ""
|
||||
"la stampa va da %f mm a %f mm in Z\n"
|
||||
"ed è %f mm di altezza\n"
|
||||
|
||||
#: pronterface.py:1400
|
||||
msgid "Estimated duration (pessimistic): "
|
||||
msgstr "Durata stimata (pessimistica): "
|
||||
|
||||
#: pronterface.py:1410
|
||||
#: pronterface.py:1424
|
||||
msgid "No file loaded. Please use load first."
|
||||
msgstr "Nessub file caricato. Usare Apri prima."
|
||||
|
||||
#: pronterface.py:1421
|
||||
#: pronterface.py:1435
|
||||
msgid "Restart"
|
||||
msgstr "Ricomincia"
|
||||
|
||||
#: pronterface.py:1425
|
||||
#: pronterface.py:1439
|
||||
msgid "File upload complete"
|
||||
msgstr "Caricamento file completato"
|
||||
|
||||
#: pronterface.py:1444
|
||||
#: pronterface.py:1458
|
||||
msgid "Pick SD filename"
|
||||
msgstr "Scegli un file dalla scheda SD"
|
||||
|
||||
#: pronterface.py:1452
|
||||
#: pronterface.py:1466
|
||||
msgid "Paused."
|
||||
msgstr "In pausa."
|
||||
|
||||
#: pronterface.py:1462
|
||||
#: pronterface.py:1476
|
||||
msgid "Resume"
|
||||
msgstr "Ripristina"
|
||||
|
||||
#: pronterface.py:1478
|
||||
#: pronterface.py:1492
|
||||
msgid "Connecting..."
|
||||
msgstr "Connessione..."
|
||||
|
||||
#: pronterface.py:1509
|
||||
#: pronterface.py:1523
|
||||
msgid "Disconnected."
|
||||
msgstr "Disconnesso."
|
||||
|
||||
#: pronterface.py:1536
|
||||
#: pronterface.py:1550
|
||||
msgid "Reset."
|
||||
msgstr "Reset."
|
||||
|
||||
#: pronterface.py:1537
|
||||
#: pronterface.py:1551
|
||||
msgid "Are you sure you want to reset the printer?"
|
||||
msgstr "Sei sicuro di voler resettare la stampante?"
|
||||
|
||||
#: pronterface.py:1537
|
||||
#: pronterface.py:1551
|
||||
msgid "Reset?"
|
||||
msgstr "Reset?"
|
||||
|
||||
#: pronterface.py:1583
|
||||
#: pronterface.py:1597
|
||||
msgid "Save"
|
||||
msgstr "Salva"
|
||||
|
||||
#: pronterface.py:1639
|
||||
#: pronterface.py:1653
|
||||
msgid "Edit settings"
|
||||
msgstr "Modifica impostazioni"
|
||||
|
||||
#: pronterface.py:1641
|
||||
#: pronterface.py:1655
|
||||
msgid "Defaults"
|
||||
msgstr "Valori di default"
|
||||
|
||||
#: pronterface.py:1670
|
||||
#: pronterface.py:1684
|
||||
msgid "Custom button"
|
||||
msgstr "Personalizza bottone"
|
||||
|
||||
#: pronterface.py:1675
|
||||
#: pronterface.py:1689
|
||||
msgid "Button title"
|
||||
msgstr "Titolo bottone"
|
||||
|
||||
#: pronterface.py:1678
|
||||
#: pronterface.py:1692
|
||||
msgid "Command"
|
||||
msgstr "Comando"
|
||||
|
||||
#: pronterface.py:1687
|
||||
#: pronterface.py:1701
|
||||
msgid "Color"
|
||||
msgstr "Colore"
|
||||
|
||||
#~ msgid "Communications Speed (default: 115200)"
|
||||
#~ msgstr "Velocità di comunicazione (default: 115200)"
|
||||
|
||||
#~ msgid "Heated Build Platform temp for ABS (default: 110 deg C)"
|
||||
#~ msgstr "Temperatura piano di stampa per ABS (default: 110° C) "
|
||||
|
||||
#~ msgid "Heated Build Platform temp for PLA (default: 60 deg C)"
|
||||
#~ msgstr "Temperatura piano di stampa per PLA (default: 60° C)"
|
||||
|
||||
#~ msgid "Feedrate for Control Panel Moves in Extrusions (default: 300mm/min)"
|
||||
#~ msgstr ""
|
||||
#~ "Velocità dei movimenti dell'estrusore in modalità manuale (default: 300mm/"
|
||||
#~ "min)"
|
||||
|
||||
#~ msgid "Port used to communicate with printer"
|
||||
#~ msgstr "Porta usata per comunicare con la stampante"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Slice command\n"
|
||||
#~ " default:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge_utilities/"
|
||||
#~ "skeinforge_craft.py $s)"
|
||||
#~ msgstr ""
|
||||
#~ "Comando del generatore di percorso\n"
|
||||
#~ " default:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge_utilities/"
|
||||
#~ "skeinforge_craft.py $s)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Slice settings command\n"
|
||||
#~ " default:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge.py"
|
||||
#~ msgstr ""
|
||||
#~ "Comando di configurazione del generatore di percorso\n"
|
||||
#~ " default:\n"
|
||||
#~ " python skeinforge/skeinforge_application/skeinforge.py"
|
||||
|
||||
#~ msgid "Extruder temp for ABS (default: 230 deg C)"
|
||||
#~ msgstr "Temperatura di estrusione per ABS (default: 230° C)"
|
||||
|
||||
#~ msgid "Extruder temp for PLA (default: 185 deg C)"
|
||||
#~ msgstr "Temperatura di estrusione per PLA (default: 185° C"
|
||||
|
||||
#~ msgid "Feedrate for Control Panel Moves in X and Y (default: 3000mm/min)"
|
||||
#~ msgstr ""
|
||||
#~ "Velocità dei movimenti degli assi X e Y in modalità manuale (default: "
|
||||
#~ "3000mm/min)"
|
||||
|
||||
#~ msgid "Feedrate for Control Panel Moves in Z (default: 200mm/min)"
|
||||
#~ msgstr ""
|
||||
#~ "Velocità dei movimenti dell'asse Z in modalità manuale (default: 200mm/"
|
||||
#~ "min)"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -5,7 +5,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2012-01-09 15:07+CET\n"
|
||||
"POT-Creation-Date: 2012-02-26 02:40+CET\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -15,79 +15,79 @@ msgstr ""
|
|||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
#: plater.py:223
|
||||
#: plater.py:247
|
||||
msgid "Plate building tool"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:229
|
||||
#: plater.py:253
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:230
|
||||
#: plater.py:254
|
||||
msgid "Load"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:232
|
||||
#: plater.py:256
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:235
|
||||
#: plater.py:259
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:237
|
||||
#: plater.py:261
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:239
|
||||
#: plater.py:263
|
||||
msgid "Snap to Z = 0"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:240
|
||||
#: plater.py:264
|
||||
msgid "Put at 100, 100"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:241
|
||||
#: plater.py:265
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:242
|
||||
#: plater.py:266
|
||||
msgid "Auto"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:266
|
||||
#: plater.py:290
|
||||
msgid "Autoplating"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:294
|
||||
#: plater.py:318
|
||||
msgid "Bed full, sorry sir :("
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:304
|
||||
#: plater.py:328
|
||||
msgid "Are you sure you want to clear the grid? All unsaved changes will be lost."
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:304
|
||||
#: plater.py:328
|
||||
msgid "Clear the grid?"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:346
|
||||
#: plater.py:370
|
||||
msgid "Pick file to save to"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:347
|
||||
msgid "STL files (;*.stl;)"
|
||||
#: plater.py:371
|
||||
msgid "STL files (;*.stl;*.STL;)"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:367
|
||||
msgid "wrote "
|
||||
#: plater.py:391
|
||||
msgid "wrote %s"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:370
|
||||
#: plater.py:394
|
||||
msgid "Pick file to load"
|
||||
msgstr ""
|
||||
|
||||
#: plater.py:371
|
||||
msgid "STL files (;*.stl;)|*.stl|OpenSCAD files (;*.scad;)|*.scad"
|
||||
#: plater.py:395
|
||||
msgid "STL files (;*.stl;*.STL;)|*.stl|OpenSCAD files (;*.scad;)|*.scad"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2012-01-19 09:21+CET\n"
|
||||
"POT-Creation-Date: 2012-03-16 03:48+CET\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -15,61 +15,11 @@ msgstr ""
|
|||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
#: pronsole.py:250
|
||||
msgid "Communications Speed (default: 115200)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:251
|
||||
msgid "Heated Build Platform temp for ABS (default: 110 deg C)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:252
|
||||
msgid "Heated Build Platform temp for PLA (default: 60 deg C)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:253
|
||||
msgid "Feedrate for Control Panel Moves in Extrusions (default: 300mm/min)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:254
|
||||
msgid "Port used to communicate with printer"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:255
|
||||
msgid ""
|
||||
"Slice command\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py $s)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:256
|
||||
msgid ""
|
||||
"Slice settings command\n"
|
||||
" default:\n"
|
||||
" python skeinforge/skeinforge_application/skeinforge.py"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:257
|
||||
msgid "Extruder temp for ABS (default: 230 deg C)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:258
|
||||
msgid "Extruder temp for PLA (default: 185 deg C)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:259
|
||||
msgid "Feedrate for Control Panel Moves in X and Y (default: 3000mm/min)"
|
||||
msgstr ""
|
||||
|
||||
#: pronsole.py:260
|
||||
msgid "Feedrate for Control Panel Moves in Z (default: 200mm/min)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:15
|
||||
#: pronterface.py:30
|
||||
msgid "WX is not installed. This program requires WX to run."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:66
|
||||
#: pronterface.py:81
|
||||
msgid ""
|
||||
"Dimensions of Build Platform\n"
|
||||
" & optional offset of origin\n"
|
||||
|
@ -80,575 +30,545 @@ msgid ""
|
|||
" XXXxYYYxZZZ+OffX+OffY+OffZ"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:67
|
||||
#: pronterface.py:82
|
||||
msgid "Last Set Temperature for the Heated Print Bed"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:68
|
||||
#: pronterface.py:83
|
||||
msgid "Folder of last opened file"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:69
|
||||
#: pronterface.py:84
|
||||
msgid "Last Temperature of the Hot End"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:70
|
||||
#: pronterface.py:85
|
||||
msgid "Width of Extrusion in Preview (default: 0.5)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:71
|
||||
#: pronterface.py:86
|
||||
msgid "Fine Grid Spacing (default: 10)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:72
|
||||
#: pronterface.py:87
|
||||
msgid "Coarse Grid Spacing (default: 50)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:73
|
||||
#: pronterface.py:88
|
||||
msgid "Pronterface background color (default: #FFFFFF)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:76
|
||||
#: pronterface.py:91
|
||||
msgid "Printer Interface"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:93
|
||||
#: pronterface.py:109
|
||||
msgid "Motors off"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:94
|
||||
#: pronterface.py:110
|
||||
msgid "Check temp"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:95
|
||||
#: pronterface.py:111
|
||||
msgid "Extrude"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:96
|
||||
#: pronterface.py:112
|
||||
msgid "Reverse"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:114
|
||||
#: pronterface.py:130
|
||||
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:119
|
||||
#: pronterface.py:135
|
||||
msgid "Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:120
|
||||
#: pronterface.py:136
|
||||
msgid "Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:148 pronterface.py:499 pronterface.py:1319
|
||||
#: pronterface.py:1373 pronterface.py:1495 pronterface.py:1529
|
||||
#: pronterface.py:1544
|
||||
#: pronterface.py:165 pronterface.py:520 pronterface.py:1343
|
||||
#: pronterface.py:1397 pronterface.py:1521 pronterface.py:1555
|
||||
#: pronterface.py:1567
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:152
|
||||
#: pronterface.py:169
|
||||
msgid "Printer is now online."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:212
|
||||
msgid "Setting hotend temperature to "
|
||||
#: pronterface.py:170
|
||||
msgid "Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:212 pronterface.py:248
|
||||
msgid " degrees Celsius."
|
||||
#: pronterface.py:229
|
||||
msgid "Setting hotend temperature to %f degrees Celsius."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:231 pronterface.py:267 pronterface.py:325
|
||||
#: pronterface.py:248 pronterface.py:284 pronterface.py:346
|
||||
msgid "Printer is not online."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:233
|
||||
#: pronterface.py:250
|
||||
msgid "You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:248
|
||||
msgid "Setting bed temperature to "
|
||||
#: pronterface.py:252
|
||||
msgid "You must enter a temperature. (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:269
|
||||
msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:271
|
||||
msgid "You must enter a temperature."
|
||||
#: pronterface.py:265
|
||||
msgid "Setting bed temperature to %f degrees Celsius."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:286
|
||||
msgid "You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:288
|
||||
msgid "You must enter a temperature."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:303
|
||||
msgid "Do you want to erase the macro?"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:290
|
||||
#: pronterface.py:307
|
||||
msgid "Cancelled."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:331
|
||||
#: pronterface.py:352
|
||||
msgid " Opens file"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:331
|
||||
#: pronterface.py:352
|
||||
msgid "&Open..."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:332
|
||||
#: pronterface.py:353
|
||||
msgid " Edit open file"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:332
|
||||
#: pronterface.py:353
|
||||
msgid "&Edit..."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:333
|
||||
#: pronterface.py:354
|
||||
msgid " Clear output console"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:333
|
||||
#: pronterface.py:354
|
||||
msgid "Clear console"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:334
|
||||
#: pronterface.py:355
|
||||
msgid " Project slices"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:334
|
||||
#: pronterface.py:355
|
||||
msgid "Projector"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:335
|
||||
#: pronterface.py:356
|
||||
msgid " Closes the Window"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:335
|
||||
#: pronterface.py:356
|
||||
msgid "E&xit"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:336
|
||||
#: pronterface.py:357
|
||||
msgid "&File"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:341
|
||||
#: pronterface.py:362
|
||||
msgid "&Macros"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:342
|
||||
#: pronterface.py:363
|
||||
msgid "<&New...>"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:343
|
||||
#: pronterface.py:364
|
||||
msgid " Options dialog"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:343
|
||||
#: pronterface.py:364
|
||||
msgid "&Options"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:345
|
||||
#: pronterface.py:366
|
||||
msgid " Adjust slicing settings"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:345
|
||||
#: pronterface.py:366
|
||||
msgid "Slicing Settings"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:352
|
||||
#: pronterface.py:373
|
||||
msgid "&Settings"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:368
|
||||
#: pronterface.py:389
|
||||
msgid "Enter macro name"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:371
|
||||
#: pronterface.py:392
|
||||
msgid "Macro name:"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:374
|
||||
#: pronterface.py:395
|
||||
msgid "Ok"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:378 pronterface.py:1330 pronterface.py:1587
|
||||
#: pronterface.py:399 pronterface.py:1354 pronterface.py:1613
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:396
|
||||
msgid "' is being used by built-in command"
|
||||
#: pronterface.py:417
|
||||
msgid "Name '%s' is being used by built-in command"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:396
|
||||
msgid "Name '"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:399
|
||||
#: pronterface.py:420
|
||||
msgid "Macro name may contain only alphanumeric symbols and underscores"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:448
|
||||
#: pronterface.py:469
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:467
|
||||
#: pronterface.py:488
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:469
|
||||
#: pronterface.py:490
|
||||
msgid "Connect to the printer"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:471
|
||||
#: pronterface.py:492
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:474 pronterface.py:751
|
||||
#: pronterface.py:495 pronterface.py:772
|
||||
msgid "Mini mode"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:478
|
||||
#: pronterface.py:499
|
||||
msgid "Monitor Printer"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:488
|
||||
#: pronterface.py:509
|
||||
msgid "Load file"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:491
|
||||
#: pronterface.py:512
|
||||
msgid "Compose"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:495
|
||||
#: pronterface.py:516
|
||||
msgid "SD"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:503 pronterface.py:1374 pronterface.py:1419
|
||||
#: pronterface.py:1469 pronterface.py:1494 pronterface.py:1528
|
||||
#: pronterface.py:1543
|
||||
#: pronterface.py:524 pronterface.py:1398 pronterface.py:1444
|
||||
#: pronterface.py:1495 pronterface.py:1520 pronterface.py:1554
|
||||
#: pronterface.py:1570
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:516
|
||||
#: pronterface.py:537
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:524 pronterface.py:625
|
||||
#: pronterface.py:545 pronterface.py:646
|
||||
msgid "mm/min"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:526
|
||||
#: pronterface.py:547
|
||||
msgid "XY:"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:528
|
||||
#: pronterface.py:549
|
||||
msgid "Z:"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:551 pronterface.py:632
|
||||
#: pronterface.py:572 pronterface.py:653
|
||||
msgid "Heater:"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:554 pronterface.py:574
|
||||
#: pronterface.py:575 pronterface.py:595
|
||||
msgid "Off"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:566 pronterface.py:586
|
||||
#: pronterface.py:587 pronterface.py:607
|
||||
msgid "Set"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:571 pronterface.py:634
|
||||
#: pronterface.py:592 pronterface.py:655
|
||||
msgid "Bed:"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:619
|
||||
#: pronterface.py:640
|
||||
msgid "mm"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:677 pronterface.py:1182 pronterface.py:1413
|
||||
#: pronterface.py:698 pronterface.py:1206 pronterface.py:1438
|
||||
msgid "Not connected to printer."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:706
|
||||
#: pronterface.py:727
|
||||
msgid "SD Upload"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:710
|
||||
#: pronterface.py:731
|
||||
msgid "SD Print"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:758
|
||||
#: pronterface.py:779
|
||||
msgid "Full mode"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:783
|
||||
#: pronterface.py:804
|
||||
msgid "Execute command: "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:794
|
||||
#: pronterface.py:815
|
||||
msgid "click to add new custom button"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:813
|
||||
#: pronterface.py:834
|
||||
msgid "Defines custom button. Usage: button <num> \"title\" [/c \"colour\"] command"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:835
|
||||
#: pronterface.py:856
|
||||
msgid "Custom button number should be between 0 and 63"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:927
|
||||
#: pronterface.py:948
|
||||
msgid "Edit custom button '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:929
|
||||
#: pronterface.py:950
|
||||
msgid "Move left <<"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:932
|
||||
#: pronterface.py:953
|
||||
msgid "Move right >>"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:936
|
||||
#: pronterface.py:957
|
||||
msgid "Remove custom button '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:939
|
||||
#: pronterface.py:960
|
||||
msgid "Add custom button"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1084
|
||||
#: pronterface.py:1105
|
||||
msgid "event object missing"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1112
|
||||
#: pronterface.py:1133
|
||||
msgid "Invalid period given."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1115
|
||||
#: pronterface.py:1136
|
||||
msgid "Monitoring printer."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1117
|
||||
#: pronterface.py:1138
|
||||
msgid "Done monitoring."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1139
|
||||
#: pronterface.py:1160
|
||||
msgid "Printer is online. "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1141 pronterface.py:1317 pronterface.py:1372
|
||||
#: pronterface.py:1162 pronterface.py:1341
|
||||
msgid "Loaded "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1144
|
||||
#: pronterface.py:1165
|
||||
msgid "Bed"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1144
|
||||
#: pronterface.py:1165
|
||||
msgid "Hotend"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1154
|
||||
#: pronterface.py:1175
|
||||
msgid " SD printing:%04.2f %%"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1157
|
||||
#: pronterface.py:1178
|
||||
msgid " Printing:%04.2f %% |"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid " Line# "
|
||||
#: pronterface.py:1179
|
||||
msgid " Line# %d of %d lines |"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid " lines |"
|
||||
#: pronterface.py:1184
|
||||
msgid " Est: %s of %s remaining | "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1158
|
||||
msgid "of "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1163
|
||||
msgid " Est: "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1164
|
||||
msgid " of: "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1165
|
||||
msgid " Remaining | "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1166
|
||||
#: pronterface.py:1186
|
||||
msgid " Z: %0.2f mm"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1233
|
||||
#: pronterface.py:1257
|
||||
msgid "Opening file failed."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1239
|
||||
#: pronterface.py:1263
|
||||
msgid "Starting print"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1262
|
||||
#: pronterface.py:1286
|
||||
msgid "Pick SD file"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1262
|
||||
#: pronterface.py:1286
|
||||
msgid "Select the file to print"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1297
|
||||
#: pronterface.py:1321
|
||||
msgid "Failed to execute slicing software: "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1304
|
||||
#: pronterface.py:1328
|
||||
msgid "Slicing..."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1317 pronterface.py:1372
|
||||
#: pronterface.py:1341
|
||||
msgid ", %d lines"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1324
|
||||
#: pronterface.py:1348
|
||||
msgid "Load File"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1331
|
||||
#: pronterface.py:1355
|
||||
msgid "Slicing "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1350
|
||||
#: pronterface.py:1374
|
||||
msgid "Open file to print"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1351
|
||||
msgid "OBJ, STL, and GCODE files (;*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ;)"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1358
|
||||
msgid "File not found!"
|
||||
#: pronterface.py:1375
|
||||
msgid "OBJ, STL, and GCODE files (*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ)|*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ|All Files (*.*)|*.*"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1382
|
||||
msgid "File not found!"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1396
|
||||
msgid "Loaded %s, %d lines"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1406
|
||||
msgid ""
|
||||
"mm of filament used in this print\n"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1383
|
||||
#: pronterface.py:1407
|
||||
msgid ""
|
||||
"mm in X\n"
|
||||
"and is"
|
||||
"the print goes from %f mm to %f mm in X\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1383 pronterface.py:1384
|
||||
#: pronterface.py:1408
|
||||
msgid ""
|
||||
"mm wide\n"
|
||||
"the print goes from %f mm to %f mm in Y\n"
|
||||
"and is %f mm wide\n"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1383 pronterface.py:1384 pronterface.py:1385
|
||||
msgid "mm to"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1383 pronterface.py:1384 pronterface.py:1385
|
||||
msgid "the print goes from"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1384
|
||||
#: pronterface.py:1409
|
||||
msgid ""
|
||||
"mm in Y\n"
|
||||
"and is"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1385
|
||||
msgid ""
|
||||
"mm high\n"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1385
|
||||
msgid ""
|
||||
"mm in Z\n"
|
||||
"and is"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1386
|
||||
msgid "Estimated duration (pessimistic): "
|
||||
"the print goes from %f mm to %f mm in Z\n"
|
||||
"and is %f mm high\n"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1410
|
||||
msgid "Estimated duration (pessimistic): "
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1435
|
||||
msgid "No file loaded. Please use load first."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1421
|
||||
#: pronterface.py:1446
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1425
|
||||
#: pronterface.py:1450
|
||||
msgid "File upload complete"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1444
|
||||
#: pronterface.py:1469
|
||||
msgid "Pick SD filename"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1452
|
||||
#: pronterface.py:1477
|
||||
msgid "Paused."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1462
|
||||
#: pronterface.py:1488
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1478
|
||||
#: pronterface.py:1504
|
||||
msgid "Connecting..."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1509
|
||||
#: pronterface.py:1535
|
||||
msgid "Disconnected."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1536
|
||||
#: pronterface.py:1562
|
||||
msgid "Reset."
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1537
|
||||
#: pronterface.py:1563
|
||||
msgid "Are you sure you want to reset the printer?"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1537
|
||||
#: pronterface.py:1563
|
||||
msgid "Reset?"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1583
|
||||
#: pronterface.py:1609
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1639
|
||||
#: pronterface.py:1665
|
||||
msgid "Edit settings"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1641
|
||||
#: pronterface.py:1667
|
||||
msgid "Defaults"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1670
|
||||
#: pronterface.py:1696
|
||||
msgid "Custom button"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1675
|
||||
#: pronterface.py:1701
|
||||
msgid "Button title"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1678
|
||||
#: pronterface.py:1704
|
||||
msgid "Command"
|
||||
msgstr ""
|
||||
|
||||
#: pronterface.py:1687
|
||||
#: pronterface.py:1713
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -256,8 +256,10 @@ class stlwin(wx.Frame):
|
|||
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=_("Done"), pos=(100, 0))
|
||||
self.eb.Bind(wx.EVT_BUTTON, lambda e: self.done(e, callback))
|
||||
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.Bind(wx.EVT_BUTTON, lambda e: self.done(e, callback))
|
||||
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))
|
||||
|
@ -388,7 +390,7 @@ class stlwin(wx.Frame):
|
|||
facets += i.facets
|
||||
sf.close()
|
||||
stltool.emitstl(name, facets, "plater_export")
|
||||
print _("wrote "), name
|
||||
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)
|
||||
|
|
20
printcore.py
20
printcore.py
|
@ -15,7 +15,7 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with Printrun. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from serial import Serial
|
||||
from serial import Serial, SerialException
|
||||
from threading import Thread
|
||||
from select import error as SelectError
|
||||
import time, getopt, sys
|
||||
|
@ -47,6 +47,7 @@ class printcore():
|
|||
self.endcb=None#impl ()
|
||||
self.onlinecb=None#impl ()
|
||||
self.loud=False#emit sent and received lines to terminal
|
||||
self.greetings=['start','Grbl ']
|
||||
if port is not None and baud is not None:
|
||||
#print port, baud
|
||||
self.connect(port, baud)
|
||||
|
@ -100,6 +101,12 @@ class printcore():
|
|||
break
|
||||
else:
|
||||
raise
|
||||
except SerialException, e:
|
||||
print "Can't read from printer (disconnected?)."
|
||||
break
|
||||
except OSError, e:
|
||||
print "Can't read from printer (disconnected?)."
|
||||
break
|
||||
|
||||
if(len(line)>1):
|
||||
self.log+=[line]
|
||||
|
@ -112,10 +119,10 @@ class printcore():
|
|||
print "RECV: ",line.rstrip()
|
||||
if(line.startswith('DEBUG_')):
|
||||
continue
|
||||
if(line.startswith('start') or line.startswith('ok')):
|
||||
if(line.startswith(tuple(self.greetings)) or line.startswith('ok')):
|
||||
self.clear=True
|
||||
if(line.startswith('start') or line.startswith('ok') or "T:" in line):
|
||||
if (not self.online or line.startswith('start')) and self.onlinecb is not None:
|
||||
if(line.startswith(tuple(self.greetings)) or line.startswith('ok') or "T:" in line):
|
||||
if (not self.online or line.startswith(tuple(self.greetings))) and self.onlinecb is not None:
|
||||
try:
|
||||
self.onlinecb()
|
||||
except:
|
||||
|
@ -279,7 +286,10 @@ class printcore():
|
|||
self.sendcb(command)
|
||||
except:
|
||||
pass
|
||||
self.printer.write(str(command+"\n"))
|
||||
try:
|
||||
self.printer.write(str(command+"\n"))
|
||||
except SerialException, e:
|
||||
print "Can't write to printer (disconnected?)."
|
||||
|
||||
if __name__ == '__main__':
|
||||
baud = 115200
|
||||
|
|
|
@ -37,6 +37,13 @@ class dispframe(wx.Frame):
|
|||
self.p=printer
|
||||
self.pic=wx.StaticBitmap(self)
|
||||
self.bitmap=wx.EmptyBitmap(*res)
|
||||
self.bbitmap=wx.EmptyBitmap(*res)
|
||||
dc=wx.MemoryDC()
|
||||
dc.SelectObject(self.bbitmap)
|
||||
dc.SetBackground(wx.Brush("black"))
|
||||
dc.Clear()
|
||||
dc.SelectObject(wx.NullBitmap)
|
||||
|
||||
self.SetBackgroundColour("black")
|
||||
self.pic.Hide()
|
||||
self.pen=wx.Pen("white")
|
||||
|
@ -61,20 +68,33 @@ class dispframe(wx.Frame):
|
|||
self.pic.SetBitmap(self.bitmap)
|
||||
self.pic.Show()
|
||||
self.Refresh()
|
||||
|
||||
#self.pic.SetBitmap(self.bitmap)
|
||||
|
||||
except:
|
||||
raise
|
||||
pass
|
||||
|
||||
def nextimg(self,event):
|
||||
if self.index<len(self.layers):
|
||||
i=self.index
|
||||
#print self.layers[i]
|
||||
print i
|
||||
wx.CallAfter(self.drawlayer,self.layers[i])
|
||||
if self.p!=None:
|
||||
def showimgdelay(self,image):
|
||||
self.drawlayer(image)
|
||||
self.pic.Show()
|
||||
self.Refresh()
|
||||
# time.sleep(self.interval)
|
||||
#self.pic.Hide()
|
||||
self.Refresh()
|
||||
if self.p!=None and self.p.online:
|
||||
self.p.send_now("G91")
|
||||
self.p.send_now("G1 Z%f F300"%(self.thickness,))
|
||||
self.p.send_now("G90")
|
||||
|
||||
def nextimg(self,event):
|
||||
#print "b"
|
||||
if self.index<len(self.layers):
|
||||
i=self.index
|
||||
#print self.layers[i]
|
||||
print i
|
||||
wx.CallAfter(self.showimgdelay,self.layers[i])
|
||||
wx.FutureCall(1000*self.interval,self.pic.Hide)
|
||||
self.index+=1
|
||||
else:
|
||||
print "end"
|
||||
|
@ -84,7 +104,7 @@ class dispframe(wx.Frame):
|
|||
wx.CallAfter(self.timer.Stop)
|
||||
|
||||
|
||||
def present(self,layers,interval=0.5,thickness=0.4,scale=20,size=(800,600)):
|
||||
def present(self,layers,interval=0.5,pause=0.2,thickness=0.4,scale=20,size=(800,600)):
|
||||
wx.CallAfter(self.pic.Hide)
|
||||
wx.CallAfter(self.Refresh)
|
||||
self.layers=layers
|
||||
|
@ -92,10 +112,11 @@ class dispframe(wx.Frame):
|
|||
self.thickness=thickness
|
||||
self.index=0
|
||||
self.size=size
|
||||
self.interval=interval
|
||||
self.timer=wx.Timer(self,1)
|
||||
self.timer.Bind(wx.EVT_TIMER,self.nextimg)
|
||||
self.Bind(wx.EVT_TIMER,self.nextimg)
|
||||
self.timer.Start(1000*interval)
|
||||
self.timer.Start(1000*interval+1000*pause)
|
||||
#print "x"
|
||||
|
||||
|
||||
|
@ -111,16 +132,19 @@ class setframe(wx.Frame):
|
|||
wx.StaticText(self.panel,-1,"Layer:",pos=(0,30))
|
||||
wx.StaticText(self.panel,-1,"mm",pos=(130,30))
|
||||
self.thickness=wx.TextCtrl(self.panel,-1,"0.5",pos=(50,30))
|
||||
wx.StaticText(self.panel,-1,"Interval:",pos=(0,60))
|
||||
wx.StaticText(self.panel,-1,"Exposure:",pos=(0,60))
|
||||
wx.StaticText(self.panel,-1,"s",pos=(130,60))
|
||||
self.interval=wx.TextCtrl(self.panel,-1,"0.5",pos=(50,60))
|
||||
wx.StaticText(self.panel,-1,"Scale:",pos=(0,90))
|
||||
wx.StaticText(self.panel,-1,"x",pos=(130,90))
|
||||
self.scale=wx.TextCtrl(self.panel,-1,"10",pos=(50,90))
|
||||
wx.StaticText(self.panel,-1,"Blank:",pos=(0,90))
|
||||
wx.StaticText(self.panel,-1,"s",pos=(130,90))
|
||||
self.delay=wx.TextCtrl(self.panel,-1,"0.5",pos=(50,90))
|
||||
wx.StaticText(self.panel,-1,"Scale:",pos=(0,120))
|
||||
wx.StaticText(self.panel,-1,"x",pos=(130,120))
|
||||
self.scale=wx.TextCtrl(self.panel,-1,"5",pos=(50,120))
|
||||
wx.StaticText(self.panel,-1,"X:",pos=(160,30))
|
||||
self.X=wx.TextCtrl(self.panel,-1,"800",pos=(180,30))
|
||||
self.X=wx.TextCtrl(self.panel,-1,"1024",pos=(180,30))
|
||||
wx.StaticText(self.panel,-1,"Y:",pos=(160,60))
|
||||
self.Y=wx.TextCtrl(self.panel,-1,"600",pos=(180,60))
|
||||
self.Y=wx.TextCtrl(self.panel,-1,"768",pos=(180,60))
|
||||
self.bload=wx.Button(self.panel,-1,"Present",pos=(0,150))
|
||||
self.bload.Bind(wx.EVT_BUTTON,self.startdisplay)
|
||||
self.Show()
|
||||
|
@ -146,7 +170,7 @@ class setframe(wx.Frame):
|
|||
self.f.ShowFullScreen(1)
|
||||
l=self.layers[0][:]
|
||||
#l=list(reversed(l))
|
||||
self.f.present(l,thickness=float(self.thickness.GetValue()),interval=float(self.interval.GetValue()),scale=float(self.scale.GetValue()), size=(float(self.X.GetValue()),float(self.Y.GetValue())))
|
||||
self.f.present(l,thickness=float(self.thickness.GetValue()),interval=float(self.interval.GetValue()),scale=float(self.scale.GetValue()),pause=float(self.delay.GetValue()), size=(float(self.X.GetValue()),float(self.Y.GetValue())))
|
||||
|
||||
if __name__=="__main__":
|
||||
a=wx.App()
|
||||
|
|
17
pronsole.py
17
pronsole.py
|
@ -274,7 +274,7 @@ class pronsole(cmd.Cmd):
|
|||
self.helpdict["temperature_pla"] = _("Extruder temp for PLA (default: 185 deg C)")
|
||||
self.helpdict["xy_feedrate"] = _("Feedrate for Control Panel Moves in X and Y (default: 3000mm/min)")
|
||||
self.helpdict["z_feedrate"] = _("Feedrate for Control Panel Moves in Z (default: 200mm/min)")
|
||||
|
||||
self.commandprefixes='MGT$'
|
||||
|
||||
def set_temp_preset(self,key,value):
|
||||
if not key.startswith("bed"):
|
||||
|
@ -529,9 +529,12 @@ class pronsole(cmd.Cmd):
|
|||
definition += "\n"
|
||||
try:
|
||||
written = False
|
||||
rco=open(self.rc_filename+"~new","w")
|
||||
if os.path.exists(self.rc_filename):
|
||||
rci=open(self.rc_filename,"r")
|
||||
import shutil
|
||||
shutil.copy(self.rc_filename,self.rc_filename+"~bak")
|
||||
rci=open(self.rc_filename+"~bak","r")
|
||||
rco=open(self.rc_filename,"w")
|
||||
if rci is not None:
|
||||
overwriting = False
|
||||
for rc_cmd in rci:
|
||||
l = rc_cmd.rstrip()
|
||||
|
@ -550,11 +553,7 @@ class pronsole(cmd.Cmd):
|
|||
rco.write(definition)
|
||||
if rci is not None:
|
||||
rci.close()
|
||||
if os.path.exists(self.rc_filename+"~old"):
|
||||
os.remove(rci.name+"~old")
|
||||
os.rename(rci.name,rci.name+"~old")
|
||||
rco.close()
|
||||
os.rename(rco.name,self.rc_filename)
|
||||
#if definition != "":
|
||||
# print "Saved '"+key+"' to '"+self.rc_filename+"'"
|
||||
#else:
|
||||
|
@ -871,14 +870,14 @@ class pronsole(cmd.Cmd):
|
|||
print "! os.listdir('.')"
|
||||
|
||||
def default(self,l):
|
||||
if(l[0]=='M' or l[0]=="G" or l[0]=='T'):
|
||||
if(l[0] in self.commandprefixes.upper()):
|
||||
if(self.p and self.p.online):
|
||||
print "SENDING:"+l
|
||||
self.p.send_now(l)
|
||||
else:
|
||||
print "Printer is not online."
|
||||
return
|
||||
if(l[0]=='m' or l[0]=="g" or l[0]=='t'):
|
||||
elif(l[0] in self.commandprefixes.lower()):
|
||||
if(self.p and self.p.online):
|
||||
print "SENDING:"+l.upper()
|
||||
self.p.send_now(l.upper())
|
||||
|
|
377
pronterface.py
377
pronterface.py
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue